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.