File size: 787 Bytes
6bef416 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | 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
|