Files
agent_contas/docs/MATRIZ_MIGRACAO.md

14 KiB
Raw Permalink Blame History

Matriz de Migração — Contas -> agent_framework_oci

Capacidade Destino novo Reuso framework Código de domínio novo Dependência anterior
LangGraph app/workflows/agent_graph.py Sim composição mínima Não
Router EnterpriseRouter Sim routing.yaml Não
Stickiness framework Sim configuração Não
Supervisor framework Sim configuração Não
Confirmação AgentRuntimeMixin Sim tool policy Não
Clarificação AgentRuntimeMixin/MCP mapping Sim schemas/mapping Não
Sessions framework repository Sim Não Não
Message memory framework Sim Não Não
Summary memory framework Sim Não Não
LTM framework Sim Não Não
Checkpoint framework Sim Não Não
RAG RagService Sim conteúdo/config Não
Guardrails GuardrailPipeline Sim config Não
Output Supervisor framework Sim Não Não
Judges JudgePipeline Sim config Não
MCP router framework Sim tool catalog Não
Faturas MCP/domain Não aplicável Sim Não
Billing Analysis MCP/domain Não aplicável Sim Não
Consulta/Histórico VAS MCP/domain Não aplicável Sim Não
Bloqueio/Cancelamento VAS MCP/domain confirmação no framework Sim Não
Contestação MCP/domain confirmação/estado no framework Sim Não
Protocol/Status/Tracking MCP/domain contexto no framework Sim Não
SMS MCP/domain contexto no framework Sim Não
Secure PDF MCP/domain contexto no framework Sim Não
Langfuse framework Sim Não Não
Pub/Sub/sequence framework Sim configuração Não
OCI Streaming framework Sim configuração Não
OTEL framework Sim configuração Não

Regra

O pacote anterior não é uma biblioteca do novo projeto. Se uma regra específica for necessária, ela deve ser portada e testada dentro de app/domain/contas; infraestrutura genérica deve ser eliminada em favor do framework.

Contratos TIM validados por regressão

Integração Paridade coberta Estado
CompleteInvoices método/payload/header ClientID
Query VAS URL por MSISDN, clientId=AIAAGENTCR, auth
VAS History query msisdn, clientId, messageId, auth
Block VAS payload PMid + fallbacks e headers
Cancel VAS DELETE, channel, protocol, headers, messageId
Contract Information GET por MSISDN, clientId, auth
Profile/Line Info GET e header ClientID
Billing Analysis GET por MSISDN + channel
Bill PDF POST detalhado + criptografia
Secure PDF GET com parâmetros criptografados
Customer Contestation payload/headers principais
Service Request Status envelope serviceRequest
Tracking Activities customer/invoice/activity/user
Protocol V2 envelope Siebel + headers corporativos
SMS Barcode payload completo + retry/RCT

Jornadas compostas e comportamento conversacional

Capacidade original Implementação migrada Reuso do framework Regressão
Cancelamento VAS -> contestação dois workflows encadeados no MCP WorkflowRuntime
Composição final cancelamento app/domain/contas/vas_cancellation_message.py domínio determinístico 19 casos originais
Fallback VAS History ContasDomainService.cancelar_vas_avulso transporte via adapter
Cancelamento parcial em lote action expõe cancelados/falhas/candidatos WorkflowRuntime + IdempotencyStore
Idempotência transacional create_idempotency_store() framework
Replay pós-finalização Channel short-circuit framework
Idle nudge replay Channel short-circuit framework
Processing interruption replay + classificador LLM fail-safe LLMProvider framework
Correção Fim/Mim -> Sim channel transcription framework
Finalização status/summary regra pura de domínio workflow framework
Protocolo informacional final action + ProtocolV2 WorkflowRuntime

Bootstrap MCP

WorkflowRuntime, checkpointer e IdempotencyStore são inicializados de forma lazy. Isto evita dependência de Oracle/Redis para endpoints de diagnóstico e garante que o backend durável só seja aberto quando um workflow realmente precisar ser executado.

Incrementos de paridade - baseline 420

