fix(turnero): eliminar duplicados en pantalla TV al llamar turno

callKey usaba id+llamado_at: si llamado_at llegaba null en el primer
poll y con valor en el segundo, se generaban dos claves distintas para
el mismo evento y el turno se anunciaba dos veces.

Cambia callKey a String(id) — cada turno se anuncia una sola vez
por sesión de pantalla, sin importar cambios en el timestamp.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lizandro Guarnizo
2026-07-02 23:32:31 -05:00
co-authored by Claude Sonnet 4.6
parent c4154b5b61
commit 8074f33b32
+2 -3
View File
@@ -616,8 +616,7 @@ function renderSnapshot(snap) {
let anuncioNuevo = false;
allTurnos.forEach(t => {
const key = t.codigo + '|' + t.destino + '|' + (t.llamado_at || '');
// Clave única por evento de llamada (id+llamado_at), independiente del escritorio
const callKey = (t.id || t.codigo) + '|' + (t.llamado_at || '');
const callKey = String(t.id || t.codigo);
currentKeys.add(key);
if (!lastSeenKeys.has(key)) {
const c = t.prioridad_color || '<?= $_labColor ?>';
@@ -643,7 +642,7 @@ function renderSnapshot(snap) {
const t = sorted[0];
const c = t.prioridad_color || '<?= $_labColor ?>';
const key = t.codigo + '|' + t.destino + '|' + (t.llamado_at || '');
const callKey = (t.id || t.codigo) + '|' + (t.llamado_at || '');
const callKey = String(t.id || t.codigo);
const nomVoz = t.paciente_id ? t.paciente_nombre : null;
announcedCalls.add(callKey);
queueAnnouncement({ _key: key, codigo: t.codigo, destino: t.destino, paciente: nomVoz, color: c });