# 2026-05-18 工作日志 ## 单元挑战全题型审核 + 修复 ### 背景 [刘彦江] 要求对单元挑战全部20种题型审核,重点:解析不能纯英文、答案格式正确性。题目内容不修改。 ### 审核结果 - 审核范围:20张表、244条记录 - 答案格式:零问题 - 纯英文解析:13处(听力-P2 021901 ×10,口语-P1 032701/032901,口语-P2 032801) - 解析为空:83处(听力-P1 000001+110101~110401 ×50,听力-P4 021701/022101/032501/032901 ×20,共写作-P3复查后实际OK) ### 修复执行 - 13条纯英文→中文化翻译(通过模型翻译) - 70条空解析→从题目内容+ability关键词智能生成 - 全部通过 Python+curl 写回 bitable(避免shell转义) - 写入后回读验证:107条全部含中文,零错误 ### 审校结果列更新 - 格式:`✅ OK | 2026-05-18 小研审校` / `📝 空模板 | 2026-05-18 小研审校` - 已更新:18张表、241条记录 - 缺失列:写作-P2(tblSAwlMumKoyjws)、口语-P4(tblsD2dxaRpLmkXD)无「审校结果」列 ### 经验 - 写作-P3 解析在 questionList 嵌套层级,初审误判为空,复查后确认含中文 - bitable curl 写回嵌套JSON时,Python subprocess构造完整body比shell变量展开安全 - 听力-P1 000001 虽有5条first+5条second,但确有题目内容,不是纯占位,按实际内容生成了解析 # 2026-05-18 工作日志 ## 单元挑战全题型审核 + 修复 ### 背景 [刘彦江] 要求对单元挑战全部20种题型审核,重点:解析不能纯英文、答案格式正确性。题目内容不修改。 ### 审核结果 - 审核范围:20张表、244条记录 - 答案格式:零问题 - 纯英文解析:13处(听力-P2 021901 ×10,口语-P1 032701/032901,口语-P2 032801) - 解析为空:83处(听力-P1 000001+110101~110401 ×50,听力-P4 021701/022101/032501/032901 ×20,共写作-P3复查后实际OK) ### 修复执行 - 13条纯英文→中文化翻译(通过模型翻译) - 70条空解析→从题目内容+ability关键词智能生成 - 全部通过 Python+curl 写回 bitable(避免shell转义) - 写入后回读验证:107条全部含中文,零错误 ### 审校结果列更新 - 格式:`✅ OK | 2026-05-18 小研审校` / `📝 空模板 | 2026-05-18 小研审校` - 已更新:18张表、241条记录 - 缺失列:写作-P2(tblSAwlMumKoyjws)、口语-P4(tblsD2dxaRpLmkXD)无「审校结果」列 ### 经验 - 写作-P3 解析在 questionList 嵌套层级,初审误判为空,复查后确认含中文 - bitable curl 写回嵌套JSON时,Python subprocess构造完整body比shell变量展开安全 - 听力-P1 000001 虽有5条first+5条second,但确有题目内容,不是纯占位,按实际内容生成了解析 --- ## P4 短对话选择题批量改写([刘彦江]) ### 问题 短对话选择题用户只能听音频,无人名标签显示。三人对话中问题问"Whose/Who",用户无法分辨谁是谁。 ### 方案(刘彦江确认) 1. 三人对话 → 两人对话(一男一女) 2. 对话中嵌入名字互称:`Ben: Hi, Lucy. ...` / `Lucy: You're right, Ben. ...` 3. 两种题型并行: - **人名匹配题**(1-3题/套):问 Whose/Who,选项为人名 - **内容理解题**(2-4题/套):问内容,用名字锚定说话者(如"What does Otis say about...") 4. 不改考点和难度(L1 B级) 5. 答案A/B/C平均分配 6. 全部中文解析 + ability标签 ### 改写结果 - 表:听力-P4-短对话选择题(tblVmeDtBDKsAEfz) - 改写范围:9个QSID,约85题 - 写入方式:rewrite_p4_all.py → 先dry run验证 → 再write模式写回 - 一条(021801)因shell转义损坏,Python curl直连修复 - 9/9 全部回读验证通过 ### 待办 - ⚠️ 音频文件需重新录制:旧mp3为三人口播,新对话文本已改为两人 ### 改写详细汇总 | QSID | 题数 | first题型(M/C) | second题型(M/C) | 答案分布(first/second) | 状态 | |------|:--:|:--:|:--:|:--:|:--:| | 021301 | 5+5 | 2/3 | 1/4 | A2B1C2 / A2B2C1 | ✅ | | 021401 | 5+5 | 1/4 | 1/4 | A1B2C2 / A2B2C1 | ✅ | | 021501 | 5+5 | 2/3 | 2/3 | A1B2C2 / A2B2C1 | ✅ | | 021601 | 5+0 | 2/3 | — | A2B2C1 | ✅ | | 021701 | 5+0 | 2/3 | — | A2B2C1 | ✅ | | 021801 | 5+5 | 1/4 | 1/4 | A2B2C1 / A2B2C1 | ✅ | | 022101 | 5+0 | 1/4 | — | A2B2C1 | ✅ | | 032501 | 5+0 | 3/2 | — | A2B2C1 | ✅ | | 032901 | 5+0 | 3/2 | — | A2B2C1 | ✅ | # 2026-05-18 工作日志 ## 单元挑战全题型审核 + 修复 ### 背景 [刘彦江] 要求对单元挑战全部20种题型审核,重点:解析不能纯英文、答案格式正确性。题目内容不修改。 ### 审核结果 - 审核范围:20张表、244条记录 - 答案格式:零问题 - 纯英文解析:13处(听力-P2 021901 ×10,口语-P1 032701/032901,口语-P2 032801) - 解析为空:83处(听力-P1 000001+110101~110401 ×50,听力-P4 021701/022101/032501/032901 ×20,共写作-P3复查后实际OK) ### 修复执行 - 13条纯英文→中文化翻译(通过模型翻译) - 70条空解析→从题目内容+ability关键词智能生成 - 全部通过 Python+curl 写回 bitable(避免shell转义) - 写入后回读验证:107条全部含中文,零错误 ### 审校结果列更新 - 格式:`✅ OK | 2026-05-18 小研审校` / `📝 空模板 | 2026-05-18 小研审校` - 已更新:18张表、241条记录 - 缺失列:写作-P2(tblSAwlMumKoyjws)、口语-P4(tblsD2dxaRpLmkXD)无「审校结果」列 ### 经验 - 写作-P3 解析在 questionList 嵌套层级,初审误判为空,复查后确认含中文 - bitable curl 写回嵌套JSON时,Python subprocess构造完整body比shell变量展开安全 - 听力-P1 000001 虽有5条first+5条second,但确有题目内容,不是纯占位,按实际内容生成了解析 --- ## P4 短对话选择题批量改写([刘彦江]) ### 问题 短对话选择题用户只能听音频,无人名标签显示。三人对话中问题问"Whose/Who",用户无法分辨谁是谁。 ### 方案(刘彦江确认) 1. 三人对话 → 两人对话(一男一女) 2. 对话中嵌入名字互称:`Ben: Hi, Lucy. ...` / `Lucy: You're right, Ben. ...` 3. 两种题型并行: - **人名匹配题**(1-3题/套):问 Whose/Who,选项为人名 - **内容理解题**(2-4题/套):问内容,用名字锚定说话者(如"What does Otis say about...") 4. 不改考点和难度(L1 B级) 5. 答案A/B/C平均分配 6. 全部中文解析 + ability标签 ### 改写结果 - 表:听力-P4-短对话选择题(tblVmeDtBDKsAEfz) - 改写范围:9个QSID,约85题 - 写入方式:rewrite_p4_all.py → 先dry run验证 → 再write模式写回 - 一条(021801)因shell转义损坏,Python curl直连修复 - 9/9 全部回读验证通过 - ⚠️ **Bug发现**:dry run 时 `pop("dialogue")` 污染了 first_qs 和 first_block["questionSet"] 的共享对象,导致 write 时 题目1 字段的【听力文本】为空 - ✅ **已修复**:fix_p4_dialogue.py 从 rewrite 脚本源码提取对话,重写 题目1/题目2 字段 ### 待办 - ⚠️ 音频文件需重新录制:旧mp3为三人口播,新对话文本已改为两人 ### 改写详细汇总 | QSID | 题数 | first题型(M/C) | second题型(M/C) | 答案分布(first/second) | 状态 | |------|:--:|:--:|:--:|:--:|:--:| | 021301 | 5+5 | 2/3 | 1/4 | A2B1C2 / A2B2C1 | ✅ | | 021401 | 5+5 | 1/4 | 1/4 | A1B2C2 / A2B2C1 | ✅ | | 021501 | 5+5 | 2/3 | 2/3 | A1B2C2 / A2B2C1 | ✅ | | 021601 | 5+0 | 2/3 | — | A2B2C1 | ✅ | | 021701 | 5+0 | 2/3 | — | A2B2C1 | ✅ | | 021801 | 5+5 | 1/4 | 1/4 | A2B2C1 / A2B2C1 | ✅ | | 022101 | 5+0 | 1/4 | — | A2B2C1 | ✅ | | 032501 | 5+0 | 3/2 | — | A2B2C1 | ✅ | | 032901 | 5+0 | 3/2 | — | A2B2C1 | ✅ | # 2026-05-18 工作日志 ## 单元挑战全题型审核 + 修复 ### 背景 [刘彦江] 要求对单元挑战全部20种题型审核,重点:解析不能纯英文、答案格式正确性。题目内容不修改。 ### 审核结果 - 审核范围:20张表、244条记录 - 答案格式:零问题 - 纯英文解析:13处(听力-P2 021901 ×10,口语-P1 032701/032901,口语-P2 032801) - 解析为空:83处(听力-P1 000001+110101~110401 ×50,听力-P4 021701/022101/032501/032901 ×20,共写作-P3复查后实际OK) ### 修复执行 - 13条纯英文→中文化翻译(通过模型翻译) - 70条空解析→从题目内容+ability关键词智能生成 - 全部通过 Python+curl 写回 bitable(避免shell转义) - 写入后回读验证:107条全部含中文,零错误 ### 审校结果列更新 - 格式:`✅ OK | 2026-05-18 小研审校` / `📝 空模板 | 2026-05-18 小研审校` - 已更新:18张表、241条记录 - 缺失列:写作-P2(tblSAwlMumKoyjws)、口语-P4(tblsD2dxaRpLmkXD)无「审校结果」列 ### 经验 - 写作-P3 解析在 questionList 嵌套层级,初审误判为空,复查后确认含中文 - bitable curl 写回嵌套JSON时,Python subprocess构造完整body比shell变量展开安全 - 听力-P1 000001 虽有5条first+5条second,但确有题目内容,不是纯占位,按实际内容生成了解析 --- ## P4 短对话选择题批量改写([刘彦江]) ### 问题 短对话选择题用户只能听音频,无人名标签显示。三人对话中问题问"Whose/Who",用户无法分辨谁是谁。 ### 方案(刘彦江确认) 1. 三人对话 → 两人对话(一男一女) 2. 对话中嵌入名字互称:`Ben: Hi, Lucy. ...` / `Lucy: You're right, Ben. ...` 3. 两种题型并行: - **人名匹配题**(1-3题/套):问 Whose/Who,选项为人名 - **内容理解题**(2-4题/套):问内容,用名字锚定说话者(如"What does Otis say about...") 4. 不改考点和难度(L1 B级) 5. 答案A/B/C平均分配 6. 全部中文解析 + ability标签 ### 改写结果 - 表:听力-P4-短对话选择题(tblVmeDtBDKsAEfz) - 改写范围:9个QSID,约85题 - 写入方式:rewrite_p4_all.py → 先dry run验证 → 再write模式写回 - 一条(021801)因shell转义损坏,Python curl直连修复 - 9/9 全部回读验证通过 - ⚠️ **Bug发现**:dry run 时 `pop("dialogue")` 污染了 first_qs 和 first_block["questionSet"] 的共享对象,导致 write 时 题目1 字段的【听力文本】为空 - ✅ **已修复**:fix_p4_dialogue.py 从 rewrite 脚本源码提取对话,重写 题目1/题目2 字段 ### 待办 - ⚠️ 音频文件需重新录制:旧mp3为三人口播,新对话文本已改为两人 ### 改写详细汇总 | QSID | 题数 | first题型(M/C) | second题型(M/C) | 答案分布(first/second) | 状态 | |------|:--:|:--:|:--:|:--:|:--:| | 021301 | 5+5 | 2/3 | 1/4 | A2B1C2 / A2B2C1 | ✅ | | 021401 | 5+5 | 1/4 | 1/4 | A1B2C2 / A2B2C1 | ✅ | | 021501 | 5+5 | 2/3 | 2/3 | A1B2C2 / A2B2C1 | ✅ | | 021601 | 5+0 | 2/3 | — | A2B2C1 | ✅ | | 021701 | 5+0 | 2/3 | — | A2B2C1 | ✅ | | 021801 | 5+5 | 1/4 | 1/4 | A2B2C1 / A2B2C1 | ✅ | | 022101 | 5+0 | 1/4 | — | A2B2C1 | ✅ | | 032501 | 5+0 | 3/2 | — | A2B2C1 | ✅ | | 032901 | 5+0 | 3/2 | — | A2B2C1 | ✅ | # 2026-05-18 工作日志 ## 单元挑战全题型审核 + 修复 ### 背景 [刘彦江] 要求对单元挑战全部20种题型审核,重点:解析不能纯英文、答案格式正确性。题目内容不修改。 ### 审核结果 - 审核范围:20张表、244条记录 - 答案格式:零问题 - 纯英文解析:13处(听力-P2 021901 ×10,口语-P1 032701/032901,口语-P2 032801) - 解析为空:83处(听力-P1 000001+110101~110401 ×50,听力-P4 021701/022101/032501/032901 ×20,共写作-P3复查后实际OK) ### 修复执行 - 13条纯英文→中文化翻译(通过模型翻译) - 70条空解析→从题目内容+ability关键词智能生成 - 全部通过 Python+curl 写回 bitable(避免shell转义) - 写入后回读验证:107条全部含中文,零错误 ### 审校结果列更新 - 格式:`✅ OK | 2026-05-18 小研审校` / `📝 空模板 | 2026-05-18 小研审校` - 已更新:18张表、241条记录 - 缺失列:写作-P2(tblSAwlMumKoyjws)、口语-P4(tblsD2dxaRpLmkXD)无「审校结果」列 ### 经验 - 写作-P3 解析在 questionList 嵌套层级,初审误判为空,复查后确认含中文 - bitable curl 写回嵌套JSON时,Python subprocess构造完整body比shell变量展开安全 - 听力-P1 000001 虽有5条first+5条second,但确有题目内容,不是纯占位,按实际内容生成了解析 --- ## P4 短对话选择题批量改写([刘彦江]) ### 问题 短对话选择题用户只能听音频,无人名标签显示。三人对话中问题问"Whose/Who",用户无法分辨谁是谁。 ### 方案(刘彦江确认) 1. 三人对话 → 两人对话(一男一女) 2. 对话中嵌入名字互称 3. 两种题型并行:人名匹配题(1-3题/套)+ 内容理解题(主体) 4. 不改考点和难度(L1 B级),答案均匀,中文解析,ability标签 ### 改写结果 - 表:听力-P4-短对话选择题(tblVmeDtBDKsAEfz),9个QSID ~85题 - rewrite_p4_all.py: 先dry run → write模式 - 一条(021801)shell转义损坏 → Python curl直连修复 - ⚠️ **Bug:dry run 时 pop("dialogue") 污染 first_qs/first_block 共享对象 → write 时【听力文本】丢失** - ✅ **已修复:fix_p4_dialogue.py 提取对话重写题目1/题目2** - 待办:音频重录(旧mp3三人口播 → 需两人) ### 改写汇总 | QSID | 题数 | 答案分布 | 状态 | |------|:--:|:--:|:--:| | 021301 | 5+5 | A2B1C2 / A2B2C1 | ✅ | | 021401 | 5+5 | A1B2C2 / A2B2C1 | ✅ | | 021501 | 5+5 | A1B2C2 / A2B2C1 | ✅ | | 021601 | 5+0 | A2B2C1 | ✅ | | 021701 | 5+0 | A2B2C1 | ✅ | | 021801 | 5+5 | A2B2C1 / A2B2C1 | ✅ | | 022101 | 5+0 | A2B2C1 | ✅ | | 032501 | 5+0 | A2B2C1 | ✅ | | 032901 | 5+0 | A2B2C1 | ✅ | ## 口语-P1 审校([刘彦江]) ### 范围 QSID: 121301, 121401, 121501(口语-P1-日常回答,tblRGv7k4WH58Jgq) ### 发现问题 - **121301**: 6题 ability 全空 - **121401**: ability 重复("听觉抓取关键信息"×2)+ 标签偏向听力而非口语 - **121501**: 6题 ability 全空 - answer 为空 → 正常(speaking_qa 参考回答在 explanation 内) ### 修复 - 全部补充/替换为口语向标签(语用表达能力等) - 3/3 审校结果列更新为 `✅ OK | 2026-05-18 小研审校` ### Record ID 映射 | QSID | Record ID | |------|-----------| | 121301 | recvjW9RVwziwL | | 121401 | recvjW9RVwGzba | | 121501 | recvjW9RVwj4aQ | --- ## 听力-P1 图片选择题 生产+回填+审校([刘彦江]) ### 范围 QSID: 121301, 121401, 121501(听力-P1-图片选择题) 难度: L1 B级 ### 词汇词库命中率 29个词中仅6个在L1/L2词库(sofa, zoo, study, play, mat, mouth),23个超纲。 业务负责人放行,优先生产,词库后补。 ### 产出 | QSID | Record ID | 词表(first/second) | 答案分布 | |------|-----------|------|:--:| | 121301 | recvjWrIXVjkWY | home/house/sofa/cupboard/bedroom // zoo/hippo/bear/live | A2B2C1 ×2 | | 121401 | recvjWrJos9LH7 | study/play/art/spell/letter // crayon/board/desk/schoolbag/handbag | A2B2C1 ×2 | | 121501 | recvjWrJQ9Njnl | meet/friend/board game/ping-pong // body/head/mouth/ear | A2B2C1 ×2 | ### 审校通过 全部检查项合格:jsonData结构、audio/image命名、答案分布、ability标签、中文解析、题目1/2字段。 ### 待办 ⚠️ 23个超纲词需后续补入L1词库(home, house, cupboard, bedroom, hippo, bear, live, art, spell, letter, English, crayon, board, desk, schoolbag, handbag, meet, friend, board game, ping-pong, body, head, ear) --- ## L1-S2-U18-L5 双龙会 台词润色审校([王璐辰]) ### 背景 审查飞书知识库剧本表格「台词润色列」错误。文档为内嵌 Sheet(block_type 30),需用 blocks API 才能发现。 ### 审校结果 - 语法/拼写硬错误:5处(Rows 41, 55, 126, 153, 178) - 表达优化建议:4处(Rows 77, 84, 207, 63) - 一致性遗漏:4行无润色 + dragon/Loong 混用不统一 - 润色质量好的部分:长句拆分、语法/拼写修正、知识点保留 ✓ ### D列知识点统计 - 6个知识点(class/fun/playground/English/Have fun with.../Over here.),共20次 - English 在知识点列未标注但实际台词出现9次 ### 交互模式收获 - 用户(王璐辰)偏好直接在 bitable 中写入统计表格而非仅输出文字/卡片 → 后续同类需求优先写入原表 # 2026-05-18 工作日志 ## 单元挑战全题型审核 + 修复 ### 背景 [刘彦江] 要求对单元挑战全部20种题型审核,重点:解析不能纯英文、答案格式正确性。题目内容不修改。 ### 审核结果 - 审核范围:20张表、244条记录 - 答案格式:零问题 - 纯英文解析:13处(听力-P2 021901 ×10,口语-P1 032701/032901,口语-P2 032801) - 解析为空:83处(听力-P1 000001+110101~110401 ×50,听力-P4 021701/022101/032501/032901 ×20,共写作-P3复查后实际OK) ### 修复执行 - 13条纯英文→中文化翻译(通过模型翻译) - 70条空解析→从题目内容+ability关键词智能生成 - 全部通过 Python+curl 写回 bitable(避免shell转义) - 写入后回读验证:107条全部含中文,零错误 ### 审校结果列更新 - 格式:`✅ OK | 2026-05-18 小研审校` / `📝 空模板 | 2026-05-18 小研审校` - 已更新:18张表、241条记录 - 缺失列:写作-P2(tblSAwlMumKoyjws)、口语-P4(tblsD2dxaRpLmkXD)无「审校结果」列 ### 经验 - 写作-P3 解析在 questionList 嵌套层级,初审误判为空,复查后确认含中文 - bitable curl 写回嵌套JSON时,Python subprocess构造完整body比shell变量展开安全 - 听力-P1 000001 虽有5条first+5条second,但确有题目内容,不是纯占位,按实际内容生成了解析 --- ## P4 短对话选择题批量改写([刘彦江]) ### 背景 短对话选择题用户只能听音频,无人名标签显示。三人对话中问题问"Whose/Who",用户无法分辨谁是谁。 ### 方案(刘彦江确认) 1. 三人对话 → 两人对话(一男一女),对话中嵌入名字互称 2. 两种题型并行:人名匹配题(1-3题/套)+ 内容理解题(主体) 3. 不改考点和难度(L1 B级),答案均匀,中文解析,ability标签 ### 改写结果 - 表:听力-P4-短对话选择题(tblVmeDtBDKsAEfz),9个QSID ~85题 - rewrite_p4_all.py: 先dry run → write模式 - 一条(021801)shell转义损坏 → Python curl直连修复 - ⚠️ **Bug:dry run 时 pop("dialogue") 污染 first_qs/first_block 共享对象 → write 时【听力文本】丢失** - ✅ **已修复:fix_p4_dialogue.py 提取对话重写题目1/题目2** - 待办:音频重录(旧mp3三人口播 → 需两人) ### 改写汇总 | QSID | 题数 | 答案分布 | 状态 | |------|:--:|:--:|:--:| | 021301 | 5+5 | A2B1C2 / A2B2C1 | ✅ | | 021401 | 5+5 | A1B2C2 / A2B2C1 | ✅ | | 021501 | 5+5 | A1B2C2 / A2B2C1 | ✅ | | 021601 | 5+0 | A2B2C1 | ✅ | | 021701 | 5+0 | A2B2C1 | ✅ | | 021801 | 5+5 | A2B2C1 / A2B2C1 | ✅ | | 022101 | 5+0 | A2B2C1 | ✅ | | 032501 | 5+0 | A2B2C1 | ✅ | | 032901 | 5+0 | A2B2C1 | ✅ | --- ## 口语-P1 审校([刘彦江]) ### 范围 QSID: 121301, 121401, 121501(口语-P1-日常回答,tblRGv7k4WH58Jgq) ### 修复 - ability 全空/偏向听力 → 全部补充为口语向标签 - 3/3 审校结果列更新为 `✅ OK | 2026-05-18 小研审校` ### Record ID 映射 | QSID | Record ID | |------|-----------| | 121301 | recvjW9RVwziwL | | 121401 | recvjW9RVwGzba | | 121501 | recvjW9RVwj4aQ | --- ## 听力-P1 图片选择题 生产+回填+审校([刘彦江]) ### 范围 QSID: 121301, 121401, 121501(听力-P1-图片选择题,L1 B级) 29词中仅6个在词库,23个超纲。业务负责人放行,优先生产,词库后补。 ### 产出 | QSID | Record ID | 答案分布 | |------|-----------|:--:| | 121301 | recvjWrIXVjkWY | A2B2C1 ×2 | | 121401 | recvjWrJos9LH7 | A2B2C1 ×2 | | 121501 | recvjWrJQ9Njnl | A2B2C1 ×2 | ### 待办 ⚠️ 23个超纲词需补入L1词库 --- ## 图片文本输出([刘彦江]) ### 背景 听力-P1 121301/121401/121501 选项图 prompt 需输出给图片生成人员。 ### 飞书消息格式陷阱 🔴 直接输出 `[1-A-选项图彩图]:{"prompt":"..."}` 到飞书对话中,被飞书渲染引擎吃掉(方括号+JSON格式被当标签/链接处理),用户看不到内容。 **解决方案:必须用代码块(```)包裹或通过 message() 工具以编程方式发送。** --- ## 题型-能力标签映射([刘彦江]) ### 背景 用户要求:把所有单元挑战题型与 45 个标准能力 tag 做映射。 ### 能力标签源文件 - 路径: `business_knowledge/ability_tags.md`(Vala 英语能力标签体系,2026-05-13更新) - 45 个标准标签:听力(11)、口语(10)、阅读(13)、写作(11) ### ability 格式不统一问题(重要发现)🔴 提取过程中发现 ability 标签在 bitable jsonData 中存在两种不同格式和位置: **格式A: JSON 数组(每题内部)** ```json {"first": {"questionSet": [{"ability": ["听觉抓取关键信息", "多特征整合"]}]}} ``` 适用题型:听力-P1/P2/P3/P4/P7,阅读全7个,口语全4个 **格式B: ¥¥ 分隔字符串(顶层)** ```json {"first": {"ability": "听觉抓取关键信息¥¥多特征整合"}} ``` 适用题型:听力-P5,写作-P1/P2/P3 ### 映射结果(修正后) - **写作-P1** ✅ 有标签:短消息写作|邮件/便条、衔接与连贯|连词使用、描述性写作|人物与地点、描述性写作|场景与情绪、句型组织、问题解决|求助与建议(部分非标准标签名) - **写作-P2** ⚠️ 格式不规范(模板残留):看图写故事,衔接与连贯、连词使用 - **写作-P3** ❌ 纯占位符 "xxxx",确实无标签 - **听力-P5** ✅ 有标签(¥¥格式补抓):听觉抓取关键信息、多特征整合 ### 已修正的其他发现 - 口语-P1/P2/P3/P4 ability 标签已正确提取(格式A路径) - 20 个未覆盖标签 = 45 标准标签中历史数据从未出现的(情绪/态度理解、长对话理解、图片对比、故事讲述、发音语调、写作全11个等) ### 产出文件 - `business_knowledge/unit_challenge_type_ability_mapping.md` — 完整映射表(已修正) - `/tmp/unit_challenge_ability_doc.md` — 对外分享版 --- ## L1-S2-U18-L5 双龙会 台词润色审校([王璐辰]) ### 审校结果 - 语法/拼写硬错误:5处(Rows 41, 55, 126, 153, 178) - 表达优化建议:4处(Rows 77, 84, 63, 207) - 一致性遗漏:4行无润色 + dragon/Loong 混用不统一 - D列知识点:6个知识点,共20次 ### 交互模式收获 - 用户(王璐辰)偏好直接在 bitable 中写入统计表格 → 后续同类需求优先写入原表 # 2026-05-18 工作日志 ## 单元挑战全题型审核 + 修复 ### 背景 [刘彦江] 要求对单元挑战全部20种题型审核,重点:解析不能纯英文、答案格式正确性。题目内容不修改。 ### 审核结果 - 审核范围:20张表、244条记录 - 答案格式:零问题 - 纯英文解析:13处(听力-P2 021901 ×10,口语-P1 032701/032901,口语-P2 032801) - 解析为空:83处(听力-P1 000001+110101~110401 ×50,听力-P4 021701/022101/032501/032901 ×20,共写作-P3复查后实际OK) ### 修复执行 - 13条纯英文→中文化翻译(通过模型翻译) - 70条空解析→从题目内容+ability关键词智能生成 - 全部通过 Python+curl 写回 bitable(避免shell转义) - 写入后回读验证:107条全部含中文,零错误 ### 审校结果列更新 - 格式:`✅ OK | 2026-05-18 小研审校` / `📝 空模板 | 2026-05-18 小研审校` - 已更新:18张表、241条记录 - 缺失列:写作-P2(tblSAwlMumKoyjws)、口语-P4(tblsD2dxaRpLmkXD)无「审校结果」列 ### 经验 - 写作-P3 解析在 questionList 嵌套层级,初审误判为空,复查后确认含中文 - bitable curl 写回嵌套JSON时,Python subprocess构造完整body比shell变量展开安全 - 听力-P1 000001 虽有5条first+5条second,但确有题目内容,不是纯占位,按实际内容生成了解析 --- ## P4 短对话选择题批量改写([刘彦江]) ### 背景 短对话选择题用户只能听音频,无人名标签显示。三人对话中问题问"Whose/Who",用户无法分辨谁是谁。 ### 方案(刘彦江确认) 1. 三人对话 → 两人对话(一男一女),对话中嵌入名字互称 2. 两种题型并行:人名匹配题(1-3题/套)+ 内容理解题(主体) 3. 不改考点和难度(L1 B级),答案均匀,中文解析,ability标签 ### 改写结果 - 表:听力-P4-短对话选择题(tblVmeDtBDKsAEfz),9个QSID ~85题 - rewrite_p4_all.py: 先dry run → write模式 - 一条(021801)shell转义损坏 → Python curl直连修复 - ⚠️ **Bug:dry run 时 pop("dialogue") 污染 first_qs/first_block 共享对象 → write 时【听力文本】丢失** - ✅ **已修复:fix_p4_dialogue.py 提取对话重写题目1/题目2** - 待办:音频重录(旧mp3三人口播 → 需两人) | QSID | 题数 | 答案分布 | 状态 | |------|:--:|:--:|:--:| | 021301 | 5+5 | A2B1C2 / A2B2C1 | ✅ | | 021401 | 5+5 | A1B2C2 / A2B2C1 | ✅ | | 021501 | 5+5 | A1B2C2 / A2B2C1 | ✅ | | 021601 | 5+0 | A2B2C1 | ✅ | | 021701 | 5+0 | A2B2C1 | ✅ | | 021801 | 5+5 | A2B2C1 / A2B2C1 | ✅ | | 022101 | 5+0 | A2B2C1 | ✅ | | 032501 | 5+0 | A2B2C1 | ✅ | | 032901 | 5+0 | A2B2C1 | ✅ | --- ## 口语-P1 审校([刘彦江]) ### 范围 QSID: 121301, 121401, 121501(口语-P1-日常回答,tblRGv7k4WH58Jgq) ### 修复 - ability 全空/偏向听力 → 全部补充为口语向标签 - 3/3 审校结果列更新为 `✅ OK | 2026-05-18 小研审校` | QSID | Record ID | |------|-----------| | 121301 | recvjW9RVwziwL | | 121401 | recvjW9RVwGzba | | 121501 | recvjW9RVwj4aQ | --- ## 听力-P1 图片选择题 生产+回填+审校([刘彦江]) ### 范围 QSID: 121301, 121401, 121501(听力-P1-图片选择题,L1 B级) 29词中仅6个在词库,23个超纲。业务负责人放行,优先生产,词库后补。 | QSID | Record ID | 答案分布 | |------|-----------|:--:| | 121301 | recvjWrIXVjkWY | A2B2C1 ×2 | | 121401 | recvjWrJos9LH7 | A2B2C1 ×2 | | 121501 | recvjWrJQ9Njnl | A2B2C1 ×2 | ### 待办 ⚠️ 23个超纲词需补入L1词库 --- ## 图片文本输出([刘彦江]) ### 飞书消息格式陷阱 🔴 直接输出 `[1-A-选项图彩图]:{"prompt":"..."}` 到飞书对话中,被渲染引擎吃掉(方括号+JSON当标签处理),用户看不到内容。 **解决方案:代码块包裹或 message() 工具发送。** --- ## 题型-能力标签映射([刘彦江]) ### 背景 把所有单元挑战题型与 45 个标准能力 tag 做映射。 ### 能力标签源文件 - 路径: `business_knowledge/ability_tags.md`(Vala 英语能力标签体系,2026-05-13更新) - 45 个标准标签:听力(11)、口语(10)、阅读(13)、写作(11) ### ability 格式不统一问题(重要发现)🔴 提取中发现 ability 存在两种不同格式/位置: **格式A: JSON 数组(每题内部)** ```json {"first": {"questionSet": [{"ability": ["听觉抓取关键信息", "多特征整合"]}]}} ``` 适用:听力-P1/P2/P3/P4/P7,阅读全7个,口语全4个 **格式B: ¥¥ 分隔字符串(顶层)** ```json {"first": {"ability": "听觉抓取关键信息¥¥多特征整合"}} ``` 适用:听力-P5,写作-P1/P2/P3 ### 映射结果(修正后) - **写作-P1** ✅ 有标签(格式B):短消息写作|邮件/便条、衔接与连贯|连词使用、描述性写作|人物与地点、描述性写作|场景与情绪、句型组织、问题解决|求助与建议(部分非标准标签名) - **写作-P2** ⚠️ 格式不规范(模板残留) - **写作-P3** ❌ 纯占位符 "xxxx" - **听力-P5** ✅ 有标签(格式B补抓):听觉抓取关键信息、多特征整合 - **20 个未覆盖标签** = 45 标准标签中历史数据从未出现的(写作全11个、听力 情绪/态度理解+长对话理解、口语 图片对比+故事讲述+发音语调 等) ### 产出 - `business_knowledge/unit_challenge_type_ability_mapping.md` — 完整映射表 - `/tmp/unit_challenge_ability_doc.md` — 对外分享版(已发送文件 + 飞书文档) --- ## L1-S2-U18-L5 双龙会 台词润色审校([王璐辰]) ### 审校结果 - 语法/拼写硬错误:5处(Rows 41, 55, 126, 153, 178) - 表达优化建议:4处(Rows 77, 84, 63, 207) - 一致性遗漏:4行无润色 + dragon/Loong 混用不统一 - D列知识点:6个知识点,共20次 ### 交互模式收获 - 用户(王璐辰)偏好直接在 bitable 中写入统计表格 → 后续同类需求优先写入原表 ## [刘彦江] 口语-P4-看图识物 内容生产(2026-05-18 19:34) ### 生产范围(3条记录,全部双题组,全部回填验证通过 ✅) | ID | record_id | 题组1 | 题组2 | 状态 | |----|-----------|-------|-------|------| | 100001 | recvjYhcXkYXIM | 6题(颜色) | 5题(衣物) | ✅ | | 110101 | recvjYhdvUxDgs | 6题(身体) | 6题(颜色) | ✅ | | 110201 | recvjYhe4opOGm | 6题(食物) | 4题(动物) | ✅ | ### 题型结构 **口语-P4 (speaking_pic_recognize)**: - textTitle: "Look and answer." - 每词1题,配1图(白底中央展示单个物体/颜色) - 颜色题: "What colour is it?",物体题: "What's this?" - ability: 图文匹配 - explanation: 含回答要点、图片内容、能力、评估标准、回答指导 ### 审校结果 - ✅ 全部27题 jsonData 结构完整、explanation 全中文、题目格式正确 - ✅ 题目集合ID一致、图片编号连续(00-10/00-11/00-09) - ✅ 题目配置(人类可读)格式规范 - ⚠️ 口语-P4表无「审校结果」列,无法标记审校状态 - ℹ️ 110101题组2 "colour"出现2次(调色盘+彩虹)— 按规格生成 - ℹ️ 110201 "mice"(复数) 使用 "What are these?" 区分于 "mouse"(单数) 使用 "What's this?" - ℹ️ 以下词汇未在L1词库中检索到(词库仅160词/声称980词,疑似文件不完整):jacket, T-shirt, hair, monster, colour, bread, cake, candy, chocolate, ice cream, mice, mouse — 按用户指定词汇生产,未做替换 ### Bitable信息 - App Token: CMHSbUUjka3TrUsaxxEc297ongf - Table ID: tblsD2dxaRpLmkXD - 操作方式: Python subprocess + curl(避免shell转义) ## [李应瑛] L1-S2-U17-L3 紧急拜访 组件配置(2026-05-18 20:58) ### 背景 李应瑛发送知识库关卡制作文档链接 `K6DIwFqpgi1SjZkEPS9cNESfn0d`,要求为剧本中的互动环节生成组件配置。 ### 完成事项 - ✅ 读取文档完整内容(剧本表Nr3Ovs 243行、知识点表zbfYO4、剧情摘要等5个子表) - ✅ 识别16个互动点(对话朗读-配图、对话挖空、对话选择-配图、听力选择等),其中10个H列已有配置 - ✅ 方案3(both):行159 H列文本配置 + LV1多维表格正式JSON ### H列配置(行159) 写入 `Nr3Ovs!H159`,内容包含任务标题「听听爷爷的来信」、情境引入、互动内容和后置对话。回读验证通过。 ### LV1 多维表格 JSON(ID: 1217310) - **App Token:** `C7e9bzA1GaZ61FsTz87cEM8Ynoe` - **Table:** LV1 (`tblH4xNpAmKJ7gEq`) - **Record ID:** `recvjYze7B5cDQ` - **cType:** `core_listening_choose` - **题目组:** 2组(Q1: Who will come to visit? → Grandfather / Q2: Who else is coming? → Grandmother) - **学习过程:** 3个重点句(visit / grandmother / grandfather) - **音频来源:** 爷爷Justin念信(剧本行160-163) - **写入方式:** Python subprocess + curl(避免shell转义) ### 待补充 | 项目 | 说明 | |------|------| | 图片素材 | 6张选项图 `1217310_option_00~05.png` 待配置 | | kpListSentence/kpListVocab | 待填入Unit 1217对应的句型/单词知识ID | | kpInfo.kpId | grandfather/grandmother/visit 的具体知识ID待确认 | | 音频录制 | Justin念信4句音频待录制 | ### 互动组件脚本参考路径 - `skills/core-content-json-standard/SKILL.md` — 14种核心题型JSON标准 - `skills/feishu-embedded-sheet/SKILL.md` — 内嵌Sheet读写 - `skills/lark_bitable_operate_as_bot/SKILL.md` — Bot身份多维表格操作 ## [李应瑛] L1-S2-U17-L4 门关啦 组件配置(2026-05-18 21:00) ### 背景 李应瑛发送知识库文档 `SAadwW8YaiObl8k4op3c6vs8nqb`(L1-S2-U17-L4 门关啦),要求根据组件类型生成配置,回填到 **F列**(不同于L3的H列)。 ### 文档结构 - Wiki token: `SAadwW8YaiObl8k4op3c6vs8nqb` - Space ID: `7412143055920414722` - Spreadsheet token: `It4AsFkC7hXHc4te9yUcyLHRnOe` - Script sheet: `wMQVyV`(202行×8列) - Knowledge points sheet: `eXTXJ8`(6个知识点:open, closed, door, home, 2个句型) - 列结构:A=类型, B=配置信息, C=剧情描述, D=角色名, E=英文台词, **F=组件配置**, G=知识点, H=编剧台词 ### 互动组件识别 - 16个互动组件(ID 1217401-1217416),全部F列为空 - 类型分布:对话朗读×6、对话挖空×4、图片单选×1、对话选择×2、对话组句×2、看图拼词×1 - 知识点覆盖:open/closed/door/home 及对应句型 ### 写入方式 - Sheets v2 API PUT values,range 格式注意:sheet_id不加引号 - 先试 `'wMQVyV'!F10` 报 "sheetId not found" → 修正为 `wMQVyV!F10` 成功 - 16/16 全部回读验证通过 ### 脚本 `scripts/write_L4_F_configs.py` --- ## [李应瑛] L1-S2-U17-L5 笨蛋坏蛋?英文生产(2026-05-18 21:15) ### 背景 李应瑛发送知识库文档 `U1zEwHZaaie07TkjmOOchurgnIh`(L1-S2-U17-L5 笨蛋坏蛋?),要求"英文生产"。 ### 文档结构(与L3/L4不同) - Wiki token: `U1zEwHZaaie07TkjmOOchurgnIh` - Spreadsheet token: `DCcKsLbrmhfXgrtB7N2c9GA4ntf` - Script sheet: `wMQVyV`(186行×9列) - Knowledge points sheet: `DCcKsLbrmhfXgrtB7N2c9GA4ntf_NtIcXt` - 列结构:A=类型, D=剧情描述, E=角色名, F=编剧台词(English已填好), **G=组件配置** - 知识点:point, talk, understand, a lot of + `talk to...` / `I can/can't understand...` ### 交互模式差异 - L5 文档 B列/C列 为空,无详细组件类型标签(仅 A=互动/核心互动-口语) - 编剧台词F列已全部填写(英文) - 互动行的 User 台词含红色标注知识点词 ### 完成事项 - 24个互动行全部生成G列配置(组件类型推断:听力挖空、朗读台词、口语表达) - 写入方式:同上 Sheets v2 API - 24/24 全部回读验证通过 ### 脚本 `scripts/write_L5_G_configs.py`