From e3f01c665a6e8007cb006d98d690e8b3be1cb710 Mon Sep 17 00:00:00 2001 From: Hanzo_dev <2002samudiojohan@gmail.com> Date: Mon, 2 Mar 2026 15:48:02 -0500 Subject: [PATCH] fix(eta): normalize day filtering and handle case sensitivity in schedules --- frontend/src/composables/useETA.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/frontend/src/composables/useETA.ts b/frontend/src/composables/useETA.ts index 83c0580..6799aef 100644 --- a/frontend/src/composables/useETA.ts +++ b/frontend/src/composables/useETA.ts @@ -41,6 +41,8 @@ export function useETA() { const diaActual = new Date().getDay(); const dias = ['domingo', 'lunes', 'martes', 'miercoles', 'jueves', 'viernes', 'sabado']; const diaString = dias[diaActual]; + const normalizar = (s: string | null | undefined) => (s || "").toLowerCase().trim().normalize("NFD").replace(/[\u0300-\u036f]/g, ""); + const diaStringNorm = normalizar(diaString); const tipoDia = (diaActual === 0 || diaActual === 6) ? 'weekend' : 'weekday'; const { data: horarios, error: hError } = await supabase @@ -53,16 +55,19 @@ export function useETA() { if (hError) throw hError; const horariosHoy = (horarios ?? []).filter(h => { - if (h.dias_operacion) { - return h.dias_operacion.includes('todos') || h.dias_operacion.includes(diaString); + const diasOP = h.dias_operacion as string[] | null; + if (diasOP && Array.isArray(diasOP) && diasOP.length > 0) { + return diasOP.some(d => { + const dNorm = normalizar(d); + return dNorm === 'todos' || dNorm === diaStringNorm; + }); } - return h.schedule_type === tipoDia || h.schedule_type === 'todos' || !h.schedule_type; + const stNorm = normalizar(h.schedule_type); + return stNorm === tipoDia || stNorm === 'todos' || !h.schedule_type; }); if (horariosHoy.length === 0) { - // No hay horarios hoy, no perdemos tiempo en geo busesActivos.value = []; - cargando.value = false; return; } @@ -138,7 +143,7 @@ export function useETA() { estado = 'pasó'; } - if (etaMinutos < -60) continue; + if (etaMinutos < -45) continue; resultados.push({ horario_id: h.id, @@ -155,7 +160,7 @@ export function useETA() { return a.etaMinutos - b.etaMinutos; }); - busesActivos.value = resultados.slice(0, 3); + busesActivos.value = resultados.slice(0, 5); } catch (e) { console.error('SIBU | Error calculando ETA:', e); } finally {