## 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 — 口语子页面

- [x] 3.1 创建 `CreationModeSwitch.vue` 创建方式切换组件（智能推荐/AI生成/手动创建），参照 demo 实现
- [x] 3.2 创建 `RecommendCard.vue` 推荐任务卡片组件（标题、副标题、难度、轮次、时长）
- [x] 3.3 创建 `AIGenerationForm.vue` AI 生成表单（仅 UI 壳子，不实现后端功能）
- [x] 3.4 创建 `Layer2Speaking.vue` 组合以上组件，实现：任务类型筛选 tabs、推荐卡片列表（数据从 `topicDiscussionTasks.json` 读取）、点击卡片进入 Layer 3 配置页

## 4. Layer 3 — 话题讨论配置

- [x] 4.1 创建 `TopicDiscussionConfig.vue` 主框架，参照 demo `TopicDiscussionConfig.tsx`
- [x] 4.2 实现讨论话题输入 + 学习目标（练习词汇标签增删 + 练习句型列表增删编辑 + 批量粘贴）
- [x] 4.3 实现练习方式配置（限制时长/限制轮次切换 + 滑块）+ 展示学习报告开关
- [x] 4.4 实现高级配置（辅助功能 checkbox + 评估维度 checkbox + 评分方式 radio）
- [x] 4.5 实现底部"应用配置"按钮，调用 `parentWindow.addTool(77)`

## 5. 编辑器集成

- [x] 5.1 将 `CollapsibleToolbar/index2.vue` 英语 tab submenu 内容替换为 `SpeakingPanel` 组件
- [x] 5.2 在 `BaseFrameElement.vue` 的 `getTypeLabel` 中注册 toolType 77

## 6. 样式与验证

- [x] 6.1 将 demo Tailwind 样式转换为 SCSS，适配 PPT 项目样式体系
- [ ] 6.2 端到端验证：英语 tab → Layer 1 选单元 → 点口语 → Layer 2 选推荐卡片 → Layer 3 配置 → 应用配置
