# 2026-05-25 工作日志

## 组件配置 pipeline：单独重试 cId=1217214
- [童瑶] 请求单独重试 pipeline 中的失败组件 cId=1217214（听力拖拽 / core_listening_drag）
- 根因：doubao 模型在 Step 5/7 (dialogList) 中反复输出中文冒号 `"trans："` 而非 `"trans":`
- 修复：在 `business_production/组件配置/interactive-component-json/scripts/llm_client.py` 的 `call_for_json()` 中添加 `_fix_llm_json_errors()` 自动修复函数（中文冒号、尾部逗号），最多重试 3 次
- 结果：cId=1217214 重新生成成功，component_id=1092，7/7 步骤全部通过
- HTML 报告已通过飞书 Bot 发送给 gc9f72ff（童瑶），包含全部 17 个组件
- Wiki URL: `https://makee-interactive.feishu.cn/wiki/IhDYwITBfii8cxkWsG1c0JWHnQh`
- Script ID: `IUJGdZS98oKbLix5zZ4cramQnke`

## 英文台词生产：L1-S2-U19-L1 客厅游戏
- [童瑶] 请求对 `https://makee-interactive.feishu.cn/wiki/XoGZwgrRMiGk9vkYNWmcegs9nyh` 执行英文台词生产
- 文档标题：L1-S2-U19-L1 客厅游戏
- 文档表格结构：3 列表格（场景编号 | 场景名称 | 剧本内容），共 5 行数据
- 该文档的表结构（列名：'开场'/' '/ '/'）与 gen_script.py feishu 模式默认期望的"中文台词"/"英文台词"列名不匹配
- 尝试用 `--source-col '/'`（匹配 Col 2 剧本内容列）运行 pipeline，等级 S2
- LLM 配置：OpenAI SDK → volcano ark endpoint `https://ark.cn-beijing.volces.com/api/v3`，API KEY `32994652-505c-492b-b6da-616ec5c5733c`，model `ep-m-20260301164317-vmmj4`
- 脚本路径：`business_production/英文台词/skills/kids-english-script-production/scripts/gen_script.py`

### 英文台词生产完成结果
- 文档 `L1-S2-U19-L1 客厅游戏` 5 个场景的 S2 英文台词已生成
- 结果保存到：`business_production/英文台词/output/L1-S2-U19-L1_英语台词.txt`
- 修改了 gen_script.py：timeout 60→180，添加 `extra_body={"thinking":{"type":"disabled"}}`
- 已知问题：Scene 3 部分台词角色名显示为"角色:"（LLM 输出瑕疵）；飞书表格无"英文台词"列无法自动写回
- 需要童瑶在 wiki 表格中手动添加"英文台词"列后才能实现自动写回

### 英文台词 Sheet 写回（2026-05-25 补充）
- [童瑶] 提供新文档链接 `https://makee-interactive.feishu.cn/wiki/UvDWwW4LSi8bfGkVUshcoehWnGd`（副本），文档内含嵌入式 Sheet
- Sheet token: `VgPwsodzthsk9Vti8GocrbH2nEe`，sheet_id: `wMQVyV`
- Sheet 列结构：类型/配置信息/剧情描述/角色名/编剧台词/**英文台词**/组件配置/知识点
- 95 行对话需要写入 F 列（英文台词）：55 行简单台词（≤5词）直接复制原英文，40 行复杂台词经 pipeline 处理
- ⚠️ gen_script.py pipeline 对纯英文输入的适配效果不佳（严重偏离原文语义，如"Really? You don't have to work today?"→"Is that a fun story?"）
- 最终方案：40 行复杂台词回退为原文直接复制，避免 pipeline 输出偏离
- 写入方法：飞书 Sheets v2 API `PUT values`，range 格式 `sheetId!F{row}:F{row}`
- 脚本：`business_production/英文台词/scripts/batch_write_english.py`

