Spaces:
Running
Running
Saibalaji Namburi
fix(lint): resolve ruff code formatting and unused import warnings in tests
6d2b394 | from src.agent.supervisor import run_triage, resume_triage | |
| from src.agent.schemas import TriageOutput | |
| def test_successful_direct_triage_no_hitl(): | |
| """Verify a standard, non-critical, clear support ticket bypasses HITL and completes directly.""" | |
| ticket = { | |
| "ticket_id": "TKT-TEST-001", | |
| "body": "Where can I find the documentation for configuring SSO on our system?", | |
| "customer_id": "cust-docs-12", | |
| "tenant_id": "acme-corp", | |
| "customer_tier": "professional" | |
| } | |
| output = run_triage(ticket, thread_id="thread-direct-ok") | |
| assert isinstance(output, TriageOutput) | |
| assert output.category == "docs" | |
| assert output.priority == "low" | |
| assert output.routing_team == "support" | |
| assert output.hitl_required is False | |
| assert output.hitl_reason is None | |
| assert output.sla_breach_risk < 0.40 | |
| assert output.confidence >= 0.70 | |
| assert len(output.summary) >= 10 | |
| assert len(output.suggested_resolution) >= 10 | |
| def test_hitl_triggered_due_to_security_policy(): | |
| """Verify security category tickets are automatically paused for human compliance review.""" | |
| ticket = { | |
| "ticket_id": "TKT-SEC-002", | |
| "body": "URGENT: We discovered a potential database vulnerability leaking auth tokens", | |
| "customer_id": "cust-sec-99", | |
| "tenant_id": "globex-inc", | |
| "customer_tier": "enterprise" | |
| } | |
| output = run_triage(ticket, thread_id="thread-sec-hitl") | |
| assert isinstance(output, TriageOutput) | |
| assert output.category == "security" | |
| assert output.priority == "critical" | |
| # Enterprise VIP critical is escalated to escalation or security | |
| assert output.routing_team == "escalation" | |
| assert output.hitl_required is True | |
| assert "Security compliance" in output.hitl_reason | |
| assert output.sla_breach_risk > 0.80 | |
| def test_hitl_triggered_due_to_low_confidence(): | |
| """Verify extremely short tickets trigger HITL due to low confidence penalty.""" | |
| ticket = { | |
| "ticket_id": "TKT-SHORT-003", | |
| "body": "broken", | |
| "customer_id": "cust-short", | |
| "tenant_id": "acme-corp", | |
| "customer_tier": "free" | |
| } | |
| output = run_triage(ticket, thread_id="thread-short-hitl") | |
| assert isinstance(output, TriageOutput) | |
| assert output.hitl_required is True | |
| assert "Low confidence" in output.hitl_reason | |
| assert output.confidence < 0.65 | |
| def test_human_override_and_resume(): | |
| """Verify human operators can apply overrides (corrections) and successfully resume the graph from interruption.""" | |
| ticket = { | |
| "ticket_id": "TKT-OVERRIDE-004", | |
| "body": "Database credentials exposed on public forum", | |
| "customer_id": "cust-leak", | |
| "tenant_id": "acme-corp", | |
| "customer_tier": "professional" | |
| } | |
| thread_id = "thread-override-test" | |
| # 1. First run: triggers HITL due to security compliance | |
| initial_output = run_triage(ticket, thread_id=thread_id) | |
| assert initial_output.hitl_required is True | |
| assert initial_output.category == "security" | |
| # 2. Operator reviews and decides to route to 'security' team with confidence=1.0 and hitl_required=False | |
| overrides = { | |
| "category": "security", | |
| "routing_team": "security", | |
| "confidence": 1.0, | |
| "hitl_required": False, | |
| "hitl_reason": None | |
| } | |
| final_output = resume_triage(thread_id, overrides=overrides) | |
| assert isinstance(final_output, TriageOutput) | |
| assert final_output.category == "security" | |
| assert final_output.routing_team == "security" | |
| assert final_output.confidence == 1.0 | |
| assert final_output.hitl_required is False | |
| assert final_output.hitl_reason is None | |
| def test_multilingual_triage_routing(): | |
| """Verify non-English (e.g. German) support tickets are routed correctly and yield native translations.""" | |
| ticket = { | |
| "ticket_id": "TKT-DE-005", | |
| "body": "Konto gesperrt. Ich kann mich nicht mehr einloggen und brauche Hilfe beim Zurücksetzen meines Passworts.", | |
| "customer_id": "cust-de", | |
| "tenant_id": "acme-corp", | |
| "customer_tier": "professional" | |
| } | |
| output = run_triage(ticket, thread_id="thread-german-ok") | |
| assert isinstance(output, TriageOutput) | |
| # German keywords for login/account block map to auth category | |
| assert output.category == "auth" | |
| # Under heuristics, priority is high | |
| assert output.priority == "high" | |