Files
agent_contas/FIX_CONFIRMATION_FRASEOLOGIA_20260821.md

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