Fase 7: CDR/métricas/relatórios, reconciliação, dashboard e compliance
- Reconciliação de tentativas órfãs após restart (reconciliation.ts), rodando a cada 60s. - Vínculo real agente<->chamada (agent-call-binding.ts): claim atômico de agente disponível via FOR UPDATE SKIP LOCKED, DialAttempt.agentId populado no connect, ciclo AVAILABLE -> IN_CALL -> WRAP_UP -> AVAILABLE. - Corrige abandonRate (EWMA) nunca atualizado pelo campaign-worker real — agora o fluxo QUEUED -> connect-or-abandon atualiza as estatísticas de fato usadas pelo predictive engine. - Novo módulo de relatórios: /api/reports/calls (+export CSV), /metrics (TME/TMA/abandono), /agents/:id. - Novo módulo de dashboard: /api/dashboard, /calls-by-hour, /campaigns/:id (Postgres + snapshot EWMA do Redis). - Novo módulo de compliance: ComplianceSettings configurável + /api/compliance/settings e /indicators com contadores reais. - Validado end-to-end contra containers reais (campanha de teste em modo simulação): agentId no connect, ciclo de estado do agente e abandonRate todos confirmados corrigidos com dados reais, não só no harness isolado. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QoVkLx1KsvtT1C88dRS3QW
This commit is contained in:
@@ -635,3 +635,21 @@ model SuppressionEntry {
|
||||
|
||||
@@map("suppression_list")
|
||||
}
|
||||
|
||||
// ===========================================================================
|
||||
// Fase 7 — Compliance (agente.md seção 34). Parâmetros configuráveis, nunca
|
||||
// hardcoded para uma legislação específica — o sistema AJUDA a cumprir
|
||||
// regras, nunca burla mecanismos antispam/autenticação de operadora.
|
||||
// ===========================================================================
|
||||
|
||||
// Linha única (singleton lógico) de parâmetros de compliance.
|
||||
model ComplianceSettings {
|
||||
id String @id @default(uuid())
|
||||
shortCallThresholdSeconds Int @default(3) @map("short_call_threshold_seconds")
|
||||
maxAttemptsPerNumberPerDay Int @default(3) @map("max_attempts_per_number_per_day")
|
||||
maxAttemptsPerNumberPerMonth Int @default(10) @map("max_attempts_per_number_per_month")
|
||||
highVolumeMonthlyThreshold Int @default(1000000) @map("high_volume_monthly_threshold")
|
||||
updatedAt DateTime @updatedAt @map("updated_at")
|
||||
|
||||
@@map("compliance_settings")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user