"""Full HTTP flow test: reset -> step -> step -> step -> state -> grader score.""" import httpx BASE = "http://127.0.0.1:8000" # Reset r = httpx.post(f"{BASE}/reset", json={"task_name": "basic-triage"}) assert r.status_code == 200, f"Reset failed: {r.status_code}" data = r.json() obs = data.get("observation", data) pid = obs.get("current_patient", {}).get("patient_id", "?") print(f"1. Reset OK: status={r.status_code}, patient={pid}") # Step 1: assign P001 as IMMEDIATE (correct) r = httpx.post(f"{BASE}/step", json={"action": { "action_type": "assign_priority", "patient_id": "P001", "priority_level": "immediate" }}) assert r.status_code == 200, f"Step 1 failed: {r.status_code} {r.text}" data = r.json() print(f"2. Step 1: reward={data.get('reward')}, done={data.get('done')}") # Step 2: assign P002 as NON_URGENT (correct) r = httpx.post(f"{BASE}/step", json={"action": { "action_type": "assign_priority", "patient_id": "P002", "priority_level": "non_urgent" }}) assert r.status_code == 200, f"Step 2 failed: {r.status_code}" data = r.json() print(f"3. Step 2: reward={data.get('reward')}, done={data.get('done')}") # Step 3: assign P003 as URGENT (correct) r = httpx.post(f"{BASE}/step", json={"action": { "action_type": "assign_priority", "patient_id": "P003", "priority_level": "urgent" }}) assert r.status_code == 200, f"Step 3 failed: {r.status_code}" data = r.json() print(f"4. Step 3: reward={data.get('reward')}, done={data.get('done')}") assert data.get("done") == True, "Should be done after all patients assigned" # State r = httpx.get(f"{BASE}/state") assert r.status_code == 200, f"State failed: {r.status_code}" state = r.json() print(f"5. State: assignments={state.get('assignments')}") # Verify via grader import sys; sys.path.insert(0, ".") from triage_flow.graders import grade_task score = grade_task("basic-triage", state) print(f"6. Grader score: {score}") assert score == 1.0, f"Expected 1.0, got {score}" print("\n=== FULL HTTP FLOW TEST PASSED ===")