## 1. 基础设施 - [x] 1.1 创建 `src/types/englishSpeaking.ts`,从 enspeak `useTopicDiscussionConfig.ts` 移植话题讨论相关类型(TopicDiscussionConfig, PracticeSettings, EvaluationSettings, LearningGoals, Role, PracticeMode, ScoreMode 等) - [x] 1.2 创建 `src/store/speaking.ts` Pinia store,管理话题讨论配置状态(对应 demo 的 useTopicDiscussionConfig hook) - [x] 1.3 在 i18n 文件(cn.json/en.json/hk.json)中新增英语口语相关翻译 key ## 2. Layer 1 — 英语学科主页 - [x] 2.1 创建 `SpeakingPanel.vue` 三层页面容器,管理 pageMode(layer1/layer2/config)切换和面包屑导航 - [x] 2.2 创建 `CurriculumSelector.vue` 教材/年级/单元三级联动下拉框,数据从 `curriculum.json` 读取 - [x] 2.3 创建 `UnitInfoCard.vue` 单元信息展示卡片(标题 + 描述) - [x] 2.4 创建 `ExerciseTypeGrid.vue` 练习类型网格(口语/听力/阅读/写作四个入口,本次只有口语可点击进入 Layer 2) - [x] 2.5 创建 `Layer1Home.vue` 组合以上组件 ## 3. Layer 2 — 口语子页面 - [ ] 3.1 创建 `CreationModeSwitch.vue` 创建方式切换组件(智能推荐/AI生成/手动创建),参照 demo 实现 - [ ] 3.2 创建 `RecommendCard.vue` 推荐任务卡片组件(标题、副标题、难度、轮次、时长) - [ ] 3.3 创建 `AIGenerationForm.vue` AI 生成表单(仅 UI 壳子,不实现后端功能) - [ ] 3.4 创建 `Layer2Speaking.vue` 组合以上组件,实现:任务类型筛选 tabs、推荐卡片列表(数据从 `topicDiscussionTasks.json` 读取)、点击卡片进入 Layer 3 配置页 ## 4. Layer 3 — 话题讨论配置 - [ ] 4.1 创建 `TopicDiscussionConfig.vue` 主框架,参照 demo `TopicDiscussionConfig.tsx` - [ ] 4.2 实现讨论话题输入 + 学习目标(练习词汇标签增删 + 练习句型列表增删编辑 + 批量粘贴) - [ ] 4.3 实现练习方式配置(限制时长/限制轮次切换 + 滑块)+ 展示学习报告开关 - [ ] 4.4 实现高级配置(辅助功能 checkbox + 评估维度 checkbox + 评分方式 radio) - [ ] 4.5 实现底部"应用配置"按钮,调用 `parentWindow.addTool(77)` ## 5. 编辑器集成 - [x] 5.1 将 `CollapsibleToolbar/index2.vue` 英语 tab submenu 内容替换为 `SpeakingPanel` 组件 - [ ] 5.2 在 `BaseFrameElement.vue` 的 `getTypeLabel` 中注册 toolType 77 ## 6. 样式与验证 - [ ] 6.1 将 demo Tailwind 样式转换为 SCSS,适配 PPT 项目样式体系 - [ ] 6.2 端到端验证:英语 tab → Layer 1 选单元 → 点口语 → Layer 2 选推荐卡片 → Layer 3 配置 → 应用配置