bugfix: enviar subject para contexto do guardrail
This commit is contained in:
33
FIX_CONFIRMATION_FRASEOLOGIA_20260821.md
Normal file
33
FIX_CONFIRMATION_FRASEOLOGIA_20260821.md
Normal file
@@ -0,0 +1,33 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user