### 英文台词 Sheet 写回：来自 Vala 的包裹（2026-05-25）
- [童瑶] 新文档 `https://makee-interactive.feishu.cn/wiki/IzJ5w0jMziLe7tk1kPdcYozdnyg`（来自Vala的包裹）
- Sheet: `OFUwsmNcjhVaRZtFz5rcI9nTnCo` / `wMQVyV`，119 行对话全部 F 列为空
- 改进方案：**放弃 gen_script.py pipeline**（上次纯英文输入偏离严重），改用**直接 LLM 简化 prompt**
  - Prompt 核心：保留原文语义的前提下，简化句长≤8词、替换难词、拆分长句
  - 65 行简单台词（≤5词）直接复制原文，54 行复杂台词走 LLM 简化
  - 效果显著优于 pipeline："Dear, there is something I must tell you."→"Hey, I have something to tell you." 语义完整保留
- 脚本：`business_production/英文台词/scripts/batch_simplify_and_write.py`
- 经验：纯英文→S2 简化用直接 LLM prompt 比 gen_script pipeline 更准确

## 写作P1 16条解析简化输出 [刘彦江]
- [刘彦江] 要求将写作P1 021301~032901共16条ID的explanation简化
- 标准：先称呼→按写作要求匹配正文→最后署名，格式类似"先称呼Dear Lucy，再按三个要求匹配正文：相册失踪对应...在哪丢的对应...请求帮忙找对应...最后署名"
- 已逐条输出15条解析（021301按样例略过），列表：021401, 021501, 021701, 021801, 021901, 022001, 022101, 022201, 022301, 022401, 032501, 032601, 032701, 032801, 032901
- 022101特殊：按故事逻辑排列（非写作要求匹配），因该题无编号要求而是按叙事顺序排列句子

## L1/L2 能力图谱梳理 [刘彦江] ⏳待确认
- [刘彦江] 分享了wiki文档 https://makee-interactive.feishu.cn/wiki/TFB9wJm4IilkCekyFdzcc42on6d
- 要求：梳理L1 6阶段+L2 8阶段听说读写tag类型和考点，在@刘彦江的位置输出方案
- 已输出四部分方案框架（见对话），用户尚未确认：
  1. 各阶段听/说/读/写能力分布表格（汇总表 + 14阶段×4科目tag）
  2. 单项目卡描述（≤100字，4条分别覆盖听/说/读/写）
  3. 能力考察项（小标题≤12字，每条≤70字，总≤280字，以听力Movers为例）
  4. 单能力项描述（≤210字，以"单句信息点抓取"为例）
- 待用户确认格式和内容方向后，再写入文档

## 能力图谱固定文案回填完成 [刘彦江]
- 文档: https://makee-interactive.feishu.cn/wiki/W5Vjw2fLiiCqfck0Mfzc0xkrnte
- 严格按照L1/L2阶段分配文档的"阶段目标"描述
- 回填内容:
  - L1: 阶段1听口 / 阶段2听口阅 / 阶段3-6听口阅写
  - L2: 阶段1-8听口阅写
- 各阶段描述均对齐文档设定的阶段目标（如L1阶段1:基础字母识别关键词抓取, 阶段3:数字/时间细节抓取同义替换识别等）
- 格式: 每阶段下听力/口语/阅读/写作各一段≤210字描述
## 能力图谱考察项文档写入完成 [刘彦江] ✅已完成
- 文档: https://makee-interactive.feishu.cn/wiki/W5Vjw2fLiiCqfck0Mfzc0xkrnte (考察项描述目录)
- 14 阶段 14 张表全部填充：L1 阶段1-6 + L2 阶段1-8
- 考察项格式：考察项名称 + 描述，不标注题型来源（括号内Part编号等）
- 表格格式：3列（单项 / 考察项 / 考察项描述），单项列使用rowspan合并

