feat: Fase 9/10 — métricas, scripts operacionais, callback/wrap-up e aceite final
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).
This commit is contained in:
72
CHANGELOG.md
Normal file
72
CHANGELOG.md
Normal file
@@ -0,0 +1,72 @@
|
||||
# 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_admin` com 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.ts`
|
||||
reativa leads no horário agendado; `GET /api/callbacks` para consulta.
|
||||
- Wrap-up automático: `apps/dialer-worker/src/wrap-up-sweep.ts` transiciona
|
||||
o agente de volta para `AVAILABLE` (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.md` para o relatório de aceite completo.
|
||||
Reference in New Issue
Block a user