RoyAalekh's picture
refactored project structure. renamed scheduler dir to src
03a506a
### Control Module — Overrides and Explainability
Directory: `scheduler/control/`
This package houses the manual control plane that allows judges or operators to override algorithmic decisions and to inspect the reasoning behind suggestions.
#### Files overview
- `overrides.py`
- Purpose: Define override types, manage override drafts per cause list, validate changes, and collect judge preferences and audit trails.
- Key elements:
- `OverrideType` (Enum): categories like ripeness override, capacity change, add/remove case.
- `Override`: a single change request with metadata; `to_dict()`, `to_readable_text()` helpers.
- `JudgePreferences`: persistent preferences per judge; `to_dict()`.
- `CauseListDraft`: a draft editable list for a given date/courtroom/judge; exposes `get_acceptance_rate()` and `get_modifications_summary()`.
- `OverrideValidator`: validates requested changes; surface `get_errors()`; targeted validate methods for each override kind (ripeness, capacity, add/remove case).
- `OverrideManager`: creates drafts, applies overrides, finalizes drafts, fetches preferences, produces statistics, and exports an audit trail.
- Interactions: Consumed by `core/algorithm.py` to apply judge preferences and manual modifications before final allocation.
- `explainability.py`
- Purpose: Human‑readable explanations for why cases were selected or not.
- Typical content: utilities that convert ripeness/eligibility checks and policy scores into readable reasons for UI display and audit logs.
- Interactions: Used by dashboard pages and potentially during `SchedulingAlgorithm.schedule_day` explanation generation.