1.6 KiB
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_avulsocomsubject=TIM Fashionnunca exponhavas avulsonemcancelar_vas_avulso;- o nome comercial apareça na confirmação;
- confirmações existentes de varejo continuem idênticas.