### 生产数据 vs 设计文档的差异
- **设计文档不可信**：L1/L2 阶段分配文档（Jjd8wghbeidXt2kDFaPcU09wnzc / D9EFwVC9Gi9nCAk4heec2qYCnwe）与实际生产不一致
- 实际生产数据来源：生产文档「单元挑战旧题目解析待补充 ID 整理」(CS8Ww2XaSiFwhakQenycRU5ZnYf)
- Part→题型映射来源于多维表格 (App Token: CMHSbUUjka3TrUsaxxEc297ongf)
- 关键差异：L1阶段1实际有阅读(P7)和写作(P3)，不是设计文档声称的「仅听力+口语」
- 生产数据覆盖范围有限：L1 仅到 ~U33 (032901)，L2 仅到 ~U16 (121601)
- 无生产数据的阶段（L1阶段5-6, L2阶段4-8）使用设计文档 + 题型递进规律推算

### 飞书 lark-table 写入注意事项
- rowspan 在飞书 markdown 回写时会被自动剥离
- 表格写入后单项列会逐行重复显示而非合并单元格（飞书原生限制）
- 写入前需 extract 原始文档的 S1 表格，再与生成的新表格拼接后 overwrite

### Part→题型映射速查（来自多维表格 CMHSbUUjka3TrUsaxxEc297ongf）
- 听力: P1=图片选择题, P2=表格填空题, P3=长对话选择, P4=短对话选择题, P5=信息匹配题, P7=听力拖拽
- 口语: P1=日常回答, P2=话题讨论, P3=看图回答, P4=看图识物
- 阅读: P1=信息匹配题, P2=段落匹配题, P3=长文选择题, P4=完形填空题, P5=开放填空题, P6=看图判断题, P7=看图回答题
- 写作: P1=邮件回复, P2=看图写作, P3=看图回答题

## 童瑶反馈：小研使用问题记录 [童瑶] ⚠️待改进
- 来源：群聊 oc_aed6c8ed8c59653aca4fabc8cf3a8516，2026-05-25 17:52

### 任务1：英文台词生产
- **问题**：有概率读取不到剧本、或回填不到【英文台词】列
- **当前 workaround**：重复任务+明确位置，告诉它「本文档包含嵌入式Sheet」「F列是英文台词」

### 任务2：组件生产
- **问题1**：有概率回填不到【组件配置】列
- **问题2**：核心互动无法读取，需要人工写入

### 任务3：组件配置-json
- **问题1**：只发指令不指定 skill 时，会混淆任务2（组件生产）和任务3（组件配置-json）
- **问题2**：单一组件执行失败后，重生整体关卡组件时推送报错

## 能力图谱考察项：题型名 → 技能点描述 改写完成 [刘彦江] ✅
- 刘彦江确认改为技能点描述风格，逐条改写
- 14 阶段 4 科目全部重写，目标文档: `W5Vjw2fLiiCqfck0Mfzc0xkrnte`
- L2 阶段1-2 阅读/写作从"无"补为实际技能点（刘彦江确认"L2 阶段1-2 阅读和写作都是有题型的"）
- L1 阶段1 阅读/写作也从"无"补为实际技能点
- 0 个"无"，全量覆盖
- 生成脚本: `tmp/build_skill_points.py`

## 生产覆盖范围修正 [刘彦江]
- L1 生产到 **U16**（非 U33）
- L2 生产到 **U29**（非 U16）
- 已同步更新 `business_knowledge/单元挑战全貌.md`

## 单元挑战全貌文档 [刘彦江]
- 创建 `business_knowledge/单元挑战全貌.md`
- 覆盖九大板块：业务定位、阶段划分、题型体系（18种）、能力标签（45个）、生产流程（ID规则/标准/写入陷阱）、审校体系（7+4项检查）、生产覆盖现状、模块关联、快速链接

## L1/L2 难度等级映射 [刘彦江] ✅已确认
- L1-A: Starters入门+基础 (U1-U16) | L1-B: Starters达标 (U17-U24) | L1-C: Movers入门+基础 (U25-U40) | L1-D: Movers达标 (U41-U48)
- L2-A: Flyers入门+基础 (U1-U12) | L2-B: Flyers达标 (U13-U18) | L2-C: KET入门+基础 (U19-U30) | L2-D: KET强化+高位+达标 (U31-U48)
- 已写入 `business_knowledge/单元挑战全貌.md` §5.3
# 2026-05-25 工作日志

