34 lines
1.6 KiB
Markdown
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.
|