from __future__ import annotations from dataclasses import dataclass import pandas as pd from src.analytics import DecisionBrief @dataclass(frozen=True) class FilterState: """User-selected filters and analysis thresholds.""" preset: str domains: list[str] difficulties: list[str] scenario_types: list[str] retrievers: list[str] generators: list[str] splits: list[str] min_slice_n: int min_config_n: int @dataclass(frozen=True) class DashboardContext: """All derived tables required by the Streamlit pages.""" filtered_eval: pd.DataFrame filtered_retrieval: pd.DataFrame metrics: dict[str, float] brief: DecisionBrief risk_slices: pd.DataFrame retrieval_outcomes: pd.DataFrame demand_coverage: pd.DataFrame