bugfix: oci_openai provider
This commit is contained in:
@@ -393,3 +393,97 @@ def test_output_guardrail_context_nao_duplica_user_text_ja_no_historico():
|
||||
}
|
||||
)
|
||||
assert len(ctx["conversation_history"]) == 1
|
||||
|
||||
|
||||
def test_output_guardrail_context_isola_transacao_terminal_apos_intent_shift():
|
||||
from app.workflows.agent_graph import AgentWorkflow
|
||||
|
||||
ctx = AgentWorkflow._output_guardrail_context(
|
||||
{
|
||||
"context": {
|
||||
"transaction_pre_validation": {
|
||||
"status": "OUT_OF_SCOPE",
|
||||
"terminal": True,
|
||||
"error": "TIM CTRL Redes Sociais 8.0",
|
||||
},
|
||||
},
|
||||
"history": [
|
||||
{"role": "user", "content": "nao contratei TIM CTRL Redes Sociais 8.0"},
|
||||
{"role": "assistant", "content": "Esse item nao e contestavel."},
|
||||
],
|
||||
"user_text": "quais sao meus servicos",
|
||||
"route": "vas_agent",
|
||||
"intent": "contas_vas_information",
|
||||
"route_decision": {
|
||||
"route": "vas_agent",
|
||||
"intent": "contas_vas_information",
|
||||
"metadata": {
|
||||
"route_stickiness_preempted": True,
|
||||
"previous_agent": "contestacao_agent",
|
||||
"previous_intent": "contas_contestation",
|
||||
},
|
||||
},
|
||||
"transaction_status": "OUT_OF_SCOPE",
|
||||
"transaction_pre_validation": {
|
||||
"status": "OUT_OF_SCOPE",
|
||||
"terminal": True,
|
||||
"error": "TIM CTRL Redes Sociais 8.0",
|
||||
},
|
||||
"mcp_results": [],
|
||||
}
|
||||
)
|
||||
|
||||
assert ctx["conversation_history"] == [
|
||||
{"role": "user", "content": "quais sao meus servicos"}
|
||||
]
|
||||
assert ctx["history_texts"] == ["quais sao meus servicos"]
|
||||
assert ctx["current_user_message"] == "quais sao meus servicos"
|
||||
assert ctx["current_route"] == "vas_agent"
|
||||
assert ctx["current_intent"] == "contas_vas_information"
|
||||
assert ctx["historical_transaction_ignored"] is True
|
||||
assert ctx["historical_transaction_status"] == "OUT_OF_SCOPE"
|
||||
assert "transaction_pre_validation" not in ctx
|
||||
assert "TIM CTRL Redes Sociais" not in str(ctx)
|
||||
|
||||
|
||||
def test_output_guardrail_context_preserva_historico_no_turno_terminal_sem_intent_shift():
|
||||
from app.workflows.agent_graph import AgentWorkflow
|
||||
|
||||
ctx = AgentWorkflow._output_guardrail_context(
|
||||
{
|
||||
"context": {},
|
||||
"history": [
|
||||
{"role": "user", "content": "nao contratei TIM CTRL Redes Sociais 8.0"},
|
||||
],
|
||||
"user_text": "o valor e 71,99",
|
||||
"route": "contestacao_agent",
|
||||
"intent": "state:COLLECTING_CONTESTACAO_PARAMETERS",
|
||||
"route_decision": {
|
||||
"route": "contestacao_agent",
|
||||
"intent": "state:COLLECTING_CONTESTACAO_PARAMETERS",
|
||||
"metadata": {},
|
||||
},
|
||||
"transaction_status": "OUT_OF_SCOPE",
|
||||
"transaction_pre_validation": {
|
||||
"status": "OUT_OF_SCOPE",
|
||||
"terminal": True,
|
||||
},
|
||||
"mcp_results": [],
|
||||
}
|
||||
)
|
||||
|
||||
assert ctx["history_texts"] == [
|
||||
"nao contratei TIM CTRL Redes Sociais 8.0",
|
||||
"o valor e 71,99",
|
||||
]
|
||||
assert "historical_transaction_ignored" not in ctx
|
||||
|
||||
|
||||
def test_vas_prompt_nao_expoe_capacidade_cancelamento_em_consulta_informativa():
|
||||
from pathlib import Path
|
||||
|
||||
prompt = Path("config/prompts/vas.yaml").read_text(encoding="utf-8")
|
||||
assert "não exponha capacidades transacionais" in prompt
|
||||
assert "can.cancel" in prompt
|
||||
assert '"Cancelamento disponível"' in prompt
|
||||
assert "a menos que o cliente tenha perguntado explicitamente" in prompt
|
||||
|
||||
Reference in New Issue
Block a user