# 单元挑战全部题型 · 生产工作流总览

> 数据源：飞书 Wiki [【最新】单元挑战全部题型JSON结构说明](https://makee-interactive.feishu.cn/wiki/UUKtwRWQRiPw1Gko3R8cLVfUnCe)
> Bitable App Token: `CMHSbUUjka3TrUsaxxEc297ongf`

## 一、全部题型映射（20种）

### 听力类（6种）

| # | 题型 | type | 阶段 | Bitable表 | table_id | 技能文件 |
|---|------|------|------|-----------|----------|---------|
| 1 | 图片选择题 | `listening_choicePic` | L2 | 听力-P1-图片选择题 | `tbliZAhcc9C43B23` | `L2/listening-choicePic/SKILL.md` |
| 2 | 表格填空题 | `listening_tableCloze` | L2 | 听力-P2-表格填空题 | `tblzTLNH7f13uWQN` | `L2/listening_form_fill/SKILL.md` |
| 3 | 长对话选择 | `listening_choiceLong` | L2 | 听力-P3-长对话选择 | `tblgxsDn25oSq7WS` | `L2/listening_long_conversation/SKILL.md` |
| 4 | 短对话选择题 | `listening_choiceShort` | L2 | 听力-P4-短对话选择题 | `tblVmeDtBDKsAEfz` | `L2/listening_short_conversation/SKILL.md` |
| 5 | 信息匹配题 | `listening_matchInfo` | L2 | 听力-P5-信息匹配题 | `tblDssVmhGzc3UKd` | `L1+L2/listening_info_match/SKILL.md` |
| 6 | 听力拖拽 | `listening_drag` | L1 | 听力-P7-听力拖拽 | `tbly9SvPEa44k3yX` | `L1/listening-drag/SKILL.md` |

### 阅读类（7种）

| # | 题型 | type | 阶段 | Bitable表 | table_id | 技能文件 |
|---|------|------|------|-----------|----------|---------|
| 7 | 信息匹配题 | `reading_matchInfo` | L2 | 阅读-P1-信息匹配题 | `tblCgfYDnnqwLfgH` | `reading_info_match/SKILL.md` |
| 8 | 段落匹配题 | `reading_matchPara` | L2 | 阅读-P2-段落匹配题 | `tblEp820dnatNYbb` | `reading_paragraph_match/SKILL.md` |
| 9 | 长文选择题 | `reading_choiceLong` | L2 | 阅读-P3-长文选择题 | `tbl4q0ZUV3HB54t1` | `reading_long_passage/SKILL.md` |
| 10 | 完形填空题 | `reading_cloze` | L2 | 阅读-P4-完形填空题 | `tblzKVm1FEukPgnN` | `reading_cloze/SKILL.md` |
| 11 | 开放填空题 | `reading_openCloze` | L2 | 阅读-P5-开放填空题 | `tblLmUxzzUDe0QAJ` | `reading_open_fill/SKILL.md` |
| 12 | 看图判断题 | `reading_pic_judge` | L1&L2 | 阅读-P6-看图判断题 | `tblJc60aO0T163MJ` | `common/reading_pic_judge/SKILL.md` |
| 13 | 看图回答题 | `reading_pic_qa` | L1&L2 | 阅读-P7-看图回答题 | `tblweY65jGBiwSdt` | `common/reading_pic_qa/SKILL.md` |

### 写作类（3种）

| # | 题型 | type | 阶段 | Bitable表 | table_id | 技能文件 |
|---|------|------|------|-----------|----------|---------|
| 14 | 邮件回复 | `writing_email` | L2 | 写作-P1-邮件回复 | `tblszuk1TeToofBF` | `writing_email_reply/SKILL.md` |
| 15 | 看图写作 | `writing_picWrite` | L2 | 写作-P2-看图写作 | `tblSAwlMumKoyjws` | `writing_picture_writing/SKILL.md` |
| 16 | 看图回答 | `writing_pic_qa` | L1&L2 | 写作-P3-看图回答题 | `tblFc9TVl2PeM2tg` | `common/writing_pic_qa/SKILL.md` |

### 口语类（4种）

| # | 题型 | type | 阶段 | Bitable表 | table_id | 技能文件 |
|---|------|------|------|-----------|----------|---------|
| 17 | 日常问答 | `speaking_qa` | L1&L2 | 口语-P1-日常回答 | `tblRGv7k4WH58Jgq` | `common/speaking_daily_qa/SKILL.md` |
| 18 | 看图回答 | `speaking_pic_qa` | L1 | 口语-P3-看图回答 | `tblOHgNkNer2hGEp` | `L1/speaking_pic_qa/SKILL.md` |
| 19 | 话题讨论 | `speaking_topic` | L2 | 口语-P2-话题讨论 | `tblGoWYBmVI0IrvQ` | `L1+L2/speaking_topic/SKILL.md` |
| 20 | 看图识物 | `speaking_pic_recognize` | L1 | 口语-P4-看图识物 | `tblsD2dxaRpLmkXD` | `L1/speaking_pic_recognize/SKILL.md` |

## 二、通用生产流程

每类题型遵循统一流程：

```
用户输入（含触发关键词）→ 解析（题型type/知识点/难度/ID/题量/能力标签）
    → 读取对应 SKILL.md 确认JSON结构和规范
    → 设计题目（校核词汇大纲/句型库/难度匹配）
    → LLM生成完整jsonData
    → 写入多维表格（两阶段延迟策略：先空记录等30s → 再PUT jsonData）
    → 回读验证（题数+抽样Q1内容）
    → 生成图片描述（如题型需要）→ 回填 图片描述 列
    → 汇总交付
```

## 三、触发关键词体系

### 按题型 type 触发（精确匹配）
| type | 关键词 |
|------|--------|
| `listening_choicePic` | 听力图片选择 / listening choicePic / 听力P1 |
| `listening_tableCloze` | 听力表格填空 / listening tableCloze / 听力P2 |
| `listening_choiceLong` | 听力长对话 / listening choiceLong / 听力P3 |
| `listening_choiceShort` | 听力短对话 / listening choiceShort / 听力P4 |
| `listening_matchInfo` | 听力信息匹配 / listening matchInfo / 听力P5 |
| `listening_drag` | 听力拖拽 / listening drag / 听力P7 |
| `reading_matchInfo` | 阅读信息匹配 / reading matchInfo / 阅读P1 |
| `reading_matchPara` | 阅读段落匹配 / reading matchPara / 阅读P2 |
| `reading_choiceLong` | 阅读长文选择 / reading choiceLong / 阅读P3 |
| `reading_cloze` | 阅读完形填空 / reading cloze / 阅读P4 |
| `reading_openCloze` | 阅读开放填空 / reading openCloze / 阅读P5 |
| `reading_pic_judge` | 阅读看图判断 / reading pic judge / 看图判断题 / 阅读P6 |
| `reading_pic_qa` | 阅读看图回答 / reading pic qa / 看图回答题 / 阅读P7 |
| `writing_email` | 写作邮件 / writing email / 邮件回复 / 写作P1 |
| `writing_picWrite` | 写作看图写作 / writing picWrite / 看图写作 / 写作P2 |
| `writing_pic_qa` | 写作看图回答 / writing pic qa / 写作P3 |
| `speaking_qa` | 口语日常问答 / speaking qa / 口语P1 |
| `speaking_pic_qa` | 口语看图回答 / speaking pic qa / 口语P3 |
| `speaking_topic` | 口语话题讨论 / speaking topic / 口语P2 |
| `speaking_pic_recognize` | 口语看图识物 / speaking pic recognize / 口语P4 |

## 四、生产请求标准格式

用户提供以下信息即可触发自动生产：

```
题型：{type 或 中文名}
ID：{questionSetID}
级别：L1/L2
难度：A/B/C/D
能力标签：{逗号分隔}
题组1知识点：{逗号分隔}
题组2知识点：{逗号分隔}（如适用）
```

## 五、Bitable 写入策略（通用）

所有表均存在自动化覆盖问题，统一使用两阶段延迟写入：

1. **删除旧记录** → 清理同ID的损坏记录
2. **创建空记录** → 仅写入 `题目集合ID` + `dataStatus`
3. **等待30秒** → 让自动化完成模板覆写
4. **PUT jsonData** → 写入完整 JSON
5. **等待 >10秒** → 最终回读验证
6. **抽样检查** → Q1 内容是否匹配（确认未被自动化替换为空壳）

## 六、参考：各题型JSON结构特点

### 听力类
- **choicePic**: questionSet[].question + questionAudio + optionsImage[] + answer[]
- **tableCloze**: textTitle + textBody(含[0][1]占位) + textDesc + textAudio + questionSet[].options[] + answer[]
- **choiceLong**: textDesc + textAudio + questionSet[].question + options[] + answer[]
- **choiceShort**: questionSet[].question + questionAudio + questionDesc + options[] + answer[]
- **matchInfo**: textTitle + textBody(含[0][1]占位) + textDesc + textAudio + optionSetTitle + optionSetList[] + answerSet[]
- **drag**: textDesc + textAudio + questionSet[].answer[] + imageInfo + optionList[]

### 阅读类
- **matchInfo**: questionSet[].questionImage + question + options[] + answer[]
- **matchPara**: textTitle + textBody + questionSet[].question + options[] + answer[]
- **choiceLong**: textTitle + textSubtitle + textBody + questionSet[].question + options[] + answer[]
- **cloze**: textTitle + textBody(含[0][1]占位) + questionSet[].options[] + answer[]
- **openCloze**: textTitle + textBody(含[0][1]占位) + questionSet[].options[] + answer[]
- **pic_judge**: 使用 first/second 包裹，每组含 textTitle + textImage + questionSet[].question + answerText(Yes/No)
- **pic_qa**: 使用 first/second 包裹，每组含 textTitle + textImage + questionSet[].question + answerText(Yes/No)

### 写作类
- **email**: textDesc + optionSetList[] + answerSet[]
- **picWrite**: textDesc + textImage + optionSetList[] + answerSet[]
- **pic_qa**: questionSet[].questionImage + questionList[].question + questionDesc + answerText

### 口语类
- **qa**: asrPrompt + textDesc + questionSet[].content
- **pic_qa**: asrPrompt + textDesc + textImage + imageDesc + questionSet[].content
- **topic**: asrPrompt + textDesc + textImage + imageDesc + questionSet[].content
- **pic_recognize**: asrPrompt + textTitle + questionSet[].question + questionImage + imageDesc

## 七、已生产记录

### reading_pic_qa（2026-05-11）
- 000001, 010101, 010201, 010301, 010401, 010501, 010601（7套 L2 A级）
- 含图片描述
- 脚本：`scripts/batch_reading_pic_qa.py`、`scripts/batch_create_delayed.py`、`scripts/update_image_descriptions.py`