## 组件配置 pipeline：单独重试 cId=1217214
- [童瑶] 请求单独重试 pipeline 中的失败组件 cId=1217214（听力拖拽 / core_listening_drag）
- 根因：doubao 模型在 Step 5/7 (dialogList) 中反复输出中文冒号 `"trans："` 而非 `"trans":`
- 修复：在 `business_production/组件配置/interactive-component-json/scripts/llm_client.py` 的 `call_for_json()` 中添加 `_fix_llm_json_errors()` 自动修复函数（中文冒号、尾部逗号），最多重试 3 次
- 结果：cId=1217214 重新生成成功，component_id=1092，7/7 步骤全部通过
- HTML 报告已通过飞书 Bot 发送给 gc9f72ff（童瑶），包含全部 17 个组件
- Wiki URL: `https://makee-interactive.feishu.cn/wiki/IhDYwITBfii8cxkWsG1c0JWHnQh`
- Script ID: `IUJGdZS98oKbLix5zZ4cramQnke`

## 英文台词生产：L1-S2-U19-L1 客厅游戏
- [童瑶] 请求对 `https://makee-interactive.feishu.cn/wiki/XoGZwgrRMiGk9vkYNWmcegs9nyh` 执行英文台词生产
- 文档标题：L1-S2-U19-L1 客厅游戏
- 文档表格结构：3 列表格（场景编号 | 场景名称 | 剧本内容），共 5 行数据
- 该文档的表结构（列名：'开场'/' '/ '/'）与 gen_script.py feishu 模式默认期望的"中文台词"/"英文台词"列名不匹配
- 尝试用 `--source-col '/'`（匹配 Col 2 剧本内容列）运行 pipeline，等级 S2
- LLM 配置：OpenAI SDK → volcano ark endpoint `https://ark.cn-beijing.volces.com/api/v3`，API KEY `32994652-505c-492b-b6da-616ec5c5733c`，model `ep-m-20260301164317-vmmj4`
- 脚本路径：`business_production/英文台词/skills/kids-english-script-production/scripts/gen_script.py`

### 英文台词生产完成结果
- 文档 `L1-S2-U19-L1 客厅游戏` 5 个场景的 S2 英文台词已生成
- 结果保存到：`business_production/英文台词/output/L1-S2-U19-L1_英语台词.txt`
- 修改了 gen_script.py：timeout 60→180，添加 `extra_body={"thinking":{"type":"disabled"}}`
- 已知问题：Scene 3 部分台词角色名显示为"角色:"（LLM 输出瑕疵）；飞书表格无"英文台词"列无法自动写回
- 需要童瑶在 wiki 表格中手动添加"英文台词"列后才能实现自动写回

### 英文台词 Sheet 写回（2026-05-25 补充）
- [童瑶] 提供新文档链接 `https://makee-interactive.feishu.cn/wiki/UvDWwW4LSi8bfGkVUshcoehWnGd`（副本），文档内含嵌入式 Sheet
- Sheet token: `VgPwsodzthsk9Vti8GocrbH2nEe`，sheet_id: `wMQVyV`
- Sheet 列结构：类型/配置信息/剧情描述/角色名/编剧台词/**英文台词**/组件配置/知识点
- 95 行对话需要写入 F 列（英文台词）：55 行简单台词（≤5词）直接复制原英文，40 行复杂台词经 pipeline 处理
- ⚠️ gen_script.py pipeline 对纯英文输入的适配效果不佳（严重偏离原文语义，如"Really? You don't have to work today?"→"Is that a fun story?"）
- 最终方案：40 行复杂台词回退为原文直接复制，避免 pipeline 输出偏离
- 写入方法：飞书 Sheets v2 API `PUT values`，range 格式 `sheetId!F{row}:F{row}`
- 脚本：`business_production/英文台词/scripts/batch_write_english.py`

