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