ajuste no contas
This commit is contained in:
@@ -176,3 +176,58 @@ async def test_tim_aoferta_does_not_trust_non_terminal_workflow_handoff_flag():
|
||||
|
||||
assert llm.calls == 1
|
||||
assert decision.allowed is False
|
||||
|
||||
class _CaptureAllowLLM:
|
||||
def __init__(self):
|
||||
self.prompt = ''
|
||||
|
||||
async def ainvoke(self, messages, **kwargs):
|
||||
self.prompt = messages[-1]['content']
|
||||
return '{"allowed": true, "reason": ""}'
|
||||
|
||||
|
||||
@pytest.mark.asyncio
|
||||
async def test_tim_aoferta_terminal_fallback_receives_compact_authoritative_transaction_context():
|
||||
llm = _CaptureAllowLLM()
|
||||
huge = {'noise': 'x' * 50000}
|
||||
decision = await TimProactiveOfferRail().evaluate(
|
||||
'Não consegui cancelar o Paramount+ por aqui. Use o canal oficial para concluir esse mesmo cancelamento.',
|
||||
{
|
||||
'transaction_status': 'COMPLETED',
|
||||
'current_user_message': 'isso mesmo, pode cancelar',
|
||||
'conversation_history': [
|
||||
{'role': 'user', 'content': 'quero cancelar Tamboro e Paramount+'},
|
||||
{'role': 'assistant', 'content': 'Você confirma o cancelamento de Tamboro e Paramount+?'},
|
||||
{'role': 'user', 'content': 'isso mesmo, pode cancelar'},
|
||||
],
|
||||
'transaction_pre_validation': {
|
||||
'requested_arguments': {'subject': 'Tamboro e Paramount+'},
|
||||
'resolved_arguments': {'subject': 'Tamboro Mensal, Paramount+', 'items': [{'name': 'Tamboro Mensal'}, {'name': 'Paramount+'}]},
|
||||
'effective_tool_name': 'cancelar_vas_avulso',
|
||||
},
|
||||
'mcp_results': [
|
||||
huge,
|
||||
{
|
||||
'tool_name': 'cancelar_vas_avulso',
|
||||
'ok': True,
|
||||
'result': {
|
||||
'status': 'COMPLETED',
|
||||
'output': {
|
||||
'results': [
|
||||
{'subject': 'Tamboro Mensal', 'success': True},
|
||||
{'subject': 'Paramount+', 'success': False, 'reason': 'service_not_found'},
|
||||
]
|
||||
},
|
||||
},
|
||||
},
|
||||
],
|
||||
'guardrail_llm': llm,
|
||||
},
|
||||
)
|
||||
|
||||
assert decision.allowed is True
|
||||
assert decision.metadata['mechanism'] == 'llm_semantic_compact_transaction_context'
|
||||
assert 'Paramount+' in llm.prompt
|
||||
assert 'service_not_found' in llm.prompt
|
||||
assert 'isso mesmo, pode cancelar' in llm.prompt
|
||||
assert len(llm.prompt) < 30000
|
||||
|
||||
Reference in New Issue
Block a user