src/types/englishSpeaking.ts,从 enspeak useTopicDiscussionConfig.ts 移植话题讨论相关类型(TopicDiscussionConfig, PracticeSettings, EvaluationSettings, LearningGoals, Role, PracticeMode, ScoreMode 等)src/store/speaking.ts Pinia store,管理话题讨论配置状态(对应 demo 的 useTopicDiscussionConfig hook)SpeakingPanel.vue 三层页面容器,管理 pageMode(layer1/layer2/config)切换和面包屑导航CurriculumSelector.vue 教材/年级/单元三级联动下拉框,数据从 curriculum.json 读取UnitInfoCard.vue 单元信息展示卡片(标题 + 描述)ExerciseTypeGrid.vue 练习类型网格(口语/听力/阅读/写作四个入口,本次只有口语可点击进入 Layer 2)Layer1Home.vue 组合以上组件CreationModeSwitch.vue 创建方式切换组件(智能推荐/AI生成/手动创建),参照 demo 实现RecommendCard.vue 推荐任务卡片组件(标题、副标题、难度、轮次、时长)AIGenerationForm.vue AI 生成表单(仅 UI 壳子,不实现后端功能)Layer2Speaking.vue 组合以上组件,实现:任务类型筛选 tabs、推荐卡片列表(数据从 topicDiscussionTasks.json 读取)、点击卡片进入 Layer 3 配置页TopicDiscussionConfig.vue 主框架,参照 demo TopicDiscussionConfig.tsxparentWindow.addTool(77)CollapsibleToolbar/index2.vue 英语 tab submenu 内容替换为 SpeakingPanel 组件BaseFrameElement.vue 的 getTypeLabel 中注册 toolType 77