37 lines
1.7 KiB
Markdown
37 lines
1.7 KiB
Markdown
# Correção aOfertas + Contas — 2026-08-21
|
|
|
|
## Problema
|
|
O guardrail AOFERTA podia receber uma confirmação transacional isolada, por exemplo
|
|
`Você confirma cancelar o TIM Music?`, sem o pedido do cliente no contexto. Com isso,
|
|
um cancelamento legitimamente solicitado podia ser interpretado como oferta proativa.
|
|
|
|
Além disso, o histórico do Contas usa principalmente `dict` (`role`/`content`), enquanto
|
|
o formatador de contexto do guardrail tratava apenas objetos de mensagem LangChain.
|
|
|
|
## Correções aplicadas
|
|
|
|
1. `app/workflows/agent_graph.py`
|
|
- `_output_guardrail_context()` passa `conversation_history` aos guardrails de saída.
|
|
- inclui `user_text` corrente quando ainda não está no histórico;
|
|
- evita duplicação da última mensagem do cliente;
|
|
- mantém `history_texts` para compatibilidade.
|
|
|
|
2. `agent_framework_oci/.../prompts/_context.py`
|
|
- histórico em `dict` (`role`, `content`) passa a ser formatado corretamente;
|
|
- preserva suporte às mensagens LangChain existentes.
|
|
|
|
3. `agent_framework_oci/.../prompts/ausencia_oferta_proativa.py`
|
|
- explicita que uma confirmação da mesma transação já solicitada pelo cliente é permitida;
|
|
- não exige que a confirmação repita a justificativa da solicitação;
|
|
- marcadores de oferta adicional continuam bloqueados.
|
|
|
|
4. `config/guardrails.yaml`
|
|
- `AOFERTA` foi reativado, pois estava comentado na versão recebida.
|
|
|
|
## Validação
|
|
Os testes específicos da correção passaram: 47/47.
|
|
|
|
O teste global de paridade ainda aponta `FRASEOLOGIA` desabilitado em
|
|
`config/guardrails.yaml`. Essa configuração já veio assim no pacote recebido e não foi
|
|
alterada por esta correção, pois está fora do escopo aOfertas/Contas.
|