Files
agent_contas/FIX_CONFIRMATION_FRASEOLOGIA_20260821.md

34 lines
1.6 KiB
Markdown

# Correção da confirmação transacional x FRASEOLOGIA — 2026-08-21
## Sintoma observado
Para a entrada `quero cancelar o serviço TIM Fashion`, o fluxo entrava corretamente em `AWAITING_CONFIRMATION`, e o guardrail `AOFERTA` permitia a resposta. Porém a confirmação determinística era montada a partir do nome técnico da tool:
`Você confirma cancelar vas avulso?`
O guardrail `FRASEOLOGIA` bloqueava essa saída porque `vas avulso` é nomenclatura interna.
## Causa raiz
`AgentRuntimeMixin.transaction_confirmation_message()` convertia o nome da tool com `tool_name.replace("_", " ")` quando não havia label explícito. Para `cancelar_vas_avulso`, isso vazava o identificador técnico para a resposta ao cliente.
## Correção
Quando a tool representa cancelamento (`cancelar_*`) e os argumentos pendentes possuem `subject`, a confirmação passa a ser construída com o nome comercial do item:
`Você confirma o cancelamento do serviço {subject}? Responda 'sim' para executar ou 'não' para cancelar.`
Exemplo:
`Você confirma o cancelamento do serviço TIM Fashion? Responda 'sim' para executar ou 'não' para cancelar.`
A correção preserva o comportamento anterior das demais confirmações, como devolução e troca de pedidos.
## Teste de regressão
Adicionado `agent_framework_oci/tests/test_transaction_confirmation_customer_facing.py`, garantindo que:
- `cancelar_vas_avulso` com `subject=TIM Fashion` nunca exponha `vas avulso` nem `cancelar_vas_avulso`;
- o nome comercial apareça na confirmação;
- confirmações existentes de varejo continuem idênticas.