Spaces:
Running
Running
| """Scenario loading utilities.""" | |
| from __future__ import annotations | |
| import json | |
| from pathlib import Path | |
| from typing import Optional | |
| from app.common.enums import Difficulty | |
| from app.common.types import PatientProfile | |
| from app.simulator.scenario_generator import generate_patient_scenario | |
| def _scenario_path(root: Path, difficulty: Difficulty, scenario_id: str) -> Path: | |
| return root / "data" / "scenarios" / difficulty.value / f"{scenario_id}.json" | |
| def load_or_generate_scenario( | |
| root: Path, | |
| difficulty: Difficulty, | |
| scenario_id: Optional[str], | |
| patient_id: Optional[str], | |
| seed: int, | |
| ) -> PatientProfile: | |
| if scenario_id: | |
| path = _scenario_path(root, difficulty, scenario_id) | |
| if path.exists(): | |
| payload = json.loads(path.read_text(encoding="utf-8")) | |
| return PatientProfile.model_validate(payload) | |
| return generate_patient_scenario(difficulty=difficulty, patient_id=patient_id, seed=seed) | |