PPT 项目需要集成英语口语练习功能。现有 demo(enspeak 项目,React/Next.js)已验证了完整的教师端配置界面和口语练习类型体系,包括:单词跟读、句子跟读、文章朗读、演讲练习、自由对话(闲聊/话题讨论/模拟访谈)、情境任务等。现在需要将口语部分功能用 Vue 重写,集成到 PPT 主项目中,使教师可以在课件中嵌入英语口语练习活动。
topicDiscussionTasks.json(源数据:task.txt),目前只有话题讨论类型parentWindow.addTool(77) 通知父应用创建英语口语工具,最终以 type: 'frame', toolType: 77 的 element 嵌入 slide(与选择题 45、AI 应用 72 等工具一致的机制)getTypeLabel 中注册 toolType 77 的标签显示curriculum.json: 教材 → 年级 → 单元三级联动数据(textbooks[] → grades[] → units[]),每个单元包含 id、number、title、description、vocabulary[]、sentences[],数据来源于 units-en.txttopicDiscussionTasks.json: 按单元 ID 索引的话题讨论推荐任务(titleZh/titleEn、subtitle、difficulty、rounds、durationMinutes、vocabulary、sentences),数据来源于 task.txtspeaking-panel: 三层页面容器 — Layer 1 英语学科主页(联动下拉框 + 单元信息 + 练习类型入口)、Layer 2 口语子页面(创建方式切换 + 推荐卡片)、面包屑导航speaking-free-dialogue: 话题讨论配置(Layer 3)— 讨论话题、学习目标(词汇/句型)、练习方式、高级配置(辅助功能/评估维度/评分方式)、应用配置触发 addTool(77)PPT 编辑器以 iframe 嵌入父应用(cocorobo 平台),工具通过双向通信集成:
parentWindow.addTool(77) 通知父应用window.addContent(data, type) 回传{ type: 'frame', url: '...', toolType: 77 } 的 element现有 toolType 编号:15(问答题), 45(选择题), 72(AI应用), 73(H5页面), 74(视频), 75(B站/YouTube), 76(创作空间) → 77: 英语口语
src/components/CollapsibleToolbar/index2.vue — 英语 tab submenu,当前只有 video 占位,替换为话题讨论配置入口src/views/Editor/EnglishSpeaking/ 目录下的 Vue 组件(话题讨论配置)src/types/englishSpeaking.ts,从 enspeak demo 移植话题讨论相关类型src/store/speaking.ts Pinia store 管理配置状态BaseFrameElement.vue 的 getTypeLabel 需注册 toolType 77cn.json/en.json/hk.json 需新增话题讨论相关翻译 key