From 224a79e9021d458326dec511b3921143afb08312 Mon Sep 17 00:00:00 2001 From: ai_member_only Date: Fri, 19 Jun 2026 08:10:02 +0800 Subject: [PATCH] auto backup: 2026-06-19 08:10:02 --- .../_shared/feishu-embedded-sheet/SKILL.md | 114 + .../dialogue-interaction-config/SKILL.md | 30 +- .../skills/info-interaction-config/SKILL.md | 16 +- .../script-component-production/SKILL.md | 41 +- .../db/components.db | Bin 9936896 -> 9986048 bytes ...任务 Space Mission_20260618_153707.html | 5767 +++++++++++++++++ .../interactive-component-json/prd.md | 32 + .../__pycache__/generate_json.cpython-312.pyc | Bin 96260 -> 98708 bytes .../scripts/generate_json.py | 56 + .../kids-english-script-production/SKILL.md | 3 +- .../skills/script-post-check/SKILL.md | 6 +- memory/.dreams/events.jsonl | 6 + memory/.dreams/short-term-recall.json | 126 +- 13 files changed, 6121 insertions(+), 76 deletions(-) create mode 100644 business_production/组件配置/interactive-component-json/outputs/L1-S2-U19-L2 太空任务 Space Mission_20260618_153707.html diff --git a/business_production/_shared/feishu-embedded-sheet/SKILL.md b/business_production/_shared/feishu-embedded-sheet/SKILL.md index 102432d..9644f8d 100644 --- a/business_production/_shared/feishu-embedded-sheet/SKILL.md +++ b/business_production/_shared/feishu-embedded-sheet/SKILL.md @@ -233,6 +233,120 @@ else: write_range(f"F{row}:F{row}", [data[row]]) ``` +## 读取后错行/乱行校验(强制执行) + +### 校验目标 + +读取 Sheet 数据后,必须自动检测关键列之间的行号对齐关系,防止以下问题: +- 组件配置(G列)写入了错误行,导致内容与组件名称(A列)错位 +- 英文台词(F列)写入了错误行,导致台词与角色(E列)错位 +- 批量写入时行号偏移导致整列数据整体下移/上移 + +### 校验规则(剧本表格 A-I 列) + +#### 规则1:A列-G列 对齐校验(组件类型 vs 组件配置) + +``` +如果 A列[row] 是组件类型(匹配:对话朗读|对话挖空|对话选择|对话组句|对话表达|对话选读|图片单选|图片多选|信息拼词|看图选词|听力\S+|阅读\S+|写作\S+|口语\S+) + → G列[row] 必须非空(包含组件配置内容) + +如果 G列[row] 非空(包含组件配置内容) + → A列[row] 必须是组件类型(不能是 TL / 空 / 其他非组件标记) +``` + +#### 规则2:B列-G列 对齐校验(组件ID vs 组件配置) + +``` +如果 B列[row] 是数字(组件ID) + → G列[row] 必须非空 + +如果 G列[row] 非空且包含 "【组件ID】" 标记 + → 提取的组件ID 必须与 B列[row] 一致 +``` + +#### 规则3:E列-F列 对齐校验(角色名 vs 英文台词) + +``` +如果 E列[row] 非空(有角色名)且 A列[row] 不是 TL / 空(非纯剧情行) + → F列[row] 建议非空(角色说话应有台词) + → 若 F列[row] 为空,标记为"疑似缺失"(可能是剧情描述行,需人工确认) +``` + +#### 规则4:G列 内容归属校验(防止配置写入非组件行) + +``` +扫描 G列 所有非空单元格: + 如果 G列[row] 包含组件配置特征("【任务标题】" / "【资源配置】" / "【互动内容】") + 且 A列[row] 为 TL / 空 / 非组件类型 + → 标记为"错行":组件配置写入了非组件行 +``` + +### 校验执行流程 + +```python +# 读取 Sheet 数据后立即执行 +def validate_sheet_alignment(rows): + errors = [] + warnings = [] + + component_pattern = re.compile( + r'^(对话朗读|对话挖空|对话选择|对话组句|对话表达|对话选读|' + r'图片单选|图片多选|信息拼词|看图选词|' + r'听力\S+|阅读\S+|写作\S+|口语\S+)' + ) + + for i, row in enumerate(rows): + row_num = i + 1 # 1-indexed + a_val = row[0] if len(row) > 0 else None # A列:类型 + b_val = row[1] if len(row) > 1 else None # B列:ID + e_val = row[4] if len(row) > 4 else None # E列:角色名 + f_val = row[5] if len(row) > 5 else None # F列:英文台词 + g_val = row[6] if len(row) > 6 else None # G列:组件配置 + + # 规则1:A-G 对齐 + if a_val and component_pattern.match(str(a_val)): + if not g_val: + errors.append(f"行{row_num}: A列=[{a_val}] 但 G列为空,组件配置缺失") + + if g_val and '【任务标题】' in str(g_val): + if not a_val or not component_pattern.match(str(a_val)): + errors.append(f"行{row_num}: G列有组件配置但 A列=[{a_val}] 非组件类型,疑似错行") + + # 规则2:B-G 对齐 + if b_val and str(b_val).isdigit(): + if not g_val: + errors.append(f"行{row_num}: B列=[{b_val}] 但 G列为空,组件配置缺失") + elif '【组件ID】' in str(g_val): + g_id = extract_component_id(str(g_val)) + if g_id and str(g_id) != str(b_val): + errors.append(f"行{row_num}: B列ID=[{b_val}] 与 G列组件ID=[{g_id}] 不一致") + + # 规则3:E-F 对齐 + if e_val and a_val and a_val not in ('TL', ''): + if not f_val: + warnings.append(f"行{row_num}: E列=[{e_val}] 但 F列为空,疑似台词缺失") + + # 规则4:G列归属 + if g_val and ('【任务标题】' in str(g_val) or '【互动内容】' in str(g_val)): + if not a_val or a_val in ('TL', ''): + errors.append(f"行{row_num}: G列有组件配置但 A列=[{a_val}],组件配置错行到非组件行") + + return errors, warnings +``` + +### 校验结果处理 + +| 级别 | 条件 | 处理方式 | +|------|------|---------| +| **错误 (Error)** | A-G 不对齐 / B-G ID不一致 / G列错行到非组件行 | 立即报告用户,附具体行号和错位内容,暂停后续写入操作 | +| **警告 (Warning)** | E-F 疑似缺失 / 其他非关键不对齐 | 汇总报告,继续执行但标注"需人工确认" | + +### 校验触发时机 + +1. **读取后立即校验**:任何读取 Sheet 数据的操作完成后,自动执行上述校验 +2. **写入前校验**:写入操作前,先读取目标区域,校验当前数据对齐状态 +3. **写入后回读校验**:写入完成后回读,再次执行对齐校验,确保写入未引入新错位 + ## 异常处理 | 错误码 | 含义 | 处理方式 | diff --git a/business_production/组件生产/skills/dialogue-interaction-config/SKILL.md b/business_production/组件生产/skills/dialogue-interaction-config/SKILL.md index f5f7f6d..60c1dad 100644 --- a/business_production/组件生产/skills/dialogue-interaction-config/SKILL.md +++ b/business_production/组件生产/skills/dialogue-interaction-config/SKILL.md @@ -31,18 +31,35 @@ metadata: ## 通用配置规则(所有对话类互动通用) ### 通用字段规范 + +> ⚠️ **禁止字段**:G列组件内容中**禁止**出现 `【组件ID】`(B列已有)、`【知识点】`(H列已有)。 + | 字段 | 要求 | 示例 | |------|------|------| | 【任务标题】 | 10字以内,清晰说明任务内容,避免使用"-",多部分用"(一)"标识 | 与调酒师对峙(一) | -| 【情境引入】 | 每行一句对话,格式为`角色名: 对话内容`,无情境引入填"无" | User: He already ran away.
Piper: I didn't see him on my way here. | -| 【后置对话】 | 每行一句对话,无后置对话填"无" | 无 | -| 【资源配置】 | 无资源填"无";有资源时填写资源命名和出现时机:
1. 图片命名:`组件ID.png`
2. 音频命名:`组件ID.mp3`
3. 出现时机:可填【情境引入】/【互动内容】/【互动反馈】/【后置对话】,多时机并列 | 图片时机:
互动内容
互动反馈
音频载体:Pioneer Band | +| 【情境引入】 | 每行一句对话,格式为`角色名: 对话内容`,无情境引入填"无"。🚫 **禁止编造**,必须来自台词池(组件行 F 列 + 后续连续 User 台词)。单句台词池且含知识点 → 填「无」 | User: He already ran away.
Piper: I didn't see him on my way here. | +| 【后置对话】 | 每行一句对话,无后置对话填"无"。🚫 **禁止编造**,必须来自台词池。知识点之后无 User 台词 → 填「无」 | 无 | +| 【资源配置】 | 无资源填"无";有资源时填写资源出现的时机(如"情境引入""互动内容"),多时机并列换行
🚫 禁止使用组件ID命名文件(如 `1224204.png`),文件名由下游系统自动生成
🚫 不需要"图片时机:""音频载体:"等前缀 | 情境引入
互动内容
互动反馈 | | 【互动反馈】 | 分正确反馈和错误反馈,格式为`角色名: 反馈内容`,正确反馈非必填,无则填"无" | 正确 Piper: Thank you, my friend.
错误 Piper: I don't think so. | --- ## 知识点优先分配规则(强制执行) +### 台词池规则(强制执行) + +**组件内容除【互动反馈】外,其余台词均来自台词池,禁止编造。** + +**台词池定义:** 组件行 F 列 + 后续连续 User 台词(到 TL / 下一组件截止)。 + +**分配规则:** +- 含知识点的台词 → 【互动内容】 +- 知识点之前的 User 台词 → 【情境引入】 +- 知识点之后的 User 台词 → 【后置对话】或选项反馈 +- 单句台词池且含知识点 → 【情境引入】填「无」 + +> ⚠️ 核心互动不适用此规则。 + ### 核心原则 当组件中 User 有多句台词时,**【互动内容】必须是包含知识点的那句台词**。不包含知识点的台词,根据其与知识点台词的相对位置分配: @@ -196,19 +213,16 @@ Piper: You're lying! It must be your mistake! - 【互动反馈】:本类型不单独设置互动反馈字段,反馈内容已整合在互动内容的各选项中 - 【资源配置】: - 类型为「对话选读」时,填写:`无` - - 类型为「对话选读-配图」时,填写图片时机 + 音频载体(格式见下方示例) - - 资源命名规范:图片文件名 `{组件ID}.png`,音频文件名 `{组件ID}.mp3` + - 类型为「对话选读-配图」时,填写资源出现时机(格式见下方示例) + - 资源描述出现时机(非文件名),文件名由下游系统自动生成 #### 示例(对话选读-配图) ``` 【任务标题】加入搏斗俱乐部 【资源配置】 -图片时机: 互动内容 互动反馈 -音频载体:Pioneer Band - 【情境引入】 Johnny: What do you think of the club? diff --git a/business_production/组件生产/skills/info-interaction-config/SKILL.md b/business_production/组件生产/skills/info-interaction-config/SKILL.md index 92a7487..44c9d68 100644 --- a/business_production/组件生产/skills/info-interaction-config/SKILL.md +++ b/business_production/组件生产/skills/info-interaction-config/SKILL.md @@ -16,8 +16,10 @@ metadata: ## 通用规则(6类共享) +> ⚠️ **禁止字段**:G列组件内容中**禁止**出现 `【组件ID】`(B列已有)、`【知识点】`(H列已有)。 + - 【任务标题】:中文口语化,10字以内,避免「-」,有序用「(一)」,含英文单词时前后留空格 -- 【资源配置】:图片文件名 = `{组件ID}.png`,不含音频配置 +- 【资源配置】:描述资源出现的时机(如"情境引入""互动内容"),非文件名。无资源填"无"。🚫 禁止使用组件ID命名文件(如 `1224204.png`),文件名由下游系统自动生成 - 【后置对话】:无则填「无」 --- @@ -41,7 +43,7 @@ metadata: ``` 【任务标题】购买葡萄 【资源配置】 -图片文件名:0216002.png +互动内容 【互动内容】 任务描述:请填入"葡萄"的正确的英文拼写 题干:G(2)pe @@ -83,7 +85,7 @@ metadata: ``` 【任务标题】填写信息表 【资源配置】 -图片文件名:0216002.png +互动内容 【互动内容】 任务描述:请在空白处填入正确的单词,组成句子 选项1:is @@ -115,7 +117,7 @@ metadata: ``` 【任务标题】描述房间里的物品 【资源配置】 -图片文件名:0216002.png +互动内容 【互动内容】 任务描述:请用英文描述图片中房间里的物品 参考词汇:sofa, window, door, table @@ -148,7 +150,7 @@ metadata: ``` 【任务标题】补全句子中的单词 【资源配置】 -图片文件名:0216002.png +互动内容 【互动内容】 题干:The cat is sitting on the ___. 选项1:chair(正确) @@ -183,7 +185,7 @@ metadata: ``` 【任务标题】填入正确的单词 【资源配置】 -图片文件名:0216002.png +互动内容 【互动内容】 题干:The ___ is on the desk. 答案:book @@ -216,7 +218,7 @@ metadata: ``` 【任务标题】补全这个句子 【资源配置】 -图片文件名:0216002.png +互动内容 【互动内容】 题干:The boy ___ to school every day. 答案:The boy walks to school every day. diff --git a/business_production/组件生产/skills/script-component-production/SKILL.md b/business_production/组件生产/skills/script-component-production/SKILL.md index e43b4df..8845148 100644 --- a/business_production/组件生产/skills/script-component-production/SKILL.md +++ b/business_production/组件生产/skills/script-component-production/SKILL.md @@ -60,6 +60,22 @@ description: 剧本互动组件内容生产/审校/回填技能(不涉及JSON - 识别嵌入的 Sheet token(如 ``) - 读取 Sheet 元数据(sheet_id / 行数 / 列数 / 冻结行) +### 节点1.5:错行/乱行校验(强制执行) + +**读取 Sheet 数据后,在进入列结构解析前,必须先执行 `feishu-embedded-sheet` 技能中的「读取后错行/乱行校验」:** + +校验内容(详见 `feishu-embedded-sheet` SKILL.md「读取后错行/乱行校验」章节): +- **规则1:A列-G列对齐** — 组件类型行必须有组件配置,组件配置不能出现在非组件行 +- **规则2:B列-G列对齐** — 组件ID与G列中的【组件ID】必须一致 +- **规则3:E列-F列对齐** — 有角色名的行应有对应台词 +- **规则4:G列归属校验** — 组件配置不能错位到 TL / 空行 + +**校验结果处理:** +- 发现 Error(错行/乱行)→ 立即报告用户,附具体行号和错位内容,**暂停后续所有操作** +- 发现 Warning(疑似缺失)→ 汇总报告,继续执行但标注"需人工确认" + +**校验通过后才能进入节点2。** + ### 节点2:列结构解析 标准剧本表格列: | A | B | C | D | E | F | G | H | @@ -129,11 +145,8 @@ description: 剧本互动组件内容生产/审校/回填技能(不涉及JSON 所有组件内容按以下字段顺序输出,无内容的字段填「无」: ``` -【组件ID】020501 【任务标题】介绍照片 -【资源配置】 -图片时机:无 -音频载体:无 +【资源配置】无 【情境引入】 Johnny : What's That? @@ -149,10 +162,13 @@ This is my picture. It's ___, green and orange.(音频) 【后置对话】 无 +``` -【知识点】 -单词:blue, orange -句型:It is... +**禁止输出的字段:** +- ❌ `【组件ID】` — 组件ID已在B列存储,G列无需重复 +- ❌ `【知识点】` — 知识点已在H列存储,G列无需重复 +- ❌ 资源配置中使用组件ID命名文件(如 `1224204.png`)— 资源文件名由下游系统自动生成 +- ❌ 资源配置中使用"图片时机:""音频载体:"等前缀 — 直接写出现时机即可 --- @@ -161,7 +177,6 @@ This is my picture. It's ___, green and orange.(音频) 对话选读的选项默认带音频标记`(音频)`,不需要音频时标注`(无音频)`: ``` -【组件ID】020501 【任务标题】解释他们的歉意 【资源配置】无 【情境引入】无 @@ -173,8 +188,6 @@ This is my picture. It's ___, green and orange.(音频) 选项2:They feel bad about what they did. - 反馈 DiDi: It's okay. 【后置对话】无 -【知识点】 -句型:They feel... ``` ``` @@ -198,17 +211,19 @@ This is my picture. It's ___, green and orange.(音频) | 6 | 选项格式 | 对话类用「选项1:XXX」、图片类用00/01/02编号 | | 7 | 反馈格式 | 错误反馈带角色名、自然对话、非指令式 | | 8 | 高亮规则 | 图片类仅知识点词加$、对话类不加 | -| 9 | 情境引入 | 无内容填「无」,多句换行,格式为「角色名: 台词」。🚫 **禁止引用组件行之前任何行的台词**(含前一行的E列/F列原文),必须来自组件自身场景设定。审校时逐行对比组件行之前的E/F列,确认无重合 | -| 10 | 后置对话 | 取组件行之后的紧接台词,无则填「无」。🚫 **禁止直接复制后一行台词原文**,相同则填「无」。审校时逐行对比组件行之后的E/F列,确认无重合 | +| 9 | 情境引入 | 无内容填「无」,多句换行,格式为「角色名: 台词」。🚫 **禁止编造**,必须来自台词池(见检查项 11.1)。单句台词池且含知识点 → 填「无」。审校时逐行对比 G 列情境引入与台词池,发现编造即删除 | +| 10 | 后置对话 | 无内容填「无」。🚫 **禁止编造**,必须来自台词池(见检查项 11.1)。知识点之后无 User 台词 → 填「无」。审校时逐行对比 G 列后置对话与台词池,发现编造即删除 | | 11 | 知识点优先分配 | **【互动内容】必须包含知识点**。当 User 有多句台词时,不包含知识点的台词:在知识点台词之前放入【情境引入】,在知识点台词之后放入【后置对话】。审校时逐一检查每句 User 台词的分配是否符合此规则 | +| 11.1 | 台词池规则 | **组件内容除【互动反馈】外,其余台词均来自台词池,禁止编造。** 台词池 = 组件行 F 列 + 后续连续 User 台词(到 TL/下一组件截止)。分配规则:含知识点的台词 → 【互动内容】;知识点之前的 User 台词 → 【情境引入】;知识点之后的 User 台词 → 【后置对话】或选项反馈。单句台词池且含知识点 → 【情境引入】填「无」。核心互动不适用此规则。审校时逐行对比 G 列情境引入/后置对话与台词池,发现编造即删除 | | 12 | 超纲检查 | 词汇/句型在对应级别词库/句型库范围内 | | 13 | 标点符号 | 统一使用标准英文标点,禁止「~」「!!!」等非标准标点 | | 14 | 图片类资源配置 | 图片类互动(图片单选/多选/有序/拖拽)**不包含【资源配置】字段** | | 15 | 图片类辅助信息 | 图片类互动在「正确:XX」后添加 `辅助信息:{单词} {中文释义}。`,释义参考知识点 Sheet | | 16 | 对话朗读反馈 | 对话朗读**不包含【互动反馈】字段** | -| 17 | 配图资源配置 | A列含"配图"时,仅保留`图片时机`(不写`音频载体`),根据有内容的 section 动态列出 | +| 17 | 配图资源配置 | A列含"配图"时,【资源配置】直接列出资源出现的时机(如"情境引入""互动内容"),不需要"图片时机:""音频载体:"等前缀 | | 18 | 答案随机化 | 听力选择/对话选择等多小题组件,各题正确选项位置必须随机分布,禁止全部集中在同一序号。生成后统计各题正确选项序号,若全部相同则重新随机 | | 19 | 对话选读选项音频 | 对话选读类型,选项默认带音频标记`(音频)`,不需要音频时标注`(无音频)`。生成后检查每个选项行是否包含音频标记 | +| 20 | 禁止冗余字段 | G列组件内容中**禁止出现**以下字段:`【组件ID】`(B列已有)、`【知识点】`(H列已有)、资源配置中使用组件ID命名文件(如 `1224204.png`)。审校时扫描全部G列内容,发现即删除 | #### 回填 - 将生成的结构化文本写入列G(组件配置) diff --git a/business_production/组件配置/interactive-component-json/db/components.db b/business_production/组件配置/interactive-component-json/db/components.db index 497d95ebaa6dcac2cd53163f0fb46c4afc215d10..82f49bb709145acb62c2b69effb1a51cd9cc37c8 100644 GIT binary patch delta 5954 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 diff --git a/business_production/组件配置/interactive-component-json/outputs/L1-S2-U19-L2 太空任务 Space Mission_20260618_153707.html b/business_production/组件配置/interactive-component-json/outputs/L1-S2-U19-L2 太空任务 Space Mission_20260618_153707.html new file mode 100644 index 0000000..6ab1d40 --- /dev/null +++ b/business_production/组件配置/interactive-component-json/outputs/L1-S2-U19-L2 太空任务 Space Mission_20260618_153707.html @@ -0,0 +1,5767 @@ + + + + + +L1-S2-U19-L2 太空任务 Space Mission — 组件JSON报告 + + + + + +
+ + + + +
+
+
就绪
+
+
+ 成功: 0 + 失败: 0 +
+
+ +
+
+

