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:
@@ -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 });
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user