"""统一样本模型：所有数据集适配器都产出 Sample，下游引擎/指标只认它。"""

from __future__ import annotations

from dataclasses import dataclass


@dataclass
class Sample:
    """一条评估样本。

    lang 取值约定（决定 breakdown 归类）：
      - "zh"    纯普通话
      - "en"    纯英文
      - "zh-en" 中英混说（code-switching，本框架重点）
    """

    id: str
    audio_path: str          # 16k/mono/16bit wav 优先；非此规格引擎侧会重采样
    ref_text: str            # 参考（标注）文本
    lang: str = "zh"
    domain: str = "general"
    dataset: str = "custom"

    @property
    def category(self) -> str:
        """报告里的粗分类。"""
        if self.lang == "zh-en":
            return "code-switch"
        if self.lang == "en":
            return "pure-en"
        return "pure-zh"