### 英文台词 Sheet 写回：来自 Vala 的包裹（2026-05-25）
- [童瑶] 新文档 `https://makee-interactive.feishu.cn/wiki/IzJ5w0jMziLe7tk1kPdcYozdnyg`（来自Vala的包裹）
- Sheet: `OFUwsmNcjhVaRZtFz5rcI9nTnCo` / `wMQVyV`，119 行对话全部 F 列为空
- 改进方案：**放弃 gen_script.py pipeline**（上次纯英文输入偏离严重），改用**直接 LLM 简化 prompt**
  - Prompt 核心：保留原文语义的前提下，简化句长≤8词、替换难词、拆分长句
  - 65 行简单台词（≤5词）直接复制原文，54 行复杂台词走 LLM 简化
  - 效果显著优于 pipeline："Dear, there is something I must tell you."→"Hey, I have something to tell you." 语义完整保留
- 脚本：`business_production/英文台词/scripts/batch_simplify_and_write.py`
- 经验：纯英文→S2 简化用直接 LLM prompt 比 gen_script pipeline 更准确

### 英文台词 Sheet 写回：L1-S2-U19-L3 烛光大餐（2026-05-25）
- [童瑶] `https://makee-interactive.feishu.cn/wiki/WthGwzolCiv6gxkotzociQDUn3b`
- 文档含 2 个嵌入式 Sheet，剧本在第二个 Sheet `GgGGtp`（128 行对话）
- 129 行对话：73 简单 + 56 复杂，全部写入 F 列
- Sheet token: `Mv2GsM0Zshk8Xdt5ko4cf8hwnvd` / `GgGGtp`

### 英文台词 Sheet 写回：L1-S2-U19-L4 明天见（2026-05-25）
- [童瑶] `https://makee-interactive.feishu.cn/wiki/NhNowRCoriHcedkfY1Bcz1z5ncg`
- 93 行对话：44 简单 + 49 复杂，全部写入 F 列
- Sheet token: `J5FEsRvREh40PSt6jq0cwVPnCQ` / `wMQVyV`

### 英文台词 Sheet 写回：L1-S2-U19-L5 星际通讯（2026-05-25）
- [童瑶] `https://makee-interactive.feishu.cn/wiki/Koh3wKGx5idh9JkrZxJcJDfRnoe`
- 153 行对话：89 简单 + 64 复杂，全部写入 F 列
- Sheet token: `UK7ms9UrdhJllftVOaOc4r4envg` / `wMQVyV`

### S2-U19 英文台词生产汇总
| 文档 | 行数 | 简单 | 复杂 | Sheet token |
|------|------|------|------|-------------|
| L1 客厅游戏 | 95 | 55 | 40 | VgPwsodzthsk9Vti8GocrbH2nEe/wMQVyV |
| L2 来自 Vala 的包裹 | 119 | 65 | 54 | OFUwsmNcjhVaRZtFz5rcI9nTnCo/wMQVyV |
| L3 烛光大餐 | 129 | 73 | 56 | Mv2GsM0Zshk8Xdt5ko4cf8hwnvd/GgGGtp |
| L4 明天见 | 93 | 44 | 49 | J5FEsRvREh40PSt6jq0cwVPnCQ/wMQVyV |
| L5 星际通讯 | 153 | 89 | 64 | UK7ms9UrdhJllftVOaOc4r4envg/wMQVyV |
| **合计** | **589** | **326** | **263** | |

- 方法：复杂台词用直接 LLM simplify prompt（保留语义+简化句长≤8词），简单台词（≤5词无从句）直接复制
- ⚠️ 首个文档（客厅游戏）复杂台词回退为原文复制（pipeline 偏离），后续 4 个文档全部用 LLM 简化方案

