From 3dde5b2b42f6fb7783f66ef04e48fb1972266178 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=96=8C?= <259278618@qq.com> Date: Thu, 13 Aug 2026 16:52:23 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E4=BA=92=E5=8A=A8=E5=89=A7=E6=83=85?= =?UTF-8?q?=E6=BC=94=E7=BB=8E=20v2=20=E6=96=87=E6=A1=A3=E8=A1=A5=E5=85=85?= =?UTF-8?q?=EF=BC=88README=20=E5=8A=9F=E8=83=BD=E8=AF=B4=E6=98=8E=20+=20?= =?UTF-8?q?=E6=8A=80=E6=9C=AF=E8=AE=BE=E8=AE=A1=204.14=20=E5=B0=8F?= =?UTF-8?q?=E8=8A=82=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.7 --- README.md | 6 +++--- 技术设计.md | 20 ++++++++++++++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6de67a2..7add10d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ ## 功能特性 -- **分支情境闯关**:36 计 × 每计 1-3 个现代情境,每个情境是一棵决策树——环境场景、人物、道具构成每个决策的要素,不同选择走向不同分支、产生不同结果,多条路线都能拿到最佳结果;每步即时反馈"智慧点评",**每个选择都解释好处/坏处(对比点评)**,结算页展示整局选择路线回顾;**通关 = 到达最佳终局,完美 = 走完所有分支,完美才解锁下一关**;未通关走错路线扣教训分 +- **分支情境闯关**:36 计 × 每计 1-3 个现代情境,每个情境是一棵决策树——环境场景、人物、道具构成每个决策的要素,不同选择走向不同分支、产生不同结果,多条路线都能拿到最佳结果;每步即时反馈"智慧点评",**每个选择都解释好处/坏处(对比点评)**,结算页展示整局选择路线回顾;**通关 = 到达最佳终局,完美 = 走完所有分支,完美才解锁下一关**;未通关走错路线扣教训分;**互动剧情演绎 v2**:节点台词流(3-6 句)逐句演绎——气泡 + 自动朗读 + 逐字高亮 + 表情切换,决策选项直接嵌入剧情流,角色回应(好处/对比)以气泡融入剧情无弹窗;剧本内容由离线管线 oMLX 生成草稿 + 人工精修 + 导入回填 - **多样互动**:闯关不止选项点击——道具选择、步骤排序、动作过关(跳跃/攀爬/躲避/奔跑,一套组件配置驱动)、拖拽放置、接取收集、找线索、连线配对共 8 类互动形态按年龄适配;操作型互动成功/失败同样走向对应决策分支,教育逻辑不受互动形式影响 - **计策学堂**:每章开头先认识计策——卡通图文讲解名称、拼音、释义与"什么时候用它",再进情境践行,构成认知 → 践行 → 反思完整学习闭环 - **智慧总结**:每章闯关完成后一道反思题"哪个说法总结了这条计策",把直觉选择转成语言认知,答对奖励积分 @@ -59,7 +59,7 @@ | 家长中心 | 家长注册/登录(微信 openid 或手机号)、孩子档案管理(含每日学习限额)、学习报告、实物奖品确认、生活任务确认 | | 计策学堂 | 每章开头的认知环节:图文/动画讲解计策名称、拼音、释义、使用时机 | | 关卡地图 | 36 计按六套分组展示,星星进度、解锁状态、计策卡图标 | -| 情境闯关 | 每关一棵决策树:环境场景 + 人物冲突 + 道具行为构成决策要素,入口 → 多样互动(选择/排序/动作过关-跳跃攀爬躲避奔跑/拖拽/找线索,按年龄适配)→ 多路线通往不同终局;通关=到达最佳终局,完美=走完全部分支解锁下一关;未通关走错扣教训分。已实现:选项选择 + 触控互动(道具选择/步骤排序/拖拽放置/找线索/连线配对,互动入口节点模型,成功进决策树/失败进失败终局)+ 对比点评(每个选项好处/坏处)+ 结算路线回顾 + 场景插画/角色立绘/道具图标视觉呈现;呈现为三幕小剧场:开场演出(旁白朗读+字幕逐字淡入+角色入场+道具飞入,可跳过)→ 决策演出(普通节点为动作卡——图标/拼音/听读/按压动画,config 互动节点为触控互动,选择后分支演出过渡再弹对比点评)→ 结局演出(成功彩带/失败鼓励语) | +| 情境闯关 | 每关一棵决策树:环境场景 + 人物冲突 + 道具行为构成决策要素,入口 → 多样互动(选择/排序/动作过关-跳跃攀爬躲避奔跑/拖拽/找线索,按年龄适配)→ 多路线通往不同终局;通关=到达最佳终局,完美=走完全部分支解锁下一关;未通关走错扣教训分。已实现:选项选择 + 触控互动(道具选择/步骤排序/拖拽放置/找线索/连线配对,互动入口节点模型,成功进决策树/失败进失败终局)+ 对比点评(每个选项好处/坏处)+ 结算路线回顾 + 场景插画/角色立绘/道具图标视觉呈现;呈现为三幕小剧场:开场演出(旁白朗读+字幕逐字淡入+角色入场+道具飞入,可跳过)→ 决策演出(普通节点为动作卡——图标/拼音/听读/按压动画,config 互动节点为触控互动,选择后分支演出过渡再弹对比点评)→ 结局演出(成功彩带/失败鼓励语);互动剧情演绎 v2:script 非空节点走剧情流(StoryPlayer 逐句台词演绎 + 决策嵌入剧情流 + 角色回应气泡无弹窗),script 空回退 v1 动作卡呈现 | | 章末温故 | 每章完美后自动出现:随机抽 2-3 个已学计谋关卡重温(选项打乱),完成解锁下一章 + 奖励积分 | | 智慧总结 | 每章完成后的反思题("哪个说法总结了这条计策"),答对 +5 分 | | 生活践行 | 章完美后下发的真实生活小任务(家长引导完成并确认,得积分) | @@ -69,7 +69,7 @@ | 徽章 | 成就徽章(集卡、连续学习、通关数、复习、探索等),自动解锁 | | 奖品 | 积分兑换虚拟/实物奖品,兑换记录与状态 | | 朗读拼音 | 拼音随内容一次性标注入库(逐字对齐 JSON,`common/pinyin.go` + 多音字词表),朗读音频优先播文件、无文件时浏览器语音降级朗读(H5),低龄档(4-6)全量开启;TTS 文件生成留后续接入 | -| 视觉素材生成 | 场景插画/角色立绘/道具图标/计策卡图标由 `cmd/genasset/` 离线生成管线调用本机 oMLX(Qwen3.5-9B)生成 SVG 并转 PNG,打包入客户端随五端发布;未生成素材按 emoji 映射兜底 | +| 视觉素材生成 | 场景插画/角色立绘/道具图标/计策卡图标由 `cmd/genasset/` 离线生成管线调用本机 oMLX(Qwen3.5-9B)生成 SVG 并转 PNG,打包入客户端随五端发布;未生成素材按 emoji 映射兜底。剧本台词流同管线生成:`go run ./cmd/genasset --only=scripts` 生成草稿(workspace/scripts/)→ 人工精修 → `--import-scripts` 校验 + 注音 + 回填 scene_node.script(幂等) | ### 后台(Web) diff --git a/技术设计.md b/技术设计.md index 47691f9..3c70804 100644 --- a/技术设计.md +++ b/技术设计.md @@ -527,6 +527,26 @@ config JSON 结构(`scene_node.config`,前端解析渲染):`{"kind":"pro **互动形态判定**:config 互动节点用触控组件、普通决策节点一律动作卡——触控组件是 success/fail 双出口(成功进决策树 / 失败进失败终局),与多分支选项(多出口、各带独立点评)语义不兼容,故决策节点不套触控组件。 +### 4.14 互动剧情演绎 v2(台词流演绎) + +4.13 三幕小剧场之上,把"动作卡 + 弹窗点评"升级为**剧情流演绎**:节点台词逐句播出,决策选项直接嵌入剧情流,角色回应以气泡融入剧情(无弹窗),闯关从"做题"变为"演一幕小短剧"。 + +**数据模型**: +- `scene_node` 新增 `script` 列(JSON 台词流),元素结构 `{speaker, text, pinyin, emotion}`:speaker 为角色名或「旁白」,text 为台词,pinyin 为逐字注音(**导入时**由 `common.AnnotatePinyin` 生成,不入草稿),emotion 为表情(normal/happy/sad/think/surprise,驱动角色立绘角标切换) +- 每节点 3-6 句,每句 8-30 字,至少 1 句旁白;**决策节点末句为角色提问(以?结尾)**衔接选项;**终局节点末句为角色总结**(不得是旁白) +- 决策树模型零改动:`level/detail` 接口透出 `script`,scene_node/node_option/result_type 与 `level/choose` 接口均不变 + +**前端演绎(StoryPlayer + play.vue)**: +- `StoryPlayer` 逐句演绎:一句一气泡,朗读 `onEnd` 驱动下一句同步推进(朗读慢时逐字高亮等朗读);文本逐字高亮约 260ms/字引导跟读;emotion 驱动角色表情切换;单句 20s 无输出判 TTS 无声自动跳过(兜底防卡死);右上角「跳过」整段快进 +- `play.vue` 剧情流:`script` 非空节点走 StoryPlayer(`:key="curNode.node_id"` 重建组件保证状态干净,`@done` 后显示选项)→ ActionCard/触控选项 → 角色回应气泡融入剧情流;`script` 为空回退 v1 动作卡 + 弹窗点评呈现 +- 反馈剧情化:对比点评(pros/cons)从弹层改为角色回应气泡,随剧情流逐条呈现(✓ 好处 / ✗ 对比),无弹窗打断 + +**剧本生成管线(genasset)**: +- `go run ./cmd/genasset --only=scripts`:按 prompt 约束(决策/终局节点语义、3-6 句、末句规则)调用本机 oMLX 生成草稿,落 `workspace/scripts/{level_id}/{node_id}.json`;`validateScript` 校验(3-6 句、每句 8-30 字、speaker 合法、≥1 句旁白、决策末句?/终局末句角色总结),不合格重试 +- 人工精修草稿 → `go run ./cmd/genasset --import-scripts`:重新校验 + `AnnotatePinyin` 注音 + 回填 `scene_node.script` +- 幂等:仅处理 `script` 为空的节点;草稿已存在跳过(防重跑覆盖人工精修,`--force` 覆盖);`--strategy` 限定计策分批执行 +- 试点:第 1 计 8 节点已导入精修,全量 36 计剧本由主会话按计分批生成 + ## 5. 开发计划 | 里程碑 | 内容 | 验收标准 |