From 2f37944afa2670b06a0e897091d5efc8309fa933 Mon Sep 17 00:00:00 2001 From: VPS 4 Builder Date: Wed, 8 Jul 2026 02:44:42 +0200 Subject: [PATCH] =?UTF-8?q?feat(timezone):=20/status=20no=20fuso=20da=20cl?= =?UTF-8?q?=C3=ADnica=20+=20devolve=20timezone=20(Fase=202b)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit /status calcula "hoje"/semana no fuso da clínica (getClinicaTZ) e passa a devolver `timezone` — usado pelo motor p/ injetar a data/hora no fuso certo. Co-Authored-By: Claude Opus 4.8 --- backend/newwhats/agenda-bridge.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/backend/newwhats/agenda-bridge.js b/backend/newwhats/agenda-bridge.js index 4684412..79fa93b 100644 --- a/backend/newwhats/agenda-bridge.js +++ b/backend/newwhats/agenda-bridge.js @@ -338,10 +338,11 @@ export function createAgendaBridge(pool) { const clinicaId = String(req.query.clinica_id || ''); if (!clinicaId) return res.status(400).json({ error: 'clinica_id obrigatório' }); try { - // "Hoje" no fuso de Brasília (o servidor pode rodar em UTC). + // "Hoje" no fuso da CLÍNICA (o servidor pode rodar em outro fuso). + const tz = await getClinicaTZ(pool, clinicaId); const hojeBR = req.query.date ? String(req.query.date) - : new Date().toLocaleDateString('en-CA', { timeZone: 'America/Sao_Paulo' }); // YYYY-MM-DD + : new Date().toLocaleDateString('en-CA', { timeZone: tz }); // YYYY-MM-DD const clinicHours = await carregarHorariosClinica(pool, clinicaId); const dateAt = (str) => new Date(`${str}T12:00:00`); // meio-dia: evita borda de fuso const addYmd = (str, k) => { const d = dateAt(str); d.setDate(d.getDate() + k); return ymd(d); }; @@ -383,7 +384,7 @@ export function createAgendaBridge(pool) { if (nac) feriados.push({ data: str, nome: nac, origem: 'nacional' }); } - res.json({ hoje, proximo_aberto: proximo, semana, feriados_proximos: feriados.slice(0, 8) }); + res.json({ hoje, proximo_aberto: proximo, semana, feriados_proximos: feriados.slice(0, 8), timezone: tz }); } catch (e) { res.status(500).json({ error: e.message }); }