Capacidade original Implementação migrada Responsabilidade Estado
InvoiceContextProvider / prefetch InvoiceContextService + agent_framework.cache.Cache domínio escolhe evidências; framework fornece cache
Isolamento de invoice context por sessão chave session_id:msisdn:invoice_id framework cache
Plano família titular/dependente normalização antes do workflow + contestação única no titular domínio + WorkflowRuntime
Correção de linha por invoice detail normalização determinística domínio
CVAL fail-stop edge success=false -> END WorkflowRuntime
Snapshot parcial em falha WorkflowRuntime recupera último state do LangGraph framework
Retry Billing Analysis / RCT 079-084 metadata _transport + RCTPolicy domínio define códigos; observer publica
Finalização invoice explanation protocolo informacional somente após workflow executado domínio + WorkflowRuntime
VEB fechado / force RT15 reuso ou novo protocolo conforme flags domínio
Inicialização AgentWorkflow router/agentes/grafo dentro de __init__ aplicação/framework

Incrementos de paridade — baseline 435

Capacidade original Implementação migrada Responsabilidade Status
Invoice prefetch single-flight InvoiceContextService + agent_framework.cache.Cache domínio escolhe evidências; framework fornece cache
CVN de prefetch sem duplicação business_events + cache markers domínio define código; observer framework publica
Latch invoice/workflow já executado AgentRuntimeMixin.business_workflows_executed framework
Batch cancellation max 5 action async + semaphore domínio action sobre WorkflowRuntime
Protocolo por linha antes de cancelar action cancelamento_vas_avulso_batch domínio + adapter TIM
Erro estruturado de workflow WorkflowRunResult.error_details framework
Provider error de contestação MCP mapping sobre error_details domínio/MCP fino

Baseline 440 testes - continuação

  • 440 testes de migração passando; 2 skipped por dependências indisponíveis neste runtime (langgraph/jellyfish).
  • Cancelamento VAS: falha de bloqueio/cancelamento pode permanecer candidata à contestação sem mascarar sucesso.
  • Resposta composta preserva protocolos de cancelamento por linha + protocolo de contestação e sinaliza finalização sugerida.
  • Plano família: protocolo de cancelamento em dependente resolve socialSecNo via LineInfo da própria linha.
  • Registro de protocolo aceita aliases de resposta interactionProtocol, protocolNumber, protocol e protocolo.
  • Finalização informacional recalcula Bundle/Estratégico/Avulso pela evidência de invoice_detail/Billing Analysis quando disponível.

Finalização - paridade adicional (baseline 533)

Capability original Implementação migrada Framework reutilizado Evidência
CVN aceite/recusa no encerramento finalizar_atendimento_action business_events + AgentObserver testes de finalização estendida
Protocolo RT-15 informacional action de domínio + TIM client WorkflowRuntime/observer/idempotência RCT.085/086 + CVN.010/011
Nota de invoice explanation valor canônico Explicação dos valores da fatura workflow latch do framework regressão
Handoff/retention suppression flags no state/domain action estado persistido do framework regressão
SAD decision tree SAD.001/002/003/004/005/006/007 como business events AgentObserver regressão
Classificação VAS sem invoice detail aliases determinísticos de domínio nenhuma engine paralela regressão
Regressão offline de workflow WorkflowRuntime(... allow_deterministic_fallback=True) somente em teste DSL/actions do framework 18 casos históricos executados

Atualização de paridade - baseline 550

Capability Original Migrado Evidência
Finalização com prefetch de fatura CVN lookup + RT-15 quando aplicável Implementado regressão de finalização
Supressão após transição para negócio não reemite CVN/MPI Implementado regressão dedicada
VEB terminal não duplica RT-15/CVN Implementado regressão dedicada
Precedência de tipo pela fatura total/parcial/sem match Implementado regressão dedicada
Protocolo já existente não duplica RT-15 Implementado regressão dedicada
Matcher fonético/transcrição catálogo real Implementado sem xfails suíte de transcrição

VAA — rastreabilidade de cancelamento/contestação

Capability histórica Implementação migrada Framework reutilizado Estado
VAA.001004 cancelamento cancelamento_vas_avulso_batch retorna business_events AgentObserver / analytics OK
VAA.005009 contestação/boleto abrir_contestacao_cliente retorna business_events AgentObserver / analytics OK
VAA.012015 SMS enviar_sms retorna business_events e mantém fluxo em erro AgentObserver / analytics OK
VAA.016017 status SR atualizar_status_sr retorna business_events AgentObserver / analytics OK

