feat(timezone): /status no fuso da clínica + devolve timezone (Fase 2b)

/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 <noreply@anthropic.com>
This commit is contained in:
VPS 4 Builder
2026-07-08 02:44:42 +02:00
parent 27dd45efbd
commit 2f37944afa
+4 -3
View File
@@ -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 });
}