L1-S2-U19-L2 太空任务 Space Mission

+
+ 生成时间: 2026-06-18 15:37:07 + 模型: doubao-seed-2.0-pro + Wiki: AD7twKUFpi4b6WkDRWPclLx3ndd +
+
+ +
+
+
1
核心互动
+
16
中互动
+
+
17
总组件
+
17
成功
+
0
失败
+ +
+ + +
+
+ 1 + 图片多选 + cId: 1219201 + mid_image_multiple + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 2 + 对话朗读 + cId: 1219202 + mid_dialog_repeat + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 3 + 图片单选 + cId: 1219203 + mid_image_choose + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
meaning
resourceMapping
question
imageInfo
optionList
answer
preDialog
tip
corFeedback
errFeedback
postDialog
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 4 + 对话朗读 + cId: 1219204 + mid_dialog_repeat + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 5 + 对话挖空 + cId: 1219205 + mid_dialog_fillin + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 6 + 对话朗读 + cId: 1219206 + mid_dialog_repeat + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 7 + 对话挖空 + cId: 1219207 + mid_dialog_fillin + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionGroupList
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 8 + 对话朗读 + cId: 1219208 + mid_dialog_repeat + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 9 + 对话组句 + cId: 1219209 + mid_dialog_sentence + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 10 + 核心看图组句 + cId: 1219210 + core_writing_imgMakeSentence + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cId
cType
title
taskDesc
sceneDesc
img
plotSummary
stemDesc
key
cDesc
+
+ +
+ +
+ +
+ + + + + + + + + + + +
inputType
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + +
learningPart
closing
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + +
title
taskDesc
sceneDesc
knowledge
passCondition
textList
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+ +
+ +
```
+# 问题1:
+Brainy: 你要在任务清单开头描述爸爸妈妈的身份,你想到可以说“爸爸妈妈是超棒的宇航员”,现在需要把句子补充完整:Mum and Dad are great ___.
+用户选项:
+(选项 A)astronauts [正确]
+  Brainy: 答对啦!astronauts是宇航员的复数形式,刚好对应主语Mum and Dad两个人,这句话完整表达了“爸爸妈妈是超棒的宇航员”的意思哦。
+(选项 B)teachers
+  Brainy: 不对哦,teachers是老师的意思,咱们要表达的是宇航员的身份,再试试呀。
+(选项 C)doctors
+  Brainy: 不对哦,doctors是医生的意思,和咱们要描述的宇航员身份不符,再想一想~
+
+# 问题2:
+Brainy: 介绍完爸爸妈妈的身份,你也想说说自己,要表达“我也是一名超棒的宇航员”,现在把句子补充完整:I am a ___ too!
+用户选项:
+(选项 A)astronaut
+  Brainy: 不对哦,这里还缺少“great(超棒的)”来修饰astronaut,没有完整表达出“超棒的宇航员”的意思,再试试呀。
+(选项 B)great astronaut [正确]
+  Brainy: 太棒了!great修饰astronaut,正好对应“超棒的宇航员”,完整表达了你想说的内容~
+(选项 C)astronauts
+  Brainy: 不对哦,astronauts是复数形式,前面有不定冠词a,后面要接可数名词单数,而且也缺少了“great”哦,再想一想。
+
+# 问题3:
+Brainy: 接下来你要在清单里说明爸爸妈妈有需要完成的工作,下面哪个句子是正确的表达呢?
+用户选项:
+(选项 A)Mum and Dad have jobs. [正确]
+  Brainy: 完全正确!这句话的意思是“爸爸妈妈有工作”,刚好符合你要表达的内容哦。
+(选项 B)Mum and Dad have suit.
+  Brainy: 不对哦,suit是“套装”的意思,而且语法也不正确,咱们要表达的是“有工作”,再试试呀。
+(选项 C)Mum and Dad have jogs.
+  Brainy: 不对哦,jogs是“慢跑”的意思,和咱们要表达的“工作”含义不符,再想一想~
+
+# 问题4:
+Brainy: 说完爸爸妈妈的工作,你也想说明自己也有任务要完成,要表达“我也有一份工作”,下面哪个句子是正确的?
+用户选项:
+(选项 A)I have an job too!
+  Brainy: 不对哦,job是以辅音音素开头的单词,前面要用不定冠词a而不是an,再试试呀。
+(选项 B)I have a job too! [正确]
+  Brainy: 太厉害啦!这句话准确表达了“我也有一份工作”的意思,语法和含义都完全正确~
+(选项 C)I job have a too!
+  Brainy: 不对哦,这个句子的语序是混乱的,正确的陈述句语序应该是主语+谓语+宾语+其他成分,再调整一下试试~
+```
+
+ +
+ +
Mum and Dad are great astronauts. I am a great astronaut too! Mum and Dad have jobs. I have a job too!
+(爸爸妈妈是很棒的宇航员。我也是一名很棒的宇航员!爸爸妈妈有工作。我也有一份工作!)
+
+
+ + + +
+
+ +
+
+ 11 + 对话朗读 + cId: 1219211 + mid_dialog_repeat + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
img
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 12 + 对话组句 + cId: 1219212 + mid_dialog_sentence + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 13 + 对话组句 + cId: 1219213 + mid_dialog_sentence + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
optionList
answer
tip
corFeedback
errFeedback
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 14 + 对话选读 + cId: 1219214 + mid_dialog_select + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
optionList
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 15 + 对话朗读 + cId: 1219215 + mid_dialog_repeat + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 16 + 对话朗读 + cId: 1219216 + mid_dialog_repeat + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
resourceMapping
preDialog
imgShowTimingList
question
postDialog
+
+ +
+ +
+ +
+ + + + + + + + + + + + + + + +
pushType
cType
cId
kpInfo
+
+ +
+
+ + + +
+
+ +
+
+ 17 + 对话表达 + cId: 1219217 + mid_dialog_express + + + + + + 已保存 + +
+
+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cType
cId
title
asrPrompt
resourceMapping
preDialog
imgShowTimingList
img
tip
corFeedback
errFeedback
question
example
postDialog
+
+ +
+
+ + + +
+
+ + +
+ + + + + + + \ No newline at end of file diff --git a/business_production/组件配置/interactive-component-json/prd.md b/business_production/组件配置/interactive-component-json/prd.md index ae44ba6..202a600 100644 --- a/business_production/组件配置/interactive-component-json/prd.md +++ b/business_production/组件配置/interactive-component-json/prd.md @@ -278,3 +278,35 @@ taskData textData sequenceData learningData - 看图选词 (ID=1201001): 5步生成全部通过,taskData/questionGroupData/studyData 结构正确,耗时~47s - 口语快答 (ID=0325001): 7步生成全部通过,taskData/settingData/configData/learningData 结构正确,耗时~90s - HTML验证报告: `outputs/V5核心互动验证 - imageDrag + speaking` + +--- + +## v9 写作类核心互动-看图组句 学习内容提取修复(2026-06-18) + +### 问题 +`core_writing_imgMakeSentence`(看图组句)和 `core_writing_imgWrite`(看图撰写)的 Phase 12.7 实现中, +`学习内容` 字段在剧本配置中无 `【学习内容】` section 时错误地回退到 `知识`(词汇表),导致: +1. Step 1(学习流程配置):以词汇而非句子作为练习目标,生成内容错误 +2. Step 5(studyInfo):`leadIn.image` 无图片编号可关联,图片配对失败 + +### 根本原因 +写作互动 bitable 工作流中,`学习内容` 是独立的 LLM 提取步骤(从写作材料答案+图片编号生成)。 +新流程合并后,该步骤被遗漏,未作规则化替代。 + +### 修复 +在 `scripts/generate_json.py` 中新增: +- **`_extract_writing_material_learning_content(writing_material_text)`**:规则解析写作材料, + 提取每个 `# 句子 N` 块的答案和图片编号,按图片编号排序,输出格式 `答案 图片编号` 每行一条。 +- **`_generate_core_writing()` 中自动触发**:对 `is_img_type` 类型且无 `【学习内容】` section 时, + 调用上述函数覆盖 `fields["学习内容"]`,同时应用于 Step 1 和 Step 5。 + +### 输出样例(对应看图组句样例配置) +``` +astronauts 00 +great astronaut 01 +Mum and Dad have jobs. 02 +I have a job too! 02 +``` + +### 最终推送 JSON(看图组句 / 看图撰写) +`taskInfo` · `textInfo` · `studyInfo` · `evalInfo`(共 4 个,已在 html_report.py PUSH_FIELD_MAP 注册) diff --git a/business_production/组件配置/interactive-component-json/scripts/__pycache__/generate_json.cpython-312.pyc b/business_production/组件配置/interactive-component-json/scripts/__pycache__/generate_json.cpython-312.pyc index 993857046f07eff01f3866062dc2e3180052e08e..e25828f93a97ed66998c494d0fe120082421f0ac 100644 GIT binary patch delta 4487 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 Df2CUU delta 2808 zcma)7du)?c6z}=^+PXgW=(n}ox^6tS6&TytgH~azJjXUBP!OmfjNQVRdz7yQ9r-FC zB#0(PsmTq{q5Q#g4nt7z!$%Z_e-uQGArcS)g&-IOqJIz#;<;bft?S6*m-L+TJNMjk zf9IT=+t+t!cHUJR&ln6k1%AEy^0pPbUo%?Zz|o@RN>~uyrkuz(5!+7iHjuoX3U4E^ zqg+6q2%l8)TNjeCxUz_hL*HVukc>y&YVW80uE?IC?jbX(-#sbd=Bd+DT3LfXcmfMtes`r?(RnoWj@H&su?>w~N$z z{lx9vNM@2*WHy--QF;Z82#~q`5RH*{G?00u&gb_DWWH~suj_Dqzc#w+4YFwbDcf#G zJ@L{PB)PLgG(Z}M;U@VIOy92>NWOX0p~I}7chg+%d9dc-eTfyDYX#FKz$s6R+>`; z^&IHws}5L|Nwm9Rzk($7C_}oSCVIL;K@YA3bH1pPM<;e}45YH^g2+3btHoaB~8Rh9@;^9ey z4a<^ma*3EF>XCl*)=rKn2iGk_v@N7`L_@8i>;&2+WkFl)NYNV1i`lV^f;FxzE0z_0 z^F)Td9IwYXG5dd1H)Ztd_+i!M$kkO~by{MVN0UP;y z3?*+=+GX-ksuSNBF-Y60Q9FZ9*3Fd_uQZLJ73dBb8vM6;BV1xThI@rxT2c)gxLyc1UCO1$ zs$nnm(Wa^3g;TU|D%i48g-*8Zc_!G4EEt)U5x&<}NDWTllkCEB=E(`WciHGXC*;#j zPN>1{$DH6wJ*(*TQ7Y_ZaY{mcCmH zr$$D+;)X)ad5k!xl|FLAJ!R?-EVqt{W2~Y+`tckLd51ar>CHJ%rg@Lq?^D}cs7<+q z_IbwN2DG6F7SZ-1D5Z_X&@L^R2mk7@5uU~HQ@T6>mfFDyQJc>4z&`F!2%- zC#8cPH~=_;+NJOYTnZok(IVYn3Pw<0#S985Wf`Oy;T*O3UbG-ejb1fz;)L zdMG%>5bL@_E4W$C8%)UFUzv59UR(#8;4EFZ9=!F}S+qPqFI&9L;6OgKy3yyzx@hWX z4z{$eZt3dqcXj$YgTl`kc2Vzd76QK2ffiwdKPdb{|5^_-c{VPA%|&3n7g&3RtF)mN z>NIQ1hg8_*-&umql^sx2^vGjUS!7N}NocYv-5 zfyXJ|VRp-eM{#9C6" │ + ├── 0. 错行/乱行校验(强制执行):读取 Sheet 后立即执行 + │ `feishu-embedded-sheet` 技能中的「读取后错行/乱行校验」 + │ 检查 A-G 列对齐、B-G 列 ID 一致、E-F 列角色台词对齐、G 列归属 + │ 发现 Error → 立即报告用户并暂停;Warning → 汇总报告但继续 ├── 1. 解析飞书链接 → 获取文档 → 定位内嵌 Sheet ├── 2. 读取 F 列全部内容(含行号) ├── 3. 按规则链顺序执行: │ ├── 规则1:长句拆分(如需插入行,从下往上处理) │ └── 规则2:标点检查(逐行扫描 + 修正) ├── 4. 输出操作报告 - └── 5. 回读验证 + └── 5. 回读验证(含二次错行校验) ``` ## 输出格式 diff --git a/memory/.dreams/events.jsonl b/memory/.dreams/events.jsonl index f9c7361..a19fc80 100644 --- a/memory/.dreams/events.jsonl +++ b/memory/.dreams/events.jsonl @@ -131,3 +131,9 @@ {"type":"memory.recall.recorded","timestamp":"2026-06-17T02:46:50.273Z","query":"武钰涵 reading_pic_judge 题组 审校 2026-06","resultCount":4,"results":[{"path":"memory/2026-05-07.md","startLine":1,"endLine":20,"score":1},{"path":"memory/2026-05-11.md","startLine":1,"endLine":25,"score":1},{"path":"memory/2026-05-17.md","startLine":19,"endLine":40,"score":1},{"path":"memory/2026-05-12.md","startLine":181,"endLine":203,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-17T02:47:04.085Z","query":"武钰涵 ou_a4aaa641585b38d1042608b9b7f05a17 审校 看图判断","resultCount":4,"results":[{"path":"memory/2026-05-27.md","startLine":1,"endLine":16,"score":1},{"path":"memory/2026-05-14.md","startLine":257,"endLine":266,"score":1},{"path":"memory/2026-05-18.md","startLine":583,"endLine":633,"score":1},{"path":"memory/2026-05-18.md","startLine":305,"endLine":346,"score":1}]} {"type":"memory.recall.recorded","timestamp":"2026-06-17T02:48:55.170Z","query":"武钰涵 reading_pic_judge 题组1 题组2 This is my bus What time 2026-06-17","resultCount":4,"results":[{"path":"memory/2026-05-07.md","startLine":1,"endLine":20,"score":1},{"path":"memory/2026-05-11.md","startLine":1,"endLine":25,"score":1},{"path":"memory/2026-05-17.md","startLine":19,"endLine":40,"score":1},{"path":"memory/2026-05-12.md","startLine":181,"endLine":203,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-18T02:21:31.142Z","query":"L2 A级 句子题型 单元挑战 难度分级","resultCount":2,"results":[{"path":"memory/2026-05-25.md","startLine":283,"endLine":302,"score":1},{"path":"memory/2026-05-25.md","startLine":118,"endLine":137,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-18T04:35:22.376Z","query":"L1 剧本 单元数 阶段 unit 数量","resultCount":5,"results":[{"path":"memory/2026-05-26.md","startLine":130,"endLine":166,"score":1},{"path":"memory/2026-05-28.md","startLine":46,"endLine":62,"score":1},{"path":"memory/2026-05-25.md","startLine":283,"endLine":302,"score":1},{"path":"memory/2026-05-29.md","startLine":1,"endLine":14,"score":1},{"path":"memory/2026-05-25.md","startLine":118,"endLine":137,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-18T04:35:56.737Z","query":"L1 剧情 每单元 集数 lesson 数量","resultCount":5,"results":[{"path":"memory/2026-05-26.md","startLine":130,"endLine":166,"score":1},{"path":"memory/2026-05-28.md","startLine":46,"endLine":62,"score":1},{"path":"memory/2026-05-25.md","startLine":283,"endLine":302,"score":1},{"path":"memory/2026-05-29.md","startLine":1,"endLine":14,"score":1},{"path":"memory/2026-05-25.md","startLine":118,"endLine":137,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-18T04:36:05.631Z","query":"英文台词 L1 每单元 lesson 数量 5课 结构","resultCount":6,"results":[{"path":"memory/2026-05-28.md","startLine":46,"endLine":62,"score":1},{"path":"memory/2026-05-28.md","startLine":60,"endLine":66,"score":1},{"path":"memory/2026-05-29.md","startLine":1,"endLine":14,"score":1},{"path":"memory/2026-05-28.md","startLine":35,"endLine":49,"score":1},{"path":"memory/2026-05-18.md","startLine":783,"endLine":810,"score":1},{"path":"memory/2026-05-08.md","startLine":33,"endLine":55,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-18T04:36:16.755Z","query":"L1 每单元 lesson 5课 L1-L5 结构","resultCount":5,"results":[{"path":"memory/2026-05-26.md","startLine":130,"endLine":166,"score":1},{"path":"memory/2026-05-28.md","startLine":46,"endLine":62,"score":1},{"path":"memory/2026-05-25.md","startLine":283,"endLine":302,"score":1},{"path":"memory/2026-05-29.md","startLine":1,"endLine":14,"score":1},{"path":"memory/2026-05-25.md","startLine":118,"endLine":137,"score":1}]} +{"type":"memory.recall.recorded","timestamp":"2026-06-18T08:09:19.223Z","query":"L1 句子 结构 第三级 知识维度 句型结构 看图组句 句子补全","resultCount":2,"results":[{"path":"memory/2026-05-26.md","startLine":130,"endLine":166,"score":1},{"path":"memory/2026-05-28.md","startLine":46,"endLine":62,"score":1}]} diff --git a/memory/.dreams/short-term-recall.json b/memory/.dreams/short-term-recall.json index ba761de..9b54969 100644 --- a/memory/.dreams/short-term-recall.json +++ b/memory/.dreams/short-term-recall.json @@ -1,6 +1,6 @@ { "version": 1, - "updatedAt": "2026-06-17T02:48:55.170Z", + "updatedAt": "2026-06-18T08:09:19.223Z", "entries": { "memory:memory/2026-05-07.md:57:74": { "key": "memory:memory/2026-05-07.md:57:74", @@ -209,13 +209,13 @@ "endLine": 55, "source": "memory", "snippet": "**图片资源新规:** - 每个题组共享一张图(非每题独立配图) - 产出 JSON 同时输出图片描述 prompt(英文,卡通简线条风格) - prompt 写入 bitable `图片描述` 列,格式 `{\"first\": \"...\", \"second\": \"...\"}` **通用化写入流程:** - 单元挑战全题型适用:定位 bitable 表 → 创建/更新记录 → 写入 `题目集合 ID` + `jsonData` + `图片描述` - 各题型仅 jsonData 结构不同,写入流程统一 **重写文件:** - `business_production/单元挑战/skills/unit_challenge/questions/writing/common/writing_pic_qa/SKILL.md`(11节完整规范) - `business_production/单元挑战/skills/unit_challenge/questions/writing/writing_pic_qa/SKILL.md`(简化为快速入口) **bitable 更新:** 已将新 JSON(每题组1图2题)+ 图片描述写入 `recviZlAxxXlAb` ### 刘彦江 (ou_5af74c1fb96042e33cc0f16b5ca02cf4) — 图片描述格式修正 - **时间:** 09:46 ~ 09:51 - **修正:** 用户给出中文样例格式,要求图片描述从英文 prompt 改为纯中文结构化列表 - **新格式:** 编号 `1.` / `2.` 自上而下,每段", - "recallCount": 14, + "recallCount": 15, "dailyCount": 0, "groundedCount": 0, - "totalScore": 14, + "totalScore": 15, "maxScore": 1, "firstRecalledAt": "2026-05-11T02:19:37.985Z", - "lastRecalledAt": "2026-06-10T02:20:27.209Z", + "lastRecalledAt": "2026-06-18T04:36:05.631Z", "queryHashes": [ "6f88450e9f9b", "be437071312f", @@ -230,7 +230,8 @@ "240a6a5dca41", "7e6aa000abdb", "9018e8896dcd", - "3ac726b21876" + "3ac726b21876", + "533765637e65" ], "recallDays": [ "2026-05-11", @@ -240,7 +241,8 @@ "2026-05-25", "2026-05-26", "2026-06-02", - "2026-06-10" + "2026-06-10", + "2026-06-18" ], "conceptTags": [ "创建/更新记录", @@ -2750,13 +2752,13 @@ "endLine": 62, "source": "memory", "snippet": "- B级规则:听力句子 5-8 词(均 7 词),每组 3 张同类物品不同属性图片 - 能力标签:显性事实理解|关键词识别 ×2 + 基础语境理解|场景/物品/动作识别 ## 梁辰(user_id: ou_28f02dcada1193913cfbb6310f8daf07)— HTML 诊断页面教研规则 JS 文件 - 用户有一个 L1 关卡诊断工作台 HTML 页面(部署在腾讯云空间),当前只做数量级统计,缺少教研规则校验 - 需求:提供可嵌入 HTML 的前端 JS 校验规则文件,使诊断有据可依 - 输出:`output/l1_pedagogy_rules.js`(42KB),包含 8 个校验维度: 1. 词汇超纲检测(基于 L1/L2 词库) 2. 英式拼写检测(color→colour 等 115 组映射) 3. Markdown 标记检测(`**`/`#`/`>` 等) 4. 标点规范检测(全角混入、`~`、`!!!`) 5. 题型-阶段匹配校验(20 种题型对应的 L1/L2 阶段映射) 6. 台词质量分析(句子长度、负面评价) 7. 知识点曝光度 8. 句型合规检测 - 接入方式:`` + 调用 `PedagogyRules.validate(summary, level)` - 数据源:L1 词库 147 词(过滤 enabled=true)、L2 词库 52 词、L1 句型 8 个、L2 句型(从 437MB bitable 导出中提取唯一结", - "recallCount": 10, + "recallCount": 15, "dailyCount": 0, "groundedCount": 0, - "totalScore": 10, + "totalScore": 15, "maxScore": 1, "firstRecalledAt": "2026-05-29T00:23:17.391Z", - "lastRecalledAt": "2026-06-17T02:17:21.800Z", + "lastRecalledAt": "2026-06-18T08:09:19.223Z", "queryHashes": [ "c1d4076205e1", "4aa0ef719160", @@ -2767,14 +2769,20 @@ "3ac726b21876", "867f7264cd0e", "5f16a7426a41", - "7c761b49b948" + "7c761b49b948", + "f7926d356e13", + "341edb569d53", + "533765637e65", + "367cd3303e1d", + "fc0ce35c5668" ], "recallDays": [ "2026-05-29", "2026-06-01", "2026-06-02", "2026-06-10", - "2026-06-17" + "2026-06-17", + "2026-06-18" ], "conceptTags": [ "5-8", @@ -2859,18 +2867,23 @@ "endLine": 166, "source": "memory", "snippet": "## 英文台词生产 [童瑶] — L1-S2-U20 全系列 ### L1-S2-U20-L1 冠军计划 - **文档:** `EbkUwEjaticOkHknf0icsQ2Yn4Q` | Sheet `6aqvM2` - 对话 148 行,写入 E 列 ✅ ### L1-S2-U20-L2 发球大战 - **文档:** `BvSyw1vlfiwCr5kjkPmcUYXynZd` | Sheet `wMQVyV` - 对话 135 行,写入 F 列 ✅ ### L1-S2-U20-L3 曲棍球练习赛 - **文档:** `MrsAwcYq2iCy7Tkk3dkclS0mnlg` | Sheet `6aqvM2` - 对话 149 行,28 行修改,写入 F 列 ✅ - 知识点:hockey/interesting/one/try + `have a try`/`One...the other...` ### L1-S2-U20-L4 网球明星 - **文档:** `GT4awLQx9iOfWHk00ZFcHQzbnzT` | Sheet `wMQVyV` - 对话 112 行,26 行修改,写入 F 列 ✅ - 知识点:tennis/tennis racket/bounce/wave + `wave(s) to`/`Hit the ball!` ### L1-S2-U20-L5 足球接力赛 - **文档:** `VEGwwoVdTiFu00koNoOc1MGhnec` | Sheet `AV1gO0` - 对话 137 行,28 行修改,写入 F 列 ✅ - 知识点:", - "recallCount": 1, + "recallCount": 5, "dailyCount": 0, "groundedCount": 0, - "totalScore": 1, + "totalScore": 5, "maxScore": 1, "firstRecalledAt": "2026-05-29T02:33:30.526Z", - "lastRecalledAt": "2026-05-29T02:33:30.526Z", + "lastRecalledAt": "2026-06-18T08:09:19.223Z", "queryHashes": [ - "4aa0ef719160" + "4aa0ef719160", + "f7926d356e13", + "341edb569d53", + "367cd3303e1d", + "fc0ce35c5668" ], "recallDays": [ - "2026-05-29" + "2026-05-29", + "2026-06-18" ], "conceptTags": [ "l1-s2-u20", @@ -2890,23 +2903,28 @@ "endLine": 302, "source": "memory", "snippet": "- 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) - 已写入", - "recallCount": 4, + "recallCount": 8, "dailyCount": 0, "groundedCount": 0, - "totalScore": 4, + "totalScore": 8, "maxScore": 1, "firstRecalledAt": "2026-05-29T02:33:30.526Z", - "lastRecalledAt": "2026-06-10T02:20:22.635Z", + "lastRecalledAt": "2026-06-18T04:36:16.755Z", "queryHashes": [ "4aa0ef719160", "20f6c2d072df", "068db47fdc05", - "6568231ab2d7" + "6568231ab2d7", + "617d5faf5a33", + "f7926d356e13", + "341edb569d53", + "367cd3303e1d" ], "recallDays": [ "2026-05-29", "2026-06-08", - "2026-06-10" + "2026-06-10", + "2026-06-18" ], "conceptTags": [ "阶段1-2", @@ -2926,23 +2944,28 @@ "endLine": 137, "source": "memory", "snippet": "- 生成脚本: `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_listenin", - "recallCount": 4, + "recallCount": 8, "dailyCount": 0, "groundedCount": 0, - "totalScore": 4, + "totalScore": 8, "maxScore": 1, "firstRecalledAt": "2026-05-29T02:33:30.526Z", - "lastRecalledAt": "2026-06-10T02:20:22.635Z", + "lastRecalledAt": "2026-06-18T04:36:16.755Z", "queryHashes": [ "4aa0ef719160", "20f6c2d072df", "068db47fdc05", - "6568231ab2d7" + "6568231ab2d7", + "617d5faf5a33", + "f7926d356e13", + "341edb569d53", + "367cd3303e1d" ], "recallDays": [ "2026-05-29", "2026-06-08", - "2026-06-10" + "2026-06-10", + "2026-06-18" ], "conceptTags": [ "tmp/build-skill-points.py", @@ -2962,13 +2985,13 @@ "endLine": 66, "source": "memory", "snippet": "8. 句型合规检测 - 接入方式:`` + 调用 `PedagogyRules.validate(summary, level)` - 数据源:L1 词库 147 词(过滤 enabled=true)、L2 词库 52 词、L1 句型 8 个、L2 句型(从 437MB bitable 导出中提取唯一结构) - 技术注意:L2_pattern_list.json 体积 437MB(1,082,450 条记录),直接嵌入前端不可行,已提取唯一句型结构后嵌入 - 所有 6 个测试用例通过 - 用户后续想尝试其他对接方式(API 模式 / 飞书 Bot 联动 / CI 集成)", - "recallCount": 9, + "recallCount": 10, "dailyCount": 0, "groundedCount": 0, - "totalScore": 9, + "totalScore": 10, "maxScore": 1, "firstRecalledAt": "2026-05-29T02:33:30.526Z", - "lastRecalledAt": "2026-06-17T02:17:21.800Z", + "lastRecalledAt": "2026-06-18T04:36:05.631Z", "queryHashes": [ "4aa0ef719160", "e30c130b9d1d", @@ -2978,14 +3001,16 @@ "3ac726b21876", "867f7264cd0e", "5f16a7426a41", - "7c761b49b948" + "7c761b49b948", + "533765637e65" ], "recallDays": [ "2026-05-29", "2026-06-01", "2026-06-02", "2026-06-10", - "2026-06-17" + "2026-06-17", + "2026-06-18" ], "conceptTags": [ "l1-pedagogy-rules.js", @@ -3005,25 +3030,30 @@ "endLine": 14, "source": "memory", "snippet": "## [梁晨] L1 Pedagogy Rules v4.0.0 交付 - 在 v3 基础上新增 5 个校验维度(来自 16 个教研 skill 规则提取): 6. 组件合规性(12 种题型规则,来自 11 个 dialogue/info config skills) 7. 字段完整性(7 项自动检查,来自 audit_l1_config) 8. 掌握度预测(W_i×M_i 加权公式,来自 knowledge-mastery-calculator) 9. 格式规范(标题/Markdown/标点/英式拼写/价值观,来自全量文本规范) 10. 语法检测(三单/主谓一致/双重否定,来自 audit_l1_config) - 输出:`output/l1_pedagogy_rules_v4.js`(59KB) - 数据:L1 147 词、L2 52 词、L1 8 句型、L2 1 句型、89 组英式拼写映射、12 种题型规则 - 已通过飞书 Bot 发送给梁晨 - API 兼容 v3:不加 options 参数即为原行为;加 component/componentExposures 启用新维度 - 能力边界:内容质量诊断(第一层筛选),不是全链路归因(看不到 UX/服务端/学生侧因素)", - "recallCount": 6, + "recallCount": 10, "dailyCount": 0, "groundedCount": 0, - "totalScore": 6, + "totalScore": 10, "maxScore": 1, "firstRecalledAt": "2026-06-02T01:49:17.841Z", - "lastRecalledAt": "2026-06-17T02:17:21.800Z", + "lastRecalledAt": "2026-06-18T04:36:16.755Z", "queryHashes": [ "7e6aa000abdb", "094bfb865b29", "3ac726b21876", "867f7264cd0e", "5f16a7426a41", - "7c761b49b948" + "7c761b49b948", + "f7926d356e13", + "341edb569d53", + "533765637e65", + "367cd3303e1d" ], "recallDays": [ "2026-06-02", "2026-06-10", - "2026-06-17" + "2026-06-17", + "2026-06-18" ], "conceptTags": [ "v4.0.0", @@ -3043,25 +3073,27 @@ "endLine": 49, "source": "memory", "snippet": "- 答案设为[2](英语的),与申报 adj. 英文的不符,应为[0] - 🟡 rubber (1218116):释义题例句\"an eraser made of rubber\"解释的是橡胶材料,非橡皮擦工具 - 🟡 Chinese(n.) (1218113):例句\"Chinese food\"中 Chinese 是形容词非名词,与题目义项\"中文\"不符 - 🟢 fun (1218119):解析末尾多余一个 `\"` - 🟢 eraser (1218111):`\"an eraser表示\"` 缺少空格 ## 武钰涵 — 听力-P1-图片选择题生产 - 题目集合 ID: 121601,难度 B级(L1 第3-4阶段,Starters 3) - 知识点验证:10个词中仅 run(v.) 在 L1 词库,feet(foot 的复数)可视为已有,其余 8 个(bus, taxi, trousers, shorts, winter, snow, cold, bee)不在 L1/L2 词库 - 用户指示直接生产,已按 SKILL 规范生成 2 个题组(各5题),含听力文本、图片描述、正确答案、能力标签 - 已按 bitable 配置格式输出完整 jsonData + 题目完整配置 + 图片描述 - B级规则:听力句子 5-8 词(均 7 词),每组 3 张同类物品不同属性图片 - 能力标签:显性事实理解|关键词识别 ×2 + 基础语境理解|场景/物品/动作识别 ## 梁辰(user_id: ou_28f02dcada1193913cfbb6310f8daf07)— HTML 诊断页面", - "recallCount": 6, + "recallCount": 7, "dailyCount": 0, "groundedCount": 0, - "totalScore": 6, + "totalScore": 7, "maxScore": 1, "firstRecalledAt": "2026-06-02T01:49:17.841Z", - "lastRecalledAt": "2026-06-17T02:17:21.800Z", + "lastRecalledAt": "2026-06-18T04:36:05.631Z", "queryHashes": [ "7e6aa000abdb", "094bfb865b29", "3ac726b21876", "867f7264cd0e", "5f16a7426a41", - "7c761b49b948" + "7c761b49b948", + "533765637e65" ], "recallDays": [ "2026-06-02", "2026-06-10", - "2026-06-17" + "2026-06-17", + "2026-06-18" ], "conceptTags": [ "听力-p1-图片选择题生产", @@ -3344,21 +3376,23 @@ "endLine": 810, "source": "memory", "snippet": "--- ## [李应瑛] 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_", - "recallCount": 3, + "recallCount": 4, "dailyCount": 0, "groundedCount": 0, - "totalScore": 3, + "totalScore": 4, "maxScore": 1, "firstRecalledAt": "2026-06-09T07:21:33.704Z", - "lastRecalledAt": "2026-06-10T02:20:12.701Z", + "lastRecalledAt": "2026-06-18T04:36:05.631Z", "queryHashes": [ "ff0d0637f255", "f525b14a0c5b", - "9018e8896dcd" + "9018e8896dcd", + "533765637e65" ], "recallDays": [ "2026-06-09", - "2026-06-10" + "2026-06-10", + "2026-06-18" ], "conceptTags": [ "l1-s2-u17-l5",