Baseline 560 testes - metadata corporativa TIM

  • 560 testes de migração passando, sem skips/xfails.
  • Business events preservam contexto corporativo: agentProtocolId, adjustedProtocol, billingId, uraCallId, channelId, sessionId, messageId e agentSpecificData.
  • Contestação VAA.005-009 preserva itens/valores ajustados e protocolo.
  • Finalização CVN.010/011 preserva protocolo TIM/URA e billing context.
  • RCTs derivados de retry HTTP carregam apiUrl, apiStatusCode, apiResponsePayload e latencyMs.
  • SMS e Service Request Status carregam metadata de transporte e contexto de protocolo.
  • tim_payload_mapper aceita o formato histórico agentSpecificData JSON-string e o converte para o objeto canônico TIM no payload final.

Paridade de eventos conversacionais — baseline 565

Família Paridade adicionada
VEB ordem dos branches de VAS estratégico e metadata do turno/URA
MPI contexto de invoice explanation, pró-rata e cancelamento
CVN contexto conversacional/protocolo no encerramento
SAD llmResponse, messageId, sessão/canal e sessionEndAt normalizado

Incremento de paridade — baseline 570

Funcionalidade original Implementação migrada Responsabilidade
Cancelamento solicitado para item estratégico/bundle InvoiceResolver redireciona para workflow vas_estrategico Domínio + WorkflowRuntime
Invoice explanation SIM recomenda resolvido pelo último node do workflow MCP adapter fino sobre WorkflowRuntime
Invoice explanation NÃO sem VAS variado recomenda nao_resolvido MCP adapter fino sobre WorkflowRuntime
Pró-rata aceito / sem Plano Controle recomenda resolvido MCP adapter fino sobre WorkflowRuntime
Orientação de cancelamento de VAS estratégico por parceiro action declara requires_rag/rag_queries; AgentRuntimeMixin chama RagService Framework
Gate padrão de regressão pytest -q -> tests/ Projeto migrado

Baseline 578 - wrapper cancelamento + LLM composition

  • 593 testes passando; zero skipped/xfail.
  • Cancelamento preserva auto_finalize_on_failure em falha técnica de contestação.
  • Item já contestado não mascara cancelamento concluído como falha sistêmica.
  • cancelamento_vas_protocol e todos os protocolos de resposta são preservados.
  • Plano família contesta titular + dependentes em uma única contestacao_tool.
  • Lote com muitos no-match continua contestando exatamente os candidatos elegíveis.
  • Pró-rata usa requires_llm_composition do framework em vez de gateway LLM de domínio.

Paridade de wrappers históricos — baseline 593

Comportamento original Implementação migrada Estado
tipo_atendimento=contestacao _workflow_payload(contestacao_tool)
Contexto do turno no workflow payload MCP preserva IDs/canal/mensagem
CPF como alias de socialSecNo normalização no wrapper composto
cancelados sem results.success fallback agregado do wrapper
itens_para_contestacao alias de contestation_candidates
falha block/cancel ainda elegível a RT-02 composição de dois WorkflowRuntime
SMS falha sem derrubar jornada sms_not_send_error
Bundle + Estratégico + NÃO protocolo deferido + RAG obrigatório

Complemento de paridade — baseline 599

Comportamento histórico Implementação migrada Prova
Itens já contestados normalização em abrir_contestacao_cliente + compositor determinístico teste de wrapper 1:1
Itens contestados/não contestados classificação na action de domínio regressão de contestação
Total contestado somente dos itens aceitos cálculo determinístico no domínio regressão de contestação
Contestação retorna valor zero fallback para total efetivamente cancelado teste de wrapper 1:1
Valor na fala em pt-BR normalização na borda MCP teste R$ 14,99
next_subject ignorado pelo compositor determinístico teste de wrapper 1:1
Billing Analysis indisponível fraseologia canônica e auto_finalize_on_failure=false regressão invoice explanation

Cobertura 1:1 de wrappers — baseline 615

Além dos testes de domínio/actions/workflows, a suíte passa a reproduzir diretamente outcomes históricos dos wrappers cancelar_vas_single e finalize_support, cobrindo no-match, candidatos explícitos, falhas parciais RT-01→RT-02, SMS, protocolos, protocol_closed, plano família/titular-dependente e protocolo informacional deferido.

Esses testes são classificados como paridade explícita de contrato externo, e não apenas cobertura indireta por actions internas.