"""
Few-shot CoT 示例库（学生改实验主要改这个文件）。

>>> 老师 / 学生找示例题：看本文件 FEW_SHOT_EXAMPLES（下面约第 25 行）
>>> 主题目不在这里，在 question.py 的 MAIN_QUESTION
>>> 更多说明：docs/项目说明.md 第二节「Few-shot 示例题」

每个示例都是一对 (user, assistant)：
  user      → 一道简单推理题
  assistant → 带完整思维链的标准回答（模型要模仿这种写法）

好的 Few-shot CoT 示例要满足：
  1. 题型和目标题相似（都是多步推理，而不是随便找个分类例子）
  2. assistant 里真的写出了「第一步 / 第二步 …」，不是只给答案
  3. 示例里要体现关键技巧（如：年龄差不变、先算中间量再汇总）
"""

from dataclasses import dataclass


@dataclass(frozen=True)
class FewShotExample:
    title: str
    user: str
    assistant: str
    teaching_point: str


FEW_SHOT_EXAMPLES: list[FewShotExample] = [
    FewShotExample(
        title="示例 1 · 数量变化（先加后答）",
        user="小明有 3 个苹果，又买了 2 个，他现在一共有几个苹果？",
        assistant="""第一步：明确已知条件
- 原有苹果：3 个
- 又买了：2 个

第二步：列出关系
总数 = 原有数量 + 新买数量

第三步：计算
3 + 2 = 5

最终答案：5 个苹果""",
        teaching_point="示范「先列条件 → 再列关系 → 最后计算」的三段式写法。",
    ),
    FewShotExample(
        title="示例 2 · 年龄差不变（课堂易错点预热）",
        user=(
            "当小红 8 岁时，她的弟弟年龄是她的一半。"
            "现在小红 20 岁了，请问弟弟现在几岁？"
        ),
        assistant="""第一步：明确已知条件
- 小红 8 岁时，弟弟是她的一半，即 8 ÷ 2 = 4 岁
- 年龄差 = 8 - 4 = 4 岁（弟弟比小红小 4 岁）
- 年龄差不会随时间改变

第二步：计算弟弟现在的年龄
小红现在 20 岁，弟弟仍比她小 4 岁
20 - 4 = 16 岁

最终答案：16 岁""",
        teaching_point=(
            "示范「半岁」不是永远一半，要先算年龄差；"
            "这是后面主题目最容易跳步的地方。"
        ),
    ),
]
