# 题库 Excel 格式规范

与 `app/services/bank_io.py` 及项目根目录 `测试题库.xlsx` 一致。

## 工作表「题库」（元数据）

| 字段 | 值 |
|------|-----|
| 题库名称 | 根据资料推断的标题 |
| 分类 | 可选，默认「未分类」 |
| 说明 | 可选，如「基于资料自动生成 · N 道题」 |

## 工作表「题目」

| 列 | 字段 | 说明 |
|----|------|------|
| A | 序号 | 从 1 递增 |
| B | 题型 | 单选题 / 多选题 / 判断题 |
| C | 题干 | 必填，**仅题目正文**，不含「第 N 题」 |
| D–I | 选项A–F | 单选/多选至少 4 项；判断题 **A=正确、B=错误**（固定顺序，不打乱） |
| J | 答案 | 单选/多选：字母；判断：**A 或 B** |
| K | 解析 | 判断题格式：`答案：A（正确）。依据：……。` 与答案字段一致 |

## 题目顺序

导出时题型顺序固定为：

1. 单选题
2. 判断题
3. 多选题

## 出题约束（generate-question-bank）

- 由 **Cursor 对话框模型**阅读资料后生成 JSON，再经 `export_question_bank.py` 导出
- 题目、选项、答案、解析必须能在上传资料中找到依据
- 不得编造资料中不存在的事实
- 解析条理清晰，不冗余、不拓展无关内容
- **多选题**正确答案数量为 2～4 个（不必固定 3 个）
- **判断题**选项 A 固定「正确」、B 固定「错误」，不打乱；解析与 A/B 答案一致
- 单选/多选导出时随机打乱选项，并同步重建解析

## 规范约束（normalize-question-bank）

- 保留原题语义，仅转换格式
- 支持 Word / TXT / PDF / 非标准 Excel 中的文字题库
- 识别 `1.`、`A.`、`答案：`、`解析：` 等常见标记

## 支持的资料格式

`.pdf`、`.doc`、`.docx`、`.txt`、`.md`、`.xlsx`（解析逻辑见 `app/services/parser.py` 与 `bank_normalizer.py`）