## 知识库文档移除
- [童瑶] 请求移除 `https://makee-interactive.feishu.cn/wiki/BR54wB9IWiWIjykyJzDc4cKFnlc`
- 文档：L1-S2-U23-L3 剧本 · 开场（doc_id: GNl2dAiSPoX4ZXxbwOrcTHZmnHf）
- 知识库：Content Universe（space_id: 7412143055920414722）
- ⚠️ 飞书 Wiki V2 DELETE API 存在 bug：query param `obj_type=docx` 始终报 99992402 "obj_type is required"
- 替代方案：用飞书 Drive API `DELETE /open-apis/drive/v1/files/{doc_token}?type=docx` 删除文件（不归入回收站）
- 验证：删除后再次查询 node → 131005 "not found"，确认已移除

## 写作P1 16条解析简化输出 [刘彦江]
- [刘彦江] 要求将写作P1 021301~032901共16条ID的explanation简化
- 标准：先称呼→按写作要求匹配正文→最后署名，格式类似"先称呼Dear Lucy，再按三个要求匹配正文：相册失踪对应...在哪丢的对应...请求帮忙找对应...最后署名"
- 已逐条输出15条解析（021301按样例略过），列表：021401, 021501, 021701, 021801, 021901, 022001, 022101, 022201, 022301, 022401, 032501, 032601, 032701, 032801, 032901
- 022101特殊：按故事逻辑排列（非写作要求匹配），因该题无编号要求而是按叙事顺序排列句子

## L1/L2 能力图谱梳理 [刘彦江] ⏳待确认
- [刘彦江] 分享了wiki文档 https://makee-interactive.feishu.cn/wiki/TFB9wJm4IilkCekyFdzcc42on6d
- 要求：梳理L1 6阶段+L2 8阶段听说读写tag类型和考点，在@刘彦江的位置输出方案
- 已输出四部分方案框架（见对话），用户尚未确认：
  1. 各阶段听/说/读/写能力分布表格（汇总表 + 14阶段×4科目tag）
  2. 单项目卡描述（≤100字，4条分别覆盖听/说/读/写）
  3. 能力考察项（小标题≤12字，每条≤70字，总≤280字，以听力Movers为例）
  4. 单能力项描述（≤210字，以"单句信息点抓取"为例）
- 待用户确认格式和内容方向后，再写入文档

## 能力图谱固定文案回填完成 [刘彦江]
- 文档: https://makee-interactive.feishu.cn/wiki/W5Vjw2fLiiCqfck0Mfzc0xkrnte
- 严格按照L1/L2阶段分配文档的"阶段目标"描述
- 回填内容:
  - L1: 阶段1听口 / 阶段2听口阅 / 阶段3-6听口阅写
  - L2: 阶段1-8听口阅写
- 各阶段描述均对齐文档设定的阶段目标（如L1阶段1:基础字母识别关键词抓取, 阶段3:数字/时间细节抓取同义替换识别等）
- 格式: 每阶段下听力/口语/阅读/写作各一段≤210字描述
## 能力图谱考察项文档写入完成 [刘彦江] ✅已完成
- 文档: https://makee-interactive.feishu.cn/wiki/W5Vjw2fLiiCqfck0Mfzc0xkrnte (考察项描述目录)
- 14 阶段 14 张表全部填充：L1 阶段1-6 + L2 阶段1-8
- 考察项格式：考察项名称 + 描述，不标注题型来源（括号内Part编号等）
- 表格格式：3列（单项 / 考察项 / 考察项描述），单项列使用rowspan合并

### 生产数据 vs 设计文档的差异
- **设计文档不可信**：L1/L2 阶段分配文档（Jjd8wghbeidXt2kDFaPcU09wnzc / D9EFwVC9Gi9nCAk4heec2qYCnwe）与实际生产不一致
- 实际生产数据来源：生产文档「单元挑战旧题目解析待补充 ID 整理」(CS8Ww2XaSiFwhakQenycRU5ZnYf)
- Part→题型映射来源于多维表格 (App Token: CMHSbUUjka3TrUsaxxEc297ongf)
- 关键差异：L1阶段1实际有阅读(P7)和写作(P3)，不是设计文档声称的「仅听力+口语」
- 生产数据覆盖范围有限：L1 仅到 ~U33 (032901)，L2 仅到 ~U16 (121601)
- 无生产数据的阶段（L1阶段5-6, L2阶段4-8）使用设计文档 + 题型递进规律推算

