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