### Dashboard Module — Streamlit App and Pages Directory: `scheduler/dashboard/` The dashboard provides a Streamlit UI to explore data, inspect the ripeness classifier, run simulations, configure overrides, and view analytics/reports. #### Files overview - `app.py` - Purpose: Streamlit entrypoint that initializes navigation, shared state, and page routing. - Interactions: Uses helpers under `dashboard/utils/` to load data and run simulations; mounts pages under `dashboard/pages/`. - `__init__.py` - Purpose: Package initialization for the dashboard module. - `pages/1_Data_And_Insights.py` - Purpose: Data loading, cleaning summaries, EDA‑style insights and figures. - Inputs: parquet/CSV datasets and computed reports in `reports/figures/*`. - `pages/2_Ripeness_Classifier.py` - Purpose: Visualize and test `core.ripeness.RipenessClassifier` on sample cases; display reasons and thresholds. - Interactions: Can call into `RipenessClassifier.get_current_thresholds()` and `classify()`. - `pages/3_Simulation_Workflow.py` - Purpose: Configure and run simulation scenarios; display outputs (events, metrics, summaries). - Interactions: `dashboard/utils/simulation_runner.py`; backend `scheduler/simulation/engine.py`. - `pages/4_Cause_Lists_And_Overrides.py` - Purpose: Generate draft cause lists for a date; review/apply overrides; export finalized lists. - Interactions: `control/overrides.py` for `OverrideManager` and `CauseListDraft`. - `pages/6_Analytics_And_Reports.py` - Purpose: Aggregate analytics, charts, and report downloads; links to `reports/figures/*` and `outputs/simulation_runs/*`. - `utils/__init__.py` - Purpose: Package initialization for dashboard utilities. - `utils/data_loader.py` - Purpose: Load datasets and parameter files for use in the UI; cache artifacts for responsiveness. - Inputs: `Data/`, `reports/figures/*/params/*.csv`, and defaults in `scheduler/data/defaults/*`. - `utils/simulation_runner.py` - Purpose: Convenience layer to assemble `CourtSimConfig`, run the simulation, and collect outputs for display/download. - Interactions: `scheduler/simulation/engine.py` and policy modules. - `utils/ui_input_parser.py` - Purpose: Parse and validate user inputs from Streamlit widgets into typed configs/overrides.