Fase 9 (segurança e produção): - GET /api/metrics: endpoint Prometheus com métricas reais (chamadas, agentes, filas, CPS por campanha), protegido por permissão - scripts/backup.sh, restore.sh, healthcheck.sh, install.sh, update.sh — testados contra o ambiente real (backup.sh e healthcheck.sh rodados de verdade; install.sh/update.sh validados por inspeção, ambiente atual já provisionado) - POST /api/agent-console/dispose: aplica disposição de chamada de verdade (lacuna deixada aberta desde a Fase 6), com ações CALLBACK (agenda retorno) e DO_NOT_CALL (suprime automaticamente) - apps/dialer-worker/src/callback-sweep.ts: reativa leads com callback vencido; GET /api/callbacks para consulta - apps/dialer-worker/src/wrap-up-sweep.ts: transição automática WRAP_UP -> AVAILABLE + despausa real na fila do Asterisk. Exigiu corrigir main.ts para conectar ao AMI mesmo em DIALER_SIMULATION=true (DIALER_SIMULATION deve impedir só originação de chamada, não ações administrativas de fila) - nftables revisado (sem alterações necessárias) - Documentação completa: INSTALL, OPERATIONS, BACKUP_RESTORE, SECURITY, DATABASE, API, ASTERISK, OPENSIPS (não implementado, motivo documentado), TROUBLESHOOTING - README.md e CHANGELOG.md reescritos Fase 10 (testes e aceite): - Quality gate completo executado: build/typecheck (7 workspaces), lint, 46 testes unitários, docker compose config/ps, healthcheck — tudo verde - Aceite de segurança (seção 92): 13 itens verificados ao vivo contra o sistema real, não só por inspeção de código - Aceite Asterisk (seção 93): os 5 comandos executados e documentados, comunicação API->AMI->Asterisk validada - docs/RELATORIO_FINAL.md: relatório final no formato da seção 96 Todos os fixtures de teste desta fase foram removidos/desativados ao final. Credenciais de acesso entregues separadamente em CREDENCIAIS.txt (fora do git, nunca versionado).
3.3 KiB
3.3 KiB
Changelog
Todas as fases foram construídas e testadas contra containers reais
(Postgres/Redis/Asterisk), nunca apenas documentadas — ver TODO.md para o
detalhamento de cada item testado por fase.
Fase 0 — Bootstrap
- Estrutura do monorepo (pnpm workspaces), decisões de arquitetura
documentadas em
docs/ARCHITECTURE.md.
Fase 1 — Asterisk + PJSIP
- Asterisk 22.10.1 compilado do fonte, PJSIP Realtime via ODBC/Postgres,
AMI/ARI, CDR/CEL via
cdr_adaptive_odbc/cel_odbc.
Fase 2 — Autenticação e RBAC
- Argon2id, JWT + refresh rotativo, RBAC completo, auditoria, rate limiting
progressivo de login, bootstrap de
super_admincom senha aleatória.
Fase 3 — Telefonia e eventos
packages/telephony(client AMI próprio),apps/asterisk-events(normalização de eventos → Postgres/Redis pub-sub).
Fase 4 — Troncos, ramais e dialplan
- CRUD de troncos/ramais com provisionamento PJSIP Realtime, criptografia AES-256-GCM de segredos, dialplan estruturado versionado com rollback automático, administração do Asterisk via allowlist de comandos.
Fase 5 — Call Center
- Filas (8 estratégias, membership 100% dinâmica via AMI), console do agente (login/pausa/disponibilidade), monitoramento de filas em tempo real.
Fase 6 — Campanhas e discador preditivo
- CRUD de campanhas com máquina de estados, import CSV streaming,
normalização de telefone BR, lista de supressão (DNC), CPS limiter
(token bucket Redis), reserva concorrente de leads
(
FOR UPDATE SKIP LOCKED),PredictiveDialerEngine(EWMA de answerProbability/TMA/abandono, pacing adaptativo), retry engine, horário de campanha, lock distribuído por campanha.
Fase 7 — CDR, métricas e relatórios
- Reconciliação de estados órfãos, TME/TMA reais, relatório de chamadas e de agentes, dashboard geral e do discador, indicadores de compliance configuráveis.
Fase 8 — Frontend completo
- Next.js 15 + Tailwind v4 + componentes estilo shadcn/ui, todas as telas do checklist de aceite, Nginx como reverse proxy único (porta 80).
Fase 9 — Segurança e produção
- Endpoint Prometheus (
GET /api/metrics) com métricas reais (chamadas, agentes, filas, CPS por campanha). - Scripts operacionais:
install.sh,update.sh,backup.sh,restore.sh,healthcheck.sh. - Disposição de chamada aplicada de fato (
POST /api/agent-console/dispose) com ações CALLBACK (agenda retorno) e DO_NOT_CALL (suprime automaticamente) — lacuna deixada em aberto na Fase 6/8. - Agendamento de callback:
apps/dialer-worker/src/callback-sweep.tsreativa leads no horário agendado;GET /api/callbackspara consulta. - Wrap-up automático:
apps/dialer-worker/src/wrap-up-sweep.tstransiciona o agente de volta paraAVAILABLE(e despausa nas filas) após o tempo de wrap-up da fila expirar — lacuna deixada em aberto na Fase 6. - Revisão de nftables (sem alterações necessárias — regras já cobriam o Nginx publicado na Fase 8).
- Documentação completa:
docs/INSTALL.md,docs/OPERATIONS.md,docs/BACKUP_RESTORE.md,docs/SECURITY.md,docs/DATABASE.md,docs/API.md,docs/ASTERISK.md,docs/OPENSIPS.md(não implementado — motivo documentado),docs/TROUBLESHOOTING.md.
Fase 10 — Testes e aceite
- Ver
docs/RELATORIO_FINAL.mdpara o relatório de aceite completo.