ADDED Requirements
Requirement: Canvas Integration
系统 SHALL 在 BaseFrameElement.vue 中,当 toolType === 77 时直接渲染 TopicDiscussionPreview Vue 组件,替代 iframe 渲染方式。
Scenario: Render preview component on canvas
- WHEN 画布中存在 toolType 为 77 的 PPTFrameElement,且非缩略图模式、元素可见
- THEN 渲染 TopicDiscussionPreview Vue 组件,填满元素容器
Scenario: Show placeholder when not visible
- WHEN toolType 为 77 的元素不可见(如被滚出视口)
- THEN 显示占位符(🌐 + "英语口语"类型标签),与其他工具类型行为一致
Scenario: Show thumbnail mode
- WHEN toolType 为 77 的元素处于缩略图模式
- THEN 显示简化占位符,与其他工具类型的缩略图行为一致
Requirement: Student Preview Container
系统 SHALL 提供一个 StudentPreview.vue 容器组件,模拟 16:9 PPT 页面布局,包含标题区(slot)、内容区(default slot)、操作区(slot)。
Scenario: Render with title and action area
- WHEN 组件传入 title、subtitle、titleIcon 和 actionArea slot
- THEN 显示带标题区和操作区的 16:9 白色卡片容器,内容区居中显示 default slot
Scenario: Render without title
- WHEN 组件未传入 title 相关 props
- THEN 不渲染标题区,内容区占满容器
Requirement: Dialogue State Management
系统 SHALL 管理话题讨论预览的三个阶段:ready(准备)、chatting(对话中)、completed(完成)。
Scenario: Initial state is ready
- WHEN TopicDiscussionPreview 组件挂载
- THEN 显示准备页,包含话题图标、话题名称和"开始对话"按钮
Scenario: Transition from ready to chatting
- WHEN 用户点击"开始对话"按钮
- THEN 切换到 DialogueChatView 对话界面,显示 AI 第一条消息
Scenario: Transition from chatting to completed
- WHEN 对话轮次完成(达到 totalRounds 或脚本结束)
- THEN 切换到报告界面,显示 OverallReport 和 DetailedReport
Scenario: Reset preview
- WHEN 用户在 chatting 或 completed 阶段点击"重置预览"按钮
- THEN 回到 ready 阶段
Requirement: Dialogue Chat View
系统 SHALL 提供 DialogueChatView.vue 组件,实现模拟对话交互界面。
Scenario: Display chat messages with voice bars
- WHEN 对话消息存在
- THEN AI 消息显示白色语音条(左对齐),学生消息显示橙色语音条(右对齐),每条消息下方显示英文文本
Scenario: Recording toggle
- WHEN 用户点击录音按钮
- THEN 按钮变为红色录音状态,显示录音时长计数;再次点击停止录音,自动生成模拟学生回复和评估数据
Scenario: Instant feedback display (L1)
- WHEN 学生消息生成后
- THEN 在消息下方显示四维度评估(准确/流畅/完整/节奏)和一句话建议,可展开查看详情
Scenario: Feedback detail expansion (L2)
- WHEN 用户点击 L1 反馈的"详情"按钮
- THEN 展开显示 better expression 和 suggested words
Scenario: Smart hint dialog
- WHEN 用户点击"提示"按钮
- THEN 弹出提示弹窗,包含任务提示、句子提示(含关键词高亮)和词汇提示(含音标和释义)
Scenario: Badge achievement animation
- WHEN 学生连续 3 句流畅度优秀 / 连续 5 句发音准确 / 单轮四维度全优
- THEN 右上角显示对应徽章动画(流畅达人/发音专家/完美一轮),2.5 秒后消失
Requirement: Overall Report
系统 SHALL 提供 OverallReport.vue 组件,展示对话完成后的整体评价报告。
Scenario: Display score and level
- WHEN 报告渲染时
- THEN 显示综合评分(数字/字母/仅评语,取决于 scoreDisplayMode)、评分等级标签、超过同学百分比
Scenario: Display ability analysis
- WHEN 报告渲染时
- THEN 显示四维能力(流利度/互动性/词汇量/语法)的横向柱状图
Scenario: Display AI comment and highlights
- WHEN 报告渲染时
- THEN 显示 AI 角色头像和点评文本、亮点列表和建议列表
Scenario: Action buttons
- WHEN 报告渲染时
- THEN 底部显示"再来一次"和"完成"按钮
Requirement: Detailed Report
系统 SHALL 提供 DetailedReport.vue 组件,展示按轮次分组的单句评价。
Scenario: Display sentence cards by round
- WHEN 报告渲染时
- THEN 按轮次分组显示对话卡片,每张卡片包含语音条、文本内容,学生卡片可展开查看发音评分和反馈
Scenario: Expand/collapse individual cards
- WHEN 用户点击有评价数据的学生消息卡片
- THEN 展开/收起该卡片的发音评估和反馈详情
Scenario: Toggle all cards
- WHEN 用户点击"展开全部/收起全部"按钮
- THEN 所有学生消息卡片同时展开或收起