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).
73 lines
3.3 KiB
Markdown
73 lines
3.3 KiB
Markdown
# 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.
|