- play_winner acepta device_id del formulario y verifica que el
dispositivo exista y no sea restringido antes de reproducir
- corrige construcción del URI según spotify_type del ganador
(antes siempre usaba spotify:playlist: independiente del tipo)
- errores se muestran en la página admin en lugar de HTTPException cruda
- template sincroniza device_id activo al campo oculto del formulario
- dispositivos restringidos se marcan en el selector del admin
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
El contenedor corría en UTC causando que la ventana horaria no
coincidiera con la hora local. Se agrega TZ en docker-compose y se
muestra la hora actual del servidor en el panel de votación.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>