bugfix: aofertas

This commit is contained in:
2026-08-21 10:44:34 -03:00
parent e063e4b500
commit a231f063ed
8 changed files with 141 additions and 7 deletions

View File

@@ -99,3 +99,12 @@ def test_upsell_continua_bloqueando_apos_mudanca():
assert r.allowed is False
assert r.code == "AOFERTA"
assert r.data.get("label") == "OFERTA_PROATIVA_INDEVIDA"
def test_prompt_aoferta_confirmacao_nao_exige_repetir_justificativa():
prompt = build_aoferta_prompt(
"Você confirma cancelar o TIM Music?",
"\nHistorico da conversa:\n[user] Quero cancelar o TIM Music\n",
)
assert "A confirmacao NAO precisa repetir a justificativa" in prompt
assert "o pedido transacional anterior basta" in prompt

View File

@@ -359,3 +359,37 @@ def test_finalizacao_informacional_infer_tipo_de_billing_analysis_json():
assert _infer_informational_vas_types(
["YouTube Premium Mensal", "Aluguel de Filme 3"], json.dumps(payload, ensure_ascii=False)
) == {"estrategico", "avulso"}
def test_output_guardrail_context_inclui_pedido_atual_para_aoferta():
from app.workflows.agent_graph import AgentWorkflow
ctx = AgentWorkflow._output_guardrail_context(
{
"context": {},
"history": [
{"role": "assistant", "content": "O TIM Music custa R$ 12,90."},
],
"user_text": "Quero cancelar o TIM Music",
"mcp_results": [],
}
)
assert ctx["conversation_history"][-1] == {
"role": "user",
"content": "Quero cancelar o TIM Music",
}
assert ctx["history_texts"][-1] == "Quero cancelar o TIM Music"
def test_output_guardrail_context_nao_duplica_user_text_ja_no_historico():
from app.workflows.agent_graph import AgentWorkflow
ctx = AgentWorkflow._output_guardrail_context(
{
"context": {},
"history": [{"role": "user", "content": "Quero cancelar o TIM Music"}],
"user_text": "Quero cancelar o TIM Music",
"mcp_results": [],
}
)
assert len(ctx["conversation_history"]) == 1

View File

@@ -0,0 +1,13 @@
from agent_framework.guardrails.calibrated.prompts._context import format_context_block
def test_format_context_block_suporta_history_em_dict_do_contas():
context = {
"conversation_history": [
{"role": "assistant", "content": "O TIM Music custa R$ 12,90."},
{"role": "user", "content": "Quero cancelar o TIM Music"},
]
}
block = format_context_block(context)
assert "[assistant] O TIM Music custa R$ 12,90." in block
assert "[user] Quero cancelar o TIM Music" in block