Files
b2bcall/CHANGELOG.md
B2BCall Bootstrap 80e72881b2 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).
2026-08-27 19:16:14 -03:00

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_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.