| from support_triage_openenv.env import SupportTriageEnv |
| from support_triage_openenv.models import Action |
|
|
|
|
| def test_reset_and_state_cycle(): |
| env = SupportTriageEnv() |
| obs = env.reset("easy_password_reset") |
| assert obs.task_id == "easy_password_reset" |
| assert obs.step_count == 0 |
| state = env.state() |
| assert state["done"] is False |
|
|
|
|
| def test_easy_task_can_reach_high_score(): |
| env = SupportTriageEnv() |
| env.reset("easy_password_reset") |
| env.step(Action(action_type="read_ticket", ticket_id="T-1001")) |
| env.step( |
| Action( |
| action_type="classify_ticket", |
| ticket_id="T-1001", |
| priority="medium", |
| category="account", |
| needs_escalation=False, |
| ) |
| ) |
| env.step( |
| Action( |
| action_type="draft_reply", |
| message=( |
| "We will send a reset link to your email. For security, please confirm the request " |
| "from your device after receiving the reset link." |
| ), |
| ) |
| ) |
| _, reward, done, info = env.step(Action(action_type="resolve_ticket", ticket_id="T-1001")) |
| assert done is True |
| assert info["grader_score"] >= 0.9 |
| assert reward.value >= 0.9 |
|
|
|
|
| def test_invalid_ticket_penalty_and_done_guard(): |
| env = SupportTriageEnv() |
| env.reset("medium_billing_dispute") |
| _, reward, _, info = env.step(Action(action_type="read_ticket", ticket_id="NOT-REAL")) |
| assert reward.value < 0.5 |
| assert info["penalties"] |
|
|