feat(agenda-bridge): /numeros-internos p/ guard anti-leak da Secretária
Lista os dígitos dos números de pessoa_comunicacao da clínica (dentistas/equipe) p/ o motor não tratar um número interno como paciente. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -549,6 +549,23 @@ export function createAgendaBridge(pool) {
|
|||||||
} catch (e) { res.status(500).json({ error: e.message }); }
|
} catch (e) { res.status(500).json({ error: e.message }); }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// ── GET /numeros-internos ───────────────────────────────────────────────────────
|
||||||
|
// Só os dígitos dos números de pessoa_comunicacao da clínica (dentistas/equipe). O
|
||||||
|
// motor usa p/ NÃO tratar um número interno como paciente (anti-loop/leak).
|
||||||
|
router.get('/numeros-internos', async (req, res) => {
|
||||||
|
const clinicaId = String(req.query.clinica_id || '');
|
||||||
|
if (!clinicaId) return res.status(400).json({ error: 'clinica_id obrigatório' });
|
||||||
|
try {
|
||||||
|
const { rows } = await pool.query('SELECT numeros FROM pessoa_comunicacao WHERE clinica_id = $1', [clinicaId]);
|
||||||
|
const set = new Set();
|
||||||
|
for (const r of rows) for (const n of (Array.isArray(r.numeros) ? r.numeros : [])) {
|
||||||
|
const d = String(n?.numero || '').replace(/\D/g, '');
|
||||||
|
if (d.length >= 8) set.add(d);
|
||||||
|
}
|
||||||
|
res.json({ numeros: [...set] });
|
||||||
|
} catch (e) { res.status(500).json({ error: e.message }); }
|
||||||
|
});
|
||||||
|
|
||||||
// ── GET /contatos ─────────────────────────────────────────────────────────────
|
// ── GET /contatos ─────────────────────────────────────────────────────────────
|
||||||
// "Agenda de contatos internos" p/ roteamento por SITUAÇÃO. Lista todas as pessoas da
|
// "Agenda de contatos internos" p/ roteamento por SITUAÇÃO. Lista todas as pessoas da
|
||||||
// clínica (dono/dentista/funcionário) com o papel, as situações de cada número e se pode
|
// clínica (dono/dentista/funcionário) com o papel, as situações de cada número e se pode
|
||||||
|
|||||||
Reference in New Issue
Block a user