Commit Graph

7 Commits

Author SHA1 Message Date
VPS 4 Deploy Agent 163a5d0db2 feat(secretaria): roteiro de agendamento (manhã/tarde, 1 horário por vez)
Regras injetadas no prompt: NUNCA listar vários horários — primeiro perguntar
"manhã ou tarde?", depois oferecer UM único horário (o primeiro livre do período,
via listar_horarios com periodo), um de cada vez, mantendo 1h entre atendimentos.
listar_horarios ganhou o parâmetro periodo (manha|tarde).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 05:59:36 +02:00
VPS 4 Deploy Agent 46b9efaed0 tweak(secretaria): frase da zona cinza sem citar "secretária"
Ao registrar um pedido de horário fora do padrão, a IA passa a responder no tom:
"No momento esse horário não está disponível, mas ainda não confirmei a agenda —
posso te confirmar daqui a pouco?" (antes: "vou verificar com a secretária").

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 05:34:09 +02:00
VPS 4 Deploy Agent 0f20fe5314 feat(secretaria): tool solicitar_horario_especial (zona cinza)
Quando o cliente pede um horário PONTUAL fora dos disponíveis (mais cedo/mais
tarde), a IA usa solicitar_horario_especial → registra um pedido na agenda do
satélite (POST /pedido) e responde "vou confirmar com a secretária e retorno"
(sem garantir o horário). brain.ts injeta essa regra no prompt. Par do satélite
(scoreodonto): janela flex + fila da secretária humana.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 05:29:45 +02:00
VPS 4 Deploy Agent 837a7a44d9 feat(secretaria): tools da agenda cientes de sala (B)
listar_horarios inclui `local` (nome da sala alugada ou "Clínica") e codifica o
sala_id no slot_id; agendar_horario repassa sala_id ao /book para reservar no
quarto certo. Par do satélite (scoreodonto): folga do dentista (A) + salas (B).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-06 02:13:36 +02:00
VPS 4 Deploy Agent 213990d51f feat(secretaria): Secretária IA separada por sessão (agente por número)
Núcleo desta mudança (separação por sessão):
- migrate.ts: sec_numbers.agent_id (FK→sec_agents, ON DELETE SET NULL) e
  sec_calendar.instance_id, com índices (aditivo/idempotente).
- ext-api routes.ts: runtime resolve o agente pelo NÚMERO que recebeu a
  mensagem (sec_numbers[instanceId].agent_id, fallback: 1º ativo); rotas
  admin /secretaria/numbers e /secretaria/calendar aceitam os novos campos.
- brain.ts/tools.ts: instanceId no contexto; sec_calendar interno filtrado
  por sessão; parse de jid robusto (.pop(), suporta 2 e 3 partes).
- secretaria/routes.ts: paridade (agent_id em numbers, instance_id no calendar).

Testado em dev (newwhats.dev refrescado): agentes resolvidos por instância;
fallback e FK ON DELETE SET NULL verificados via ext-api.

Obs.: por estarem no mesmo working tree não-commitado do newwhats.local,
ext-api/routes.ts e secretaria/tools.ts também trazem o trabalho acumulado
da integração do satélite (ações de inbox: delete/react/typing/labels/forward
e admin /secretaria/*; tools identificar_numero/cadastrar_paciente do odonto).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 19:51:25 +02:00
VPS 4 Deploy Agent d09155613c feat(secretaria): tools de agenda operam na agenda real do satélite via ponte
listar_horarios/agendar_horario chamam a ponte do scoreodonto (/api/nw/agenda
slots|book) quando configurada — slot_id sintético (dentista|start|end), telefone
derivado do JID do contato — com fallback ao calendário interno preservado.
brain.ts injeta a config da agenda (agenda_url/secret/clinica_id) no toolCtx.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 00:51:47 +02:00
VPS 4 Deploy Agent 2f8c04a0a7 chore(ops): restore all source files in newwhats.clube67.com
continuous-integration/webhook Falha no deploy de clube67_newwhats.local (VPS 4)
2026-05-18 03:28:29 +02:00