Files
b2bcall/README.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

B2BCall

Plataforma de discagem preditiva / call center — monorepo TypeScript (Next.js + NestJS + PostgreSQL + Redis + Asterisk 22/PJSIP), construída e testada de ponta a ponta contra containers reais.

Stack

  • Frontend: Next.js 15 (App Router), React 19, Tailwind CSS v4.
  • Backend: NestJS 11 (Fastify), Prisma ORM.
  • Banco: PostgreSQL 17 (schemas public + asterisk).
  • Cache/coordenação: Redis 7 (CPS limiter, lock distribuído, EWMA de pacing).
  • Telefonia: Asterisk 22.10.1 (PJSIP, AMI, ARI, Realtime via ODBC).
  • Infra: Docker Compose, Nginx (reverse proxy único), nftables.

Início rápido

git clone <url> /opt/b2bcall
cd /opt/b2bcall
sudo ./scripts/install.sh

Ao final, a URL de acesso e o caminho do FIRST_LOGIN.txt (credenciais do primeiro acesso) são impressos no terminal. Detalhes em docs/INSTALL.md.

Documentação

Documento Conteúdo
docs/ARCHITECTURE.md Decisões de arquitetura, estrutura do monorepo, rede
docs/INSTALL.md Instalação passo a passo
docs/OPERATIONS.md Operação do dia a dia, atualização, escala
docs/BACKUP_RESTORE.md Backup e restore
docs/SECURITY.md Postura de segurança e checklist de aceite
docs/DATABASE.md Modelo de dados e decisões de schema
docs/API.md Referência de rotas da API
docs/ASTERISK.md Configuração e diagnóstico do Asterisk
docs/OPENSIPS.md Por que não foi implantado nesta fase
docs/PREDICTIVE_DIALER.md Algoritmo do discador preditivo
docs/TROUBLESHOOTING.md Problemas reais encontrados e soluções
docs/RELATORIO_FINAL.md Relatório final de aceite do projeto
CHANGELOG.md O que foi entregue em cada fase
TODO.md Checklist detalhado, item a item, com notas de teste

Estrutura

apps/
  frontend         Next.js — interface web completa
  api              NestJS — REST, autenticação, RBAC, telefonia, relatórios
  dialer-worker    Motor do discador preditivo
  asterisk-events  Conector AMI dedicado (eventos → Postgres/Redis)
packages/
  database         Schema Prisma + migrations
  shared           Utilitários compartilhados (permissões, criptografia)
  telephony        Client AMI/ARI próprio
infrastructure/
  asterisk         Configuração do Asterisk
  nginx            Reverse proxy
  postgres         Scripts de inicialização (schemas public + asterisk)
  docker           Dockerfiles
  nftables         Regras de firewall
scripts/           install.sh, update.sh, backup.sh, restore.sh, healthcheck.sh

Desenvolvimento

pnpm install
pnpm -r build      # build de todos os pacotes/apps
pnpm -r test       # testes unitários (dialer-worker + api)
pnpm --filter @b2bcall/api lint

Ambiente de referência

Construído e validado em Debian 13 (trixie), 2 vCPU / 1.9 GiB RAM — ver docs/ARCHITECTURE.md §1 para as implicações dessa restrição nas decisões de arquitetura. Recomendado 4 vCPU / 8 GiB RAM para produção com volume real de discagem.