281 lines
19 KiB
Markdown
281 lines
19 KiB
Markdown
# 2026-05-12 工作日志
|
||
|
||
## 会话记录
|
||
|
||
### 刘彦江 — 021301-021801 图片描述修正 + 技能更新(09:35 ~ 09:45)
|
||
- **问题:** 021301-021801 信息匹配题的图片描述缺少 `【Notice Type】` 标签,格式不符合参考规范
|
||
- **处理:**
|
||
1. 查询 bitable 获取6条记录当前图片描述(tblCgfYDnnqwLfgH)
|
||
2. 按每道题的上下文匹配对应的标识/通知类型标签(如 Show Poster、Wanted Notice、School Notice 等)
|
||
3. 批量更新6条记录的图片描述字段,全部10个 `【Type】` 标签验证通过
|
||
4. 脚本:`scripts/fix_matchInfo_0213_0218_desc.py`
|
||
- **技能更新:** 将图片描述规范(格式要求、核心规则、参考示例、常用类型标签参考表)更新到 `business_production/单元挑战/skills/unit_challenge/questions/reading/reading_info_match/SKILL.md`
|
||
- **规范要点:**
|
||
- 每张图片 → `图片材料文本:\n【Type】\nActual text`
|
||
- 图片必须是真实标识/通知(非标签式)
|
||
- L2 B级及以上图片文字需为完整陈述句(3-5词+)
|
||
|
||
### 刘彦江 — L1 配置表审校 + 技能沉淀(11:50 ~ 12:10)
|
||
- **数据源:** 飞书多维表格「互动知识点 - 句子」→「Level 1 配置表」(`Nq3Zb258aae7SRs2QfXcqsQYnxJ` / `tblTxGpf6GQ5c7DZ`)
|
||
- **ID 编码规则:** 7位 = 前2位(Season) + 中2位(Unit) + 后3位(序列号)
|
||
- 例: 1214001 = L1S2(12) + U14(14) + 001
|
||
- **审校记录 1214001 (You need to...) 发现:**
|
||
1. ❌ classificationInfo 值互换: cambridgeLevel=A1 vs cefrLevel=YLE(与列字段反了)
|
||
2. ❌ sentenceStructureSort 题2: 单词库有need无needs,三单主语Otis语法错误
|
||
3. ⚠️ sentenceStructureClozeWordMcq: "put your toys" 省略 away 不够自然
|
||
- **技能沉淀:**
|
||
- 脚本: `scripts/audit_l1_config.py` — 7项自动检查
|
||
- SKILL.md: `skills/audit_l1_config/SKILL.md` — 含完整审校流程 + 4项人工审核清单
|
||
# 2026-05-12 工作日志
|
||
|
||
## 会话记录
|
||
|
||
### 刘彦江 — 021301-021801 图片描述修正 + 技能更新(09:35 ~ 09:45)
|
||
- **问题:** 021301-021801 信息匹配题的图片描述缺少 `【Notice Type】` 标签,格式不符合参考规范
|
||
- **处理:**
|
||
1. 查询 bitable 获取6条记录当前图片描述(tblCgfYDnnqwLfgH)
|
||
2. 按每道题的上下文匹配对应的标识/通知类型标签(如 Show Poster、Wanted Notice、School Notice 等)
|
||
3. 批量更新6条记录的图片描述字段,全部10个 `【Type】` 标签验证通过
|
||
4. 脚本:`scripts/fix_matchInfo_0213_0218_desc.py`
|
||
- **技能更新:** 将图片描述规范(格式要求、核心规则、参考示例、常用类型标签参考表)更新到 `business_production/单元挑战/skills/unit_challenge/questions/reading/reading_info_match/SKILL.md`
|
||
- **规范要点:**
|
||
- 每张图片 → `图片材料文本:\n【Type】\nActual text`
|
||
- 图片必须是真实标识/通知(非标签式)
|
||
- L2 B级及以上图片文字需为完整陈述句(3-5词+)
|
||
|
||
### 刘彦江 — L1 配置表审校 + 技能沉淀(11:50 ~ 12:10)
|
||
- **数据源:** 飞书多维表格「互动知识点 - 句子」→「Level 1 配置表」(`Nq3Zb258aae7SRs2QfXcqsQYnxJ` / `tblTxGpf6GQ5c7DZ`)
|
||
- **ID 编码规则:** 7位 = 前2位(Season) + 中2位(Unit) + 后3位(序列号)
|
||
- 例: 1214001 = L1S2(12) + U14(14) + 001
|
||
- **审校记录 1214001 (You need to...) 发现:**
|
||
1. ❌ classificationInfo 值互换: cambridgeLevel=A1 vs cefrLevel=YLE(与列字段反了)
|
||
2. ❌ sentenceStructureSort 题2: 单词库有need无needs,三单主语Otis语法错误
|
||
3. ⚠️ sentenceStructureClozeWordMcq: "put your toys" 省略 away 不够自然
|
||
- **技能沉淀:**
|
||
- 脚本: `scripts/audit_l1_config.py` — 7项自动检查
|
||
- SKILL.md: `skills/audit_l1_config/SKILL.md` — 含完整审校流程 + 4项人工审核清单
|
||
|
||
### 刘彦江 — 1213001-1216010 批量审校 40 条(12:10 ~ 14:00)
|
||
- **范围:** L1S2 Units 13-16,每单元 10 条,共 40 条
|
||
- **方法:** `scripts/audit_l1_config.py` 自动化扫描 → 误报排除 → 分类汇总 → 逐条审校回填
|
||
- **脚本修复(过程中):**
|
||
1. sentenceStructureSort 单词对比大小写误报 → 添加 normalize(首字母大写 + 去标点)
|
||
2. ID 末尾空格敏感 → strip 比较
|
||
3. 句子朗读/跟读题误报 options/answer 缺失 → 跳过这两种题型
|
||
|
||
#### 审校结果汇总
|
||
- **🔴 系统性问题(40/40,100%):** classificationInfo JSON 内 cambridgeLevel="A1" 与 cefrLevel="YLE" 值互换,列字段正确但 JSON 存储写反,疑似模板/formula 级别 bug
|
||
- **🟡 具体错误(17/40):**
|
||
- sentenceMeaningMeaning JSON 解析失败 × 10:1213004, 1213006, 1213010, 1214008, 1215005, 1216001, 1216004, 1216007, 1216008, 1216010(后8题含中文引号冲突)
|
||
- ID 字段末尾空格 × 3:1213001, 1215001, 1216001
|
||
- 看图选择题有CN无JSON × 3:1213008, 1215010, 1216005
|
||
- sentenceStructureSort 语法/格式错误 × 3:1213004(缺逗号clean Otis→clean, Otis), 1213005(bird?连写应拆为bird+?), 1214001(need→needs三单)
|
||
- 缺少 pointId 字段 × 1:1213001(sort 题2)
|
||
- **🟢 仅有系统性问题的 23 条:** 其余 23 条仅 classificationInfo 互换问题,其他题型均通过自动化检查
|
||
- **回填:** 全部 40 条审校结果已写入 bitable「审校结果」列,逐条验证通过
|
||
- **脚本回填脚本:** `scripts/audit_batch_1213001_1216010.py`
|
||
# 2026-05-12 工作日志
|
||
|
||
## 会话记录
|
||
|
||
### 刘彦江 — 021301-021801 图片描述修正 + 技能更新(09:35 ~ 09:45)
|
||
- **问题:** 021301-021801 信息匹配题的图片描述缺少 `【Notice Type】` 标签,格式不符合参考规范
|
||
- **处理:**
|
||
1. 查询 bitable 获取6条记录当前图片描述(tblCgfYDnnqwLfgH)
|
||
2. 按每道题的上下文匹配对应的标识/通知类型标签(如 Show Poster、Wanted Notice、School Notice 等)
|
||
3. 批量更新6条记录的图片描述字段,全部10个 `【Type】` 标签验证通过
|
||
4. 脚本:`scripts/fix_matchInfo_0213_0218_desc.py`
|
||
- **技能更新:** 将图片描述规范(格式要求、核心规则、参考示例、常用类型标签参考表)更新到 `business_production/单元挑战/skills/unit_challenge/questions/reading/reading_info_match/SKILL.md`
|
||
- **规范要点:**
|
||
- 每张图片 → `图片材料文本:\n【Type】\nActual text`
|
||
- 图片必须是真实标识/通知(非标签式)
|
||
- L2 B级及以上图片文字需为完整陈述句(3-5词+)
|
||
|
||
### 刘彦江 — L1 配置表审校 + 技能沉淀(11:50 ~ 12:10)
|
||
- **数据源:** 飞书多维表格「互动知识点 - 句子」→「Level 1 配置表」(`Nq3Zb258aae7SRs2QfXcqsQYnxJ` / `tblTxGpf6GQ5c7DZ`)
|
||
- **ID 编码规则:** 7位 = 前2位(Season) + 中2位(Unit) + 后3位(序列号)
|
||
- 例: 1214001 = L1S2(12) + U14(14) + 001
|
||
- **审校记录 1214001 (You need to...) 发现:**
|
||
1. ❌ classificationInfo 值互换: cambridgeLevel=A1 vs cefrLevel=YLE(与列字段反了)
|
||
2. ❌ sentenceStructureSort 题2: 单词库有need无needs,三单主语Otis语法错误
|
||
3. ⚠️ sentenceStructureClozeWordMcq: "put your toys" 省略 away 不够自然
|
||
- **技能沉淀:**
|
||
- 脚本: `scripts/audit_l1_config.py` — 7项自动检查
|
||
- SKILL.md: `skills/audit_l1_config/SKILL.md` — 含完整审校流程 + 4项人工审核清单
|
||
|
||
### 刘彦江 — 1213001-1216010 批量审校 40 条(12:10 ~ 14:00)
|
||
- **范围:** L1S2 Units 13-16,每单元 10 条,共 40 条
|
||
- **方法:** `scripts/audit_l1_config.py` 自动化扫描 → 误报排除 → 分类汇总 → 逐条审校回填
|
||
- **脚本修复(过程中):**
|
||
1. sentenceStructureSort 单词对比大小写误报 → 添加 normalize(首字母大写 + 去标点)
|
||
2. ID 末尾空格敏感 → strip 比较
|
||
3. 句子朗读/跟读题误报 options/answer 缺失 → 跳过这两种题型
|
||
|
||
#### 审校结果汇总(初版)
|
||
- **🔴 系统性问题(40/40,100%):** classificationInfo JSON 内 cambridgeLevel="A1" 与 cefrLevel="YLE" 值互换
|
||
- **🟡 具体错误(17/40):**
|
||
- sentenceMeaningMeaning JSON 解析失败 × 10:1213004, 1213006, 1213010, 1214008, 1215005, 1216001, 1216004, 1216007, 1216008, 1216010
|
||
- ID 字段末尾空格 × 3:1213001, 1215001, 1216001
|
||
- 看图选择题有CN无JSON × 3:1213008, 1215010, 1216005
|
||
- sentenceStructureSort 语法/格式错误 × 3:1213004(缺逗号clean Otis→clean, Otis), 1213005(bird?连写应拆为bird+?), 1214001(need→needs三单)
|
||
- 缺少 pointId 字段 × 1:1213001(sort 题2)
|
||
- **🟢 仅有系统性问题的 23 条**
|
||
- **回填:** 全部 40 条审校结果已写入 bitable「审校结果」列,逐条验证通过
|
||
- **脚本回填脚本:** `scripts/audit_batch_1213001_1216010.py`
|
||
|
||
### 刘彦江 — 审校结果修正 + 解析一致检查 + JSON 修复(14:00 ~ 15:38)
|
||
- **YLE↔A1 误报排除:** 刘彦江确认 YLE 与 A1 等级可互通,classificationInfo 值互换不视为错误
|
||
- 全部 40 条审校结果已更新,移除 classificationInfo 互换相关告警
|
||
- 23 条变为 `✅ 通过`(无其他问题),17 条保留具体错误
|
||
|
||
- **解析与题目/答案对应性检查(人工审核项):**
|
||
- 检查题型:句意选择题 ×30、句子补全题、听句作答题、场景选择题、看图选择题
|
||
- 验证方法:提取 explanation 中的英文引句 vs question 中的英文句子、正则提取"空处应填X" vs options[answer]
|
||
- 结果:✅ **0 条实质性不对应**
|
||
|
||
- **10 条 sentenceMeaningMeaning JSON 修复:**
|
||
- **根因:** explanation 文本中的 ASCII `"` (U+0022) 被当作中文双引号使用,JSON 解析器将其视为字符串终止符
|
||
- **修复策略:** 从「句意选择题」中文列提取英文原句和选项 → json.dumps 重建标准 JSON(只修格式,不修内容)
|
||
- **1216007 特殊处理:** 原始 JSON 损坏严重,需从中文列完全重建
|
||
- **二次修复(Q2 丢失问题):** 首次不完全修复导致 9 条记录的 Q2 被覆盖丢失,且 Q1 被 JSON 垃圾污染 → 从中文列全面重建 Q1+Q2
|
||
- **最终结果:10/10 条记录 sentenceMeaningMeaning 均可 json.loads 正确解析,每条含 2 题,无残留垃圾数据**
|
||
- **受影响记录:** 1213004, 1213006, 1213010, 1214008, 1215005, 1216001, 1216004, 1216007, 1216008, 1216010
|
||
- **审校结果同步更新:** 移除所有 10 条的 `❌ JSON 解析失败` 标记
|
||
- **注意:** Q1 explanation 在重建时词表述可能微调(内容含义一致),如需精确原始 wording 可从中文列恢复后人工微调
|
||
|
||
## 经验教训
|
||
|
||
### bitable 写入需严格流程管控(2026-05-12)
|
||
- 批量更新 JSON 字段时必须:写入前完整提取原始数据 → 写入后逐字段 diff 验证 → 发现异常立即回滚
|
||
- 本次 JSON 修复中首次写入不完整导致 Q2 丢失,原因:修复脚本未正确处理多题 JSON 结构
|
||
- **教训:** 任何涉及 JSON 重建/修复的批量操作,先单条试运行验证通过后再批量执行,不可并行甩出多条
|
||
|
||
### sentenceMeaningMeaning 的 explanation 引号规范(2026-05-12)
|
||
- explanation 字段中的中文双引号极易被误用为 ASCII `"` (U+0022)
|
||
- 建议生产侧统一使用中文引号 `"` (U+201C) 和 `"` (U+201D),或在 explanation 写入前做引号归一化预处理
|
||
- 此类问题在常规 JSON 校验中不会被发现(JSON 仍有概率合法,取决于引号出现位置),一旦出现在 JSON 字符串边界附近即导致全段解析失败
|
||
|
||
### 刘彦江 — 核心互动全题型 JSON 配置标准沉淀(17:05 ~ 17:50)
|
||
- **目标:** 从互动内容库遍历全部核心互动题型,提取 JSON 配置结构,沉淀为统一 Skill
|
||
- **方式:** 先写 `bitable-reader` 通用读取 Skill → 遍历 15 个 bitable → 归纳通用字段 → 分类录入各题型
|
||
|
||
#### 架构决策
|
||
- **统一入口,通用在上:** 一个 `core-content-json-standard` Skill 覆盖全部题型,不拆分为题型独立 Skill
|
||
- **五大分类:** 📖阅读(2) / 🎧听力(3) / 🗣口语(4) / ✏️写作(5) / 未完成(1)
|
||
- **通用字段提取:** ID/dataStatus/kpStatus/kpInfo/taskData 是所有题型共用的基础结构
|
||
|
||
#### 覆盖率
|
||
- 14 种题型已录入 ✅(1 种无数据:口语探讨)
|
||
- 4 个一级板块:通用结构 / 题型专区 / 审校规则 / 扩展指南
|
||
- 每个题型:cType + bitable 定位 + JSON 字段表 + 结构特点 + 与同类题型的差异说明
|
||
|
||
#### 发现
|
||
- 写作互动和邮件组句 cType 相同(`core_writing_questionMakeSentence`),通过 textInfo 区分素材
|
||
- 口语快答/妙问 JSON 结构几乎相同,差异在 prompt 配置和对话样例内容
|
||
- 合作阅读和合作听力的核心差异:`textData.text[]` ↔ `textData.audio[]`
|
||
- meaning 标签(合作阅读)为开放型自由文本,非受控词表
|
||
|
||
#### 产出文件
|
||
- `skills/bitable-reader/SKILL.md` — 通用 bitable 读取技能(164行)
|
||
- `skills/core-content-json-standard/SKILL.md` — 全题型 JSON 标准 v2.0(393行)
|
||
- `scripts/audit_core_reading_S0.py` — 合作阅读 S0 审校脚本(含审校发现)
|
||
# 2026-05-12 工作日志
|
||
|
||
## 会话记录
|
||
|
||
### 刘彦江 — 021301-021801 图片描述修正 + 技能更新(09:35 ~ 09:45)
|
||
- **问题:** 021301-021801 信息匹配题的图片描述缺少 `【Notice Type】` 标签
|
||
- **处理:** 批量更新6条记录的图片描述字段,全部10个标签验证通过
|
||
- **脚本:** `scripts/fix_matchInfo_0213_0218_desc.py`
|
||
- **技能更新:** 图片描述规范写入 `business_production/单元挑战/skills/unit_challenge/questions/reading/reading_info_match/SKILL.md`
|
||
|
||
### 刘彦江 — L1 配置表审校 + 技能沉淀(11:50 ~ 12:10)
|
||
- **数据源:** `Nq3Zb258aae7SRs2QfXcqsQYnxJ` / `tblTxGpf6GQ5c7DZ`
|
||
- **ID 编码:** 7位 = S(2位) + U(2位) + 序列号(3位)
|
||
- **技能沉淀:** `scripts/audit_l1_config.py` + `skills/audit_l1_config/SKILL.md`
|
||
|
||
### 刘彦江 — 1213001-1216010 批量审校 40 条(12:10 ~ 14:00)
|
||
- **范围:** L1S2 Units 13-16
|
||
- **脚本修复(过程中):** sort 大小写误报 / ID 末尾空格 / 朗读跟读题误报
|
||
- **结果:** 系统性 classificationInfo 互换(已标记不视为错误) + 17条具体错误 + 23条通过
|
||
- **脚本:** `scripts/audit_l1_config.py` + `scripts/audit_batch_1213001_1216010.py`
|
||
|
||
### 刘彦江 — 审校结果修正 + JSON 修复(14:00 ~ 15:38)
|
||
- **YLE↔A1 误报排除:** 确认等级互通,40条审校结果已更新
|
||
- **解析与题目一致性检查:** ✅ 0条不对应
|
||
- **10 条 sentenceMeaningMeaning JSON 修复:**
|
||
- 根因:explanation 中 ASCII `"` 被用作中文引号
|
||
- 修复策略演变:状态机拆分失败 → 正则重建 → 发现Q2丢失 → 从中文列完整重建
|
||
- 最终:10/10 可正确解析,审校结果同步更新
|
||
- 受影响:1213004/1213006/1213010/1214008/1215005/1216001/1216004/1216007/1216008/1216010
|
||
|
||
### 刘彦江 — 核心互动全题型 JSON 配置标准沉淀(17:05 ~ 17:50)
|
||
- **产出 Skill 1:** `skills/bitable-reader/SKILL.md` — 通用 bitable 读取(任何 bitable 通用)
|
||
- **产出 Skill 2:** `skills/core-content-json-standard/SKILL.md` v2.0 — 全题型 JSON 标准(393行)
|
||
- **架构:** 通用字段在前(ID/kpInfo/taskData)+ 5大题型分类(📖阅读2 🎧听力3 🗣口语4 ✏️写作5)+ 审校规则 + 扩展指南
|
||
- **覆盖率:** 14/15 种题型(口语探讨 S0 无数据)
|
||
- **产出脚本:** `scripts/audit_core_reading_S0.py` — 合作阅读 S0 审校
|
||
|
||
## 经验教训
|
||
|
||
### bitable 写入需严格流程管控(2026-05-12)
|
||
- 批量更新 JSON:写入前完整提取 → 写入后逐字段 diff → 异常立即回滚
|
||
- 首次修复多题 JSON 导致 Q2 丢失 → 先单条试跑验证再批量
|
||
|
||
### sentenceMeaningMeaning 引号规范(2026-05-12)
|
||
- explanation 中 ASCII `"` 与中文引号混用导致 JSON 解析失败
|
||
- 建议:生产侧统一用中文引号 `""`(U+201C/D),或写入前做引号归一化
|
||
|
||
### 写作互动 / 邮件组句 cType 相同(2026-05-12)
|
||
- 两者 cType 均为 `core_writing_questionMakeSentence`,通过 textInfo.textList[].type 区分素材
|
||
|
||
### 刘彦江 — 中互动全题型录入(18:00 ~ 18:25)
|
||
|
||
#### 发现
|
||
- **中互动结构高度统一:** 全部 27 类都用 `jsonData`(主配置)+ `kpInfo`(知识点绑定),没有核心互动那种多字段分散结构
|
||
- **6 大分类:** 🗨对话(7) / 📋信息(6) / 📦词汇(2) / 🖼图片选择(4) / 📝语法(3) / 🔧其他(5)
|
||
- **对话类公共字段:** cType, cId, title, resourceMapping, preDialog, imgShowTimingList
|
||
- 写作互动和邮件组句 cType 相同(`core_writing_questionMakeSentence`)
|
||
|
||
#### 产出文件
|
||
- `skills/interactive-component-json/references/json_structure_guide.md` — 27 种中互动 jsonData 字段结构(8736 bytes)
|
||
- `skills/interactive-component-json/references/component_registry.md` — 核心互动部分从🔲更新为完整注册表(含 cType+bitable_token)
|
||
- 与 `skills/core-content-json-standard/SKILL.md` 双向关联
|
||
|
||
#### 覆盖率
|
||
- 核心互动:15/15 ✅(口语探讨 S0 无数据已标注)
|
||
- 中互动:27/27 ✅
|
||
- 关联文件:3 个(core-content-json-standard + component_registry + json_structure_guide)
|
||
## 刘彦江 — 中互动+核心互动 回填任务(18:37 待继续)
|
||
|
||
### 上下文
|
||
- 用户提供剧本文档: `https://makee-interactive.feishu.cn/wiki/YqzzwpjwjihK9YkyRhXccaqLnzu`
|
||
- 要求:识别文档中的 3 个中互动 + 1 个核心互动,回填到对应位置
|
||
- 上次已读取文档,找到 1 个核心互动标记(第4幕 听力拖拽),但 3 个中互动标记不明显
|
||
- 用户让我"Continue"继续处理
|
||
|
||
### 当前状态
|
||
- 需要重新拉取文档,仔细识别所有互动标记
|
||
- 文档位于 space_id=7487521512283799556
|
||
- 上次发现的场景:太空故事 / 太空船起飞 / 小行星带 / 发光的星球 + 尾声
|
||
## 中互动+核心互动 回填任务 — 继续(18:37)
|
||
|
||
### 本轮 Session — 实际写入 bitable
|
||
|
||
上一轮已确认:文档中 4 个场景对应 4 个互动类型(3中+1核),标签已写入文档。但用户说的"回填到对应为止"指的是**写入 bitable 多维表格记录**,而非仅文档标签。
|
||
|
||
### 需要写入的 4 条记录
|
||
|
||
| 场景 | 互动类型 | cType | bitable_token |
|
||
|------|---------|-------|---------------|
|
||
| 第1幕 太空故事 | 对话朗读互动 | `mid_dialog_repeat` | `MuwubKXoSaJe55sO4k9c63VSnmh` |
|
||
| 第2幕 太空船起飞 | 对话互动 | `mid_sentence_dialogue` | `GH0hbBT0ZavkCesaVQ7c40Zfnub` |
|
||
| 第3幕 小行星带 | 指令互动 | `mid_vocab_instruction` | `UorxbVCNYaqpx3sOUdTcF6bUnAh` |
|
||
| 第4幕 发光的星球 | 听力拖拽 | `core_listening_drag` | `Uey8bhdLBa66TIsGrFBcIQKRnsg` |
|
||
|
||
### 下一步
|
||
1. 读取 4 个 bitable 的表结构(字段名)
|
||
2. 基于剧本内容和 JSON 结构标准,构造 jsonData/kpInfo 等字段
|
||
3. 调用 Bot API create_record 写入
|
||
4. 写后回读验证
|