Dos causas:
1. sse_turno.php inicializaba \$lastPing = null, haciendo que la primera
iteración del loop (2s después del emit inicial) siempre emitiera
un snapshot extra aunque no hubiera cambios reales.
Fix: inicializar \$lastPing con el sse_ping_at actual de la BD.
2. display.php comparaba activo.codigo para detectar nueva llamada.
Si el poll y el SSE llegaban casi simultáneamente antes de que
lastCodigoActivo se actualizara, ambos disparaban el sonido.
Fix: comparar llamado_at en vez del código — el timestamp es
único por llamada, por lo que sonidos duplicados son imposibles.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>