### 飞书 lark-table 写入注意事项
- rowspan 在飞书 markdown 回写时会被自动剥离
- 表格写入后单项列会逐行重复显示而非合并单元格（飞书原生限制）
- 写入前需 extract 原始文档的 S1 表格，再与生成的新表格拼接后 overwrite

### Part→题型映射速查（来自多维表格 CMHSbUUjka3TrUsaxxEc297ongf）
- 听力: P1=图片选择题, P2=表格填空题, P3=长对话选择, P4=短对话选择题, P5=信息匹配题, P7=听力拖拽
- 口语: P1=日常回答, P2=话题讨论, P3=看图回答, P4=看图识物
- 阅读: P1=信息匹配题, P2=段落匹配题, P3=长文选择题, P4=完形填空题, P5=开放填空题, P6=看图判断题, P7=看图回答题
- 写作: P1=邮件回复, P2=看图写作, P3=看图回答题

## 童瑶反馈：小研使用问题记录 [童瑶] ⚠️待改进
- 来源：群聊 oc_aed6c8ed8c59653aca4fabc8cf3a8516，2026-05-25 17:52

### 任务1：英文台词生产
- **问题**：有概率读取不到剧本、或回填不到【英文台词】列
- **当前 workaround**：重复任务+明确位置，告诉它「本文档包含嵌入式Sheet」「F列是英文台词」

### 任务2：组件生产
- **问题1**：有概率回填不到【组件配置】列
- **问题2**：核心互动无法读取，需要人工写入

### 任务3：组件配置-json
- **问题1**：只发指令不指定 skill 时，会混淆任务2（组件生产）和任务3（组件配置-json）
- **问题2**：单一组件执行失败后，重生整体关卡组件时推送报错

## 能力图谱考察项：题型名 → 技能点描述 改写完成 [刘彦江] ✅
- 刘彦江确认改为技能点描述风格，逐条改写
- 14 阶段 4 科目全部重写，目标文档: `W5Vjw2fLiiCqfck0Mfzc0xkrnte`
- L2 阶段1-2 阅读/写作从"无"补为实际技能点（刘彦江确认"L2 阶段1-2 阅读和写作都是有题型的"）
- L1 阶段1 阅读/写作也从"无"补为实际技能点
- 0 个"无"，全量覆盖
- 生成脚本: `tmp/build_skill_points.py`

## 生产覆盖范围修正 [刘彦江]
- L1 生产到 **U16**（非 U33）
- L2 生产到 **U29**（非 U16）
- 已同步更新 `business_knowledge/单元挑战全貌.md`

## 单元挑战全貌文档 [刘彦江]
- 创建 `business_knowledge/单元挑战全貌.md`
- 覆盖九大板块：业务定位、阶段划分、题型体系（18种）、能力标签（45个）、生产流程（ID规则/标准/写入陷阱）、审校体系（7+4项检查）、生产覆盖现状、模块关联、快速链接

## L1/L2 难度等级映射 [刘彦江] ✅已确认
- L1-A: Starters入门+基础 (U1-U16) | L1-B: Starters达标 (U17-U24) | L1-C: Movers入门+基础 (U25-U40) | L1-D: Movers达标 (U41-U48)
- L2-A: Flyers入门+基础 (U1-U12) | L2-B: Flyers达标 (U13-U18) | L2-C: KET入门+基础 (U19-U30) | L2-D: KET强化+高位+达标 (U31-U48)
- 已写入 `business_knowledge/单元挑战全貌.md` §5.3
