# 需求文档

## 1. 应用概述

- **应用名称**：最小生成树 MST 交互式学习平台
- **应用描述**：基于 4C/ID 教学设计模型构建的最小生成树算法教学网站,包含三个渐进式学习任务(校园布线 → 社区管网 → 城市物流),支持零基础 / 中等 / 高阶三类学习者自动分层减负,提供可交互、可演示、可分步操作的算法学习体验,在关键动画节点嵌入延迟性自我解释交互,引导主动思考与意义建构。配备智能助手机器人,支持全站对话式帮助。整体风格为简洁教育风,采用情感化视觉设计,暖色柔和色系,圆润有机造型。

---

## 2. 用户与使用场景

### 2.1 目标用户

- 零基础学习者：无图论或算法基础,需要全引导与解释性反馈
- 中等基础学习者：了解基本图论概念,需要半引导与提示性反馈
- 高阶学习者：具备算法基础,可完全自主操作,仅需结果性反馈

### 2.2 核心使用场景

- 学习者进入首页选择自身水平,系统据此在所有任务页面自动调整信息量与提示层级
- 学习者依次完成三个渐进式任务,逐步掌握 MST 算法的核心概念与应用能力
- 学习者可随时访问知识库查阅支持性信息,或进入练习页自测
- 学习者可随时与智能助手机器人对话,获取学习帮助与问题解答
- 学习者可通过全局语音开关控制所有任务页面的语音播报功能

---

## 3. 视觉规范

### 3.1 色彩规范

- **背景色**：暖米白(#FDFBF7)
- **主色调**：矢车菊蓝(#6495ED),用于步骤提示、主操作按钮、导航高亮
- **次要色**：柔和沙黄(#F4E4C1),用于卡片背景、辅助区域
- **选中边颜色**：柔和绿(#7CB342)
- **回路边颜色**：柔和红(#E57373)
- **步骤提示颜色**：矢车菊蓝(#6495ED)
- **文字颜色**：深灰(#333333)主文字、中灰(#666666)次要文字

### 3.2 形状规范

- **圆角半径**：所有交互按钮、流程节点、卡片、输入框、对话框等元素统一使用 0.625rem 或以上圆角
- **造型风格**：圆润有机造型,避免生硬直角,营造柔和视觉体验

### 3.3 整体风格

- **设计理念**：简洁教育风,情感化视觉设计,舒缓压力,提升界面亲和力
- **文字要求**：清晰、无冗余文本、不重复内容,一句话能说明不写两句
- **图标与按钮**：全站统一图标样式、统一颜色规范、统一术语与箭头方向,采用圆润造型
- **动画与文字**：不同时重复相同信息,动画演示时文字仅作补充说明

### 3.4 智能助手机器人视觉

- **机器人图标**：固定在页面右下角,矢车菊蓝机器人造型,圆润有机形状
- **微表情系统**：机器人根据状态切换表情
  + idle(空闲)：平静微笑表情
  + thinking(思考中)：眼睛向上看、思考状表情
  + excited(兴奋)：开心大笑表情
  + curious(好奇)：眼睛放大、好奇表情
- **表情切换时机**：
  + 学习者输入问题时切换为 thinking 状态
  + 机器人回复完成后切换为 excited 状态
  + 学习者长时间未操作时切换为 curious 状态
  + 其他时间保持 idle 状态

### 3.5 AgentHint 行内陪伴组件

- **组件定义**：轻量级行内提示组件,以陪伴交互方式在任务页面适当位置嵌入温和的认知失衡提示
- **视觉样式**：
  + 圆润卡片造型,圆角 0.625rem
  + 柔和沙黄背景(#F4E4C1)
  + 左侧显示小型机器人头像(与智能助手机器人一致)
  + 右侧显示提示文字,采用温和口吻
- **使用场景**：
  + 任务 1：学习者首次选错边时,在步骤记录面板上方显示 AgentHint,提示「别担心,回路判断是 MST 的关键,我们一起来理解为什么这条边不能加入」
  + 任务 2：学习者首次遇到等权边时,在边权排序列表上方显示 AgentHint,提示「发现了多条权值相同的边,选择任意一条都是正确的,试试看」
  + 任务 3：学习者首次进入建模区时,在建模区上方显示 AgentHint,提示「从场景描述中提取节点和边是建模的第一步,慢慢来,我会陪着你」
- **交互规则**：
  + AgentHint 首次出现时自动展示,学习者可点击关闭按钮隐藏
  + 同一场景下 AgentHint 仅在首次触发时显示,后续不再重复出现
  + AgentHint 不影响原有功能与交互流程,仅作为情感化陪伴提示

---

## 4. 页面结构与功能说明

### 4.1 整体页面结构

```
最小生成树 MST 交互式学习平台
├── 首页
├── 任务 1：校园简易布线
├── 任务 2：社区管网规划
├── 任务 3：城市物流线路设计
├── 练习
├── 知识库
├── 智能助手机器人(全站可用)
└── 语音开关(全站可用)
```

所有页面包含固定侧边导航栏,导航项：首页、任务 1、任务 2、任务 3、练习、知识库,当前页高亮显示。

所有页面右下角固定显示智能助手机器人图标,点击后展开对话框。

所有任务页面(任务1、任务2、任务3)右上角固定显示语音开关按钮。

---

### 4.2 语音开关

**功能说明：**

- 语音开关按钮固定在所有任务页面(任务1、任务2、任务3)右上角,始终可见
- 按钮样式为矢车菊蓝图标按钮,圆角 0.625rem,开启状态显示喇叭图标,关闭状态显示静音图标
- 点击按钮可切换语音播报功能的开启与关闭状态
- 语音开关状态在当前会话内全站生效并持久保存(页面刷新内保持)
- 默认状态为开启

**控制范围：**

- 任务1：Kruskal算法步骤语音、选边语音、顺序提醒语音、成环语音提醒
- 任务2：Kruskal/Prim算法步骤语音、选边语音、顺序提醒语音、成环语音提醒
- 任务3：选边语音、顺序提醒语音、成环语音提醒
- 不影响语音输入功能(延迟性自我解释框、任务3建模区的语音输入功能不受语音开关控制)

**交互规则：**

- 语音开关关闭时,所有自动语音播报功能停止
- 语音开关关闭时,重新播放按钮置灰不可点击
- 语音开关关闭时,语速调节和音色选择功能置灰不可操作
- 语音开关开启时,恢复所有语音播报功能
- 语音开关状态切换时,当前正在播放的语音立即停止或恢复

---

### 4.3 智能助手机器人

**功能说明：**

- 机器人图标固定在所有页面右下角,矢车菊蓝机器人造型,圆润有机形状,始终可见
- 机器人根据状态切换微表情(idle/thinking/excited/curious)
- 点击机器人图标后,展开对话框,对话框位于页面右侧或居中弹窗,圆角 0.625rem
- 对话框包含：机器人头像、对话历史记录区、常见问题快捷按钮区、文本输入框、发送按钮
- 学习者可通过文字输入向机器人提问,机器人给出文字回复
- 对话内容包括但不限于：算法概念解释、操作步骤指导、错误原因分析、学习建议
- 对话历史记录在当前会话内保留,刷新页面后清空
- 对话框可最小化为机器人图标,再次点击恢复对话框
- 对话框可关闭,关闭后机器人图标仍保留在页面右下角

**常见问题快捷按钮：**

- 位置：在文本输入框上方,对话历史记录区下方
- 样式：横向排列的按钮组,圆角 0.625rem,矢车菊蓝描边,支持左右滚动查看更多按钮
- 按钮数量：每个页面显示3-4个最相关的常见问题
- 按钮内容：根据当前所在页面智能切换
  - 首页：「如何选择适合我的学习水平」「三个任务的难度有什么区别」「如何查看我的学习反思记录」
  - 任务1：「什么是Kruskal算法」「如何判断边是否形成回路」「为什么要按权值排序」「如何重新开始任务」
  - 任务2：「Kruskal和Prim有什么区别」「等权边应该如何选择」「如何切换算法」
  - 任务3：「如何从场景描述中提取节点和边」「集合输入和矩阵输入有什么区别」「如何满足约束条件」「方案说明应该写什么」
  - 练习页：「如何查看题目解析」「练习题覆盖哪些知识点」「如何重新作答」「如何查看练习历史记录」
  - 知识库：「如何快速找到我需要的知识点」「图论基础包含哪些内容」「如何返回任务页面」
- 交互方式：点击快捷按钮后,问题文本自动填入输入框并立即发送,机器人给出对应回复

**交互规则：**

- 学习者输入问题后,机器人切换为 thinking 状态,给出针对性回复后切换为 excited 状态
- 机器人回复内容根据学习者当前所在页面与学习者水平自动调整详细程度
- 零基础学习者：机器人给出详细解释性回复
- 中等基础学习者：机器人给出简化提示性回复
- 高阶学习者：机器人给出简短结果性回复
- 机器人可识别学习者当前所在任务页面,针对当前任务内容给出帮助
- 机器人可回答算法原理、操作方法、错误原因等问题
- 学习者长时间未操作时,机器人切换为 curious 状态

---

### 4.4 首页

**页面内容：**

- 网站标题：最小生成树 MST 交互式学习平台
- 简介文本：基于 4C/ID 模型,从校园布线到城市物流,循序渐进掌握 MST 算法
- 学习者水平选择区：三个单选按钮或卡片,圆角 0.625rem,选项为「零基础」「中等基础」「高阶学习者」,选择后全站生效并持久保存(页面刷新内保持)
- 三个任务入口卡片,统一样式,圆角 0.625rem,柔和沙黄背景,每张卡片包含：任务编号、任务名称、一句话描述、进入按钮
  - 卡片 1：任务 1 · 校园简易布线 — 极简小图,掌握 Kruskal 核心步骤
  - 卡片 2：任务 2 · 社区管网规划 — 中等复杂图,双算法对比
  - 卡片 3：任务 3 · 城市物流线路设计 — 真实场景建模,自主完成 MST 方案
- **我的反思区域**：展示学习者在三个任务中的自我解释记录摘要,包含「下载全部反思」按钮,圆角 0.625rem
- **学情报告区域**：三个任务全部完成后出现,展示学习者的整体表现、薄弱知识点和专项练习题
- **智能助手机器人**：页面右下角显示机器人图标,点击后展开对话框

**我的反思功能：**

- 展示三个任务中所有自我解释记录的摘要信息(任务名称、反思次数)
- 点击「下载全部反思」按钮,将三个任务中所有自我解释记录(问题+学习者回答+系统点评)打包下载为本地文件
- 下载文件格式为文本文件或PDF,按任务分组展示

**学情报告功能：**

- 触发条件：三个任务全部完成后,学情报告区域自动出现在首页
- 报告内容：
  - 整体表现摘要(完成任务数、总用时、整体评价)
  - 薄弱知识点列表(根据任务中的错误操作和自我解释记录自动识别)
  - 专项练习题卡片(针对薄弱知识点生成的练习题)
- **专项练习题作答功能**：
  - 每道练习题包含：题干、提示(hint)、作答输入框(Textarea,圆角 0.625rem)、提交按钮(圆角 0.625rem)
  - 学习者在输入框中填写答案后点击提交按钮
  - 提交后系统调用 validateAnswer 校验机制进行即时评分
  - 评分结果展示：得分(数值)和质量等级(如优秀、良好、及格、不及格)
  - 提交后展示标准解析：基于题目的 hint 做扩展解释,结合 MST 知识点给出参考答案
  - 每道题提供「重新作答」按钮,点击后清空输入框和评分结果,允许重新填写答案
  - 重新作答后可再次提交,系统重新评分并展示解析
- **AI 智能批改功能**：
  - 触发条件：学习者提交答案并完成 validateAnswer 评分后,在已提交状态下显示「AI 批改」按钮,圆角 0.625rem
  - 点击「AI 批改」按钮后,调用文心大模型(wenxin-text-generation)通过 Supabase Edge Function 代理
  - 将题目、学习者答案、参考答案一起发送给大模型,请求个性化批改意见
  - 批改结果以 SSE 流式方式边生成边展示,呈现打字机效果
  - 批改内容包含三部分：优点分析、不足指出、改进建议
  - 批改完成后按钮文字变为「重新批改」,允许再次调用大模型重新批改
  - AI 批改功能嵌入在 PracticeAnswerBox 组件内,不新增页面

**语音规则：**
- 首页不包含任何语音播放功能

---

### 4.5 任务 1：校园简易布线

**教学目标**：训练 Kruskal 算法完整执行流程；Prim 算法仅作文字介绍,不提供实操。

**图结构**：
- 节点数：5～6 个,节点标签为校园场景(如教学楼、宿舍、食堂、图书馆、操场、实验室)
- 边数：适量,确保存在多条可选路径,权值为整数距离
- 图可拖拽节点调整布局

**交互功能：**

- 边权排序列表：展示所有边按权值从小到大排列,当前待选边高亮
- 点选边操作：学习者点击图中的边或排序列表中的边进行选择
- 自动判环：每次选边后系统自动判断是否形成回路
  - 形成回路：该边变为柔和红色,强制暂停动画,弹出延迟性自我解释框
  - 未形成回路：该边变为柔和绿色,加入 MST
- 动画演示模式：点击「演示」按钮(圆角 0.625rem),系统自动逐步执行 Kruskal 算法,每步暂停并高亮当前操作
- 进度条：显示当前已选边数 / 目标边数(节点数 - 1)
- 倍速控制：演示模式下支持 0.5x / 1x / 2x 速度切换
- 重置按钮：清空当前操作,回到初始状态,圆角 0.625rem
- 步骤记录面板：右侧或底部展示已执行步骤列表(边名称、权值、操作结果),圆角 0.625rem
- **AgentHint 陪伴提示**：学习者首次选错边时,在步骤记录面板上方显示 AgentHint,提示「别担心,回路判断是 MST 的关键,我们一起来理解为什么这条边不能加入」
- **语音开关**：页面右上角显示语音开关按钮,可控制所有语音播报功能
- **智能助手机器人**：页面右下角显示机器人图标,点击后展开对话框,可询问算法步骤、操作方法等问题

**延迟性自我解释交互：**

- 触发时机：仅在学习者选错边、出现回路后触发
- 交互方式：动画强制暂停,弹出解释框(圆角 0.625rem),要求学习者输入或语音输入「为什么这条边不能加入 MST」
- 继续条件：学习者必须输入解释内容后,点击「继续」按钮(圆角 0.625rem),动画才能恢复播放
- 解释框样式：居中弹窗,圆角 0.625rem,包含问题文本、文本输入区、语音输入按钮、继续按钮
- 分层规则：
  - 零基础：提供详细提示性问题,如「这条边连接的两个节点是否已经连通？为什么会形成回路？」
  - 中等：提供简化提示性问题,如「为什么这条边会形成回路？」
  - 高阶：提供简短反思性问题,如「为什么不能加入？」
- **自我解释保存**：学习者提交解释后,系统保存该次自我解释记录(问题+学习者回答+系统点评),可在首页「我的反思」区域查看与下载

**程序性信息面板**(始终可见,折叠展开,圆角 0.625rem)：
- Kruskal 步骤说明：① 对所有边按权值升序排序 → ② 依次选取最小权值边 → ③ 判断是否形成回路 → ④ 无回路则加入 MST,有回路则跳过 → ⑤ 重复直到选出 n-1 条边
- **知识库关联**：步骤说明中的关键术语(如「回路」「权值」「MST」)可点击跳转到知识库对应条目

**支持性信息面板**(知识库入口或侧边折叠面板,圆角 0.625rem)：
- 图论基础：节点、边、权值定义
- 树的无环性质
- 贪心思想说明
- 并查集基本原理
- **知识库关联**：每个知识点可点击跳转到知识库对应条目

**Prim 算法介绍**(静态文字卡片,圆角 0.625rem,不提供实操)：
- 简述 Prim 算法思路,说明与 Kruskal 的区别,提示任务 2 将进行双算法对比
- **知识库关联**：Prim 算法介绍可点击跳转到知识库对应条目

**语音规则：**
- 每次进入任务 1 页面时,自动播放 Kruskal 算法步骤语音,无播放按键
- **语音重复播放**：已播放的语音内容支持重复播放,提供「重新播放」按钮,圆角 0.625rem
- 算法介绍和支持性信息不包含语音播放功能
- 选边时播放当前边的语音(包含边的两个端点名称与权值)
- 选边后播放顺序提醒语音(提示下一步可选择的边或加入的点)
- 选择成环的边时播放语音提醒(说明该边形成回路)
- 所有语音采用自然口语化表达,权值播放必须准确
- 支持语速调节功能,提供慢速、标准、快速三档选择,默认为标准语速
- 支持音色选择功能,提供多种音色选项供学习者选择
- 语音开关关闭时,所有自动语音播报功能停止

**分层显示规则：**

| 层级 | 显示内容 |
|------|----------|
| 零基础 | 全引导：每步操作前显示矢车菊蓝步骤提示；回路边自动高亮为柔和红色并附解释性文字；选边正确时显示解释性反馈(说明为何此边符合贪心原则)；错误时说明回路成因；延迟性自我解释框提供详细提示性问题 |
| 中等 | 半引导：步骤提示仅在出错后出现；回路高亮但不附文字解释；反馈为提示性(如「此边形成回路,请跳过」)；延迟性自我解释框提供简化提示性问题 |
| 高阶 | 无提示：无步骤引导；回路边变红但无文字；反馈仅为结果性(如「已跳过」「已加入」)；延迟性自我解释框提供简短反思性问题 |

---

### 4.6 任务 2：社区管网规划

**教学目标**：在中等复杂图上同时运行 Kruskal 与 Prim,进行双算法对比,处理等权边与复杂回路。

**图结构**：
- 节点数：8～10 个,节点标签为社区场景(如居民楼 A/B/C、泵站、主管道、分支节点等)
- 边数：包含复杂回路结构、多条相似权值(等权)边
- 图可拖拽节点调整布局

**交互功能：**

- 算法切换标签：「Kruskal」「Prim」两个标签,圆角 0.625rem,切换后图区重置,步骤面板切换对应算法流程
- 双算法并排对比视图(可选)：支持左右分屏同时展示两种算法执行过程
- 自主选边：学习者手动点选边,系统不自动推荐下一步
- 自主判环：学习者需自行判断是否形成回路,点击「确认跳过」或「确认加入」按钮,圆角 0.625rem
- 等权边处理：当存在多条权值相同的边时,系统高亮所有等权边,学习者自主选择其中一条
- 步骤记录面板：记录每步操作与结果,圆角 0.625rem
- 进度条、倍速控制、重置按钮(同任务 1)
- **AgentHint 陪伴提示**：学习者首次遇到等权边时,在边权排序列表上方显示 AgentHint,提示「发现了多条权值相同的边,选择任意一条都是正确的,试试看」
- **语音开关**：页面右上角显示语音开关按钮,可控制所有语音播报功能
- **智能助手机器人**：页面右下角显示机器人图标,点击后展开对话框,可询问双算法对比、等权边处理等问题

**延迟性自我解释交互：**

- 触发时机：仅在 Kruskal 和 Prim 双算法都完整运行结束后触发
- 交互方式：动画结束后,强制弹出对比总结框(圆角 0.625rem),要求学习者通过文字输入或语音输入归纳两种算法的差异
- 继续条件：学习者必须输入对比总结内容后,点击「提交」按钮(圆角 0.625rem),才能进入下一步或返回
- 对比总结框样式：居中弹窗,圆角 0.625rem,包含问题文本、文本输入区、语音输入按钮、提交按钮
- 分层规则：
  - 零基础：提供详细提示性问题,如「两种算法的选边顺序有什么不同？哪种算法步骤更少？为什么最终结果相同？」
  - 中等：提供简化提示性问题,如「两种算法的核心区别是什么？」
  - 高阶：提供简短反思性问题,如「归纳两种算法的差异」
- 禁止提前给出对比表：在双算法运行过程中,不展示任何对比表或对比内容,避免线性播放
- **自我解释保存**：学习者提交对比总结后,系统保存该次自我解释记录(问题+学习者回答+系统点评),可在首页「我的反思」区域查看与下载

**算法对比概念图拖拽填写：**

- **功能说明**：在双算法都完整运行结束后,展示 Kruskal vs Prim 对比概念图
- **交互方式**：
  - 以列表形式展示两个算法的对比特征项(如「选边策略」「数据结构」「适用场景」等)
  - 提供特征描述选项(如「从所有边中选最小权值边」「从已选节点出发选最小权值边」等)
  - 学习者将特征描述拖拽到对应算法的对应特征项位置
  - 全部填写正确后,表格变为柔和绿色,显示完成提示
  - 填写错误时,错误项高亮为柔和红色,提示重新填写
- **触发时机**：在学习者完成对比总结框输入后,自动展示对比概念图拖拽填写界面

**程序性信息面板**(圆角 0.625rem)：
- Kruskal 完整流程
- Prim 完整流程
- 双算法对比步骤说明
- **知识库关联**：步骤说明中的关键术语可点击跳转到知识库对应条目

**支持性信息面板**(圆角 0.625rem)：
- 回路判断方法
- 等权边选择规则(任意选一条均合法,最终 MST 权值相同)
- 双算法原理对比(适用场景、时间复杂度简述)
- **知识库关联**：每个知识点可点击跳转到知识库对应条目

**语音规则：**
- 选择 Kruskal 算法时,自动播放 Kruskal 算法步骤语音,无播放按键
- 选择 Prim 算法时,自动播放 Prim 算法步骤语音,无播放按键
- **语音重复播放**：已播放的语音内容支持重复播放,提供「重新播放」按钮,圆角 0.625rem
- 算法介绍和支持性信息不包含语音播放功能
- 选边时播放当前边的语音(包含边的两个端点名称与权值)
- 选边后播放顺序提醒语音(提示下一步可选择的边或加入的点)
- 选择成环的边时播放语音提醒(说明该边形成回路)
- 所有语音采用自然口语化表达,权值播放必须准确
- 支持语速调节功能,提供慢速、标准、快速三档选择,默认为标准语速
- 支持音色选择功能,提供多种音色选项供学习者选择
- 语音开关关闭时,所有自动语音播报功能停止

**分层显示规则：**

| 层级 | 显示内容 |
|------|----------|
| 零基础 | 回路边自动标注柔和红色；等权边自动高亮并附说明；解释性反馈；延迟性自我解释框提供详细提示性问题 |
| 中等 | 不自动标注回路；等权边高亮但不附说明；仅在关键错误时给出提示性反馈；延迟性自我解释框提供简化提示性问题 |
| 高阶 | 完全自主判断回路与等权边；无任何标注；结果性反馈；延迟性自我解释框提供简短反思性问题 |

---

### 4.7 任务 3：城市物流线路设计

**教学目标**：从真实场景出发,学习者自主完成「场景描述 → 抽象建模 → 构建 MST → 撰写方案说明」全流程。

**场景描述**(系统给定,不给定点边)：
- 文字描述一个城市物流场景,包含若干城市节点名称与节点间距离数据表(如城市 A 到城市 B 距离 120km,城市 B 到城市 C 距离 85km 等)
- **约束条件说明**：场景描述中包含约束条件(如必经边、禁用边等),学习者需在建模与构建 MST 时满足这些约束
- 学习者需自行从描述中提取节点、边、权值,构建图模型

**交互功能：**

- 输入方式切换：支持「集合输入」与「矩阵输入」两种方式,可随时切换,按钮圆角 0.625rem
  - 集合输入：手动输入或语音输入边的两个端点与权值
  - 矩阵输入：以邻接矩阵形式输入边与权值
  - 切换时保留已输入的边,可继续补充剩余边
- 建模区：学习者可在画布上手动添加节点(输入或语音输入节点名称)、连接边(点击两节点后输入或语音输入权值),构建自定义图
- 算法选择：学习者自主选择使用 Kruskal 或 Prim 执行,按钮圆角 0.625rem
- MST 构建：在自建图上执行所选算法,交互方式同任务 1/2
- 方案说明输入区：文本输入框,圆角 0.625rem,支持文字输入或语音输入,学习者填写 MST 方案说明
- **提交前约束检测**：点击提交按钮(圆角 0.625rem)后,系统自动检测约束条件(必经边、禁用边等)是否满足
  - 未满足约束条件：不允许提交,弹出提示框(圆角 0.625rem)说明未满足的约束条件,要求学习者修改后重新提交
  - 满足约束条件：允许提交,进入方案论证环节
- 提交按钮：提交后系统校验 MST 是否正确(权值总和最小),并给出反馈
- 方案复盘：完成后可选择保存与下载复盘内容
- 重置按钮：清空建模区与说明区,圆角 0.625rem
- **AgentHint 陪伴提示**：学习者首次进入建模区时,在建模区上方显示 AgentHint,提示「从场景描述中提取节点和边是建模的第一步,慢慢来,我会陪着你」
- **语音开关**：页面右上角显示语音开关按钮,可控制所有语音播报功能
- **智能助手机器人**：页面右下角显示机器人图标,点击后展开对话框,可询问建模方法、算法选择、约束条件处理等问题

**延迟性自我解释交互：**

- 触发时机：仅在学习者提交最终布线方案且满足约束条件后触发
- 交互方式：提交后,强制弹出方案论证框(圆角 0.625rem),要求学习者通过文字输入或语音输入说明「为什么这个方案是最优的」
- 继续条件：学习者必须输入方案论证内容后,点击「确认提交」按钮(圆角 0.625rem),系统才执行校验并给出反馈
- 方案论证框样式：居中弹窗,圆角 0.625rem,包含问题文本、文本输入区、语音输入按钮、确认提交按钮
- 分层规则：
  - 零基础：提供详细提示性问题,如「从场景建模到算法选择,你是如何一步步得出这个方案的？为什么这个方案的总权值最小？」
  - 中等：提供简化提示性问题,如「为什么这个方案是最优的？」
  - 高阶：提供简短反思性问题,如「论证方案最优性」
- 引导完整复盘：问题设计需引导学习者从建模、算法选择、执行过程到结果验证的完整复盘
- **自我解释保存**：学习者提交方案论证后,系统保存该次自我解释记录(问题+学习者回答+系统点评),可在首页「我的反思」区域查看与下载

**程序性信息面板**(圆角 0.625rem)：
- 真实问题 → 抽象图 → 建模 → 构建 MST → 撰写说明 完整流程说明
- **知识库关联**：流程说明中的关键术语可点击跳转到知识库对应条目

**支持性信息面板**(圆角 0.625rem)：
- 场景建模方法(如何识别节点与边)
- 算法选择依据
- 方案说明写作规范
- **知识库关联**：每个知识点可点击跳转到知识库对应条目

**语音规则：**
- 任务说明不包含语音播放功能
- **语音重复播放**：已播放的语音内容支持重复播放,提供「重新播放」按钮,圆角 0.625rem
- 选边时播放当前边的语音(包含边的两个端点名称与权值)
- 选边后播放顺序提醒语音(提示下一步可选择的边或加入的点)
- 选择成环的边时播放语音提醒(说明该边形成回路)
- 所有语音采用自然口语化表达,权值播放必须准确
- 支持语速调节功能,提供慢速、标准、快速三档选择,默认为标准语速
- 支持音色选择功能,提供多种音色选项供学习者选择
- 语音开关关闭时,所有自动语音播报功能停止

**分层支架规则：**

| 层级 | 支架内容 |
|------|----------|
| 零基础 | 提供建模模板(预填节点框架,学习者补充权值)；方案说明提供填空框架(如「本方案选择___算法,共选___条边,总权值为___,理由是___」)；延迟性自我解释框提供详细提示性问题 |
| 中等 | 提供建模提纲(列出需完成的步骤,不预填内容)；方案说明提供结构提纲；延迟性自我解释框提供简化提示性问题 |
| 高阶 | 无任何提示与模板,完全自主建模与撰写；延迟性自我解释框提供简短反思性问题 |

---

### 4.8 练习页

**页面功能：**

- 提供个性化练习模式,包含 5 道选择题、3 道判断题、2 道大题,共 10 道题
- 每道题目分值为 10 分,总分 100 分
- 题目覆盖 MST 核心概念与算法步骤
- 每题提交后给出反馈(分层：零基础给解释性反馈,中等给提示性反馈,高阶给结果性反馈)
- 支持重新作答
- 题目卡片圆角 0.625rem,按钮圆角 0.625rem
- **智能助手机器人**：页面右下角显示机器人图标,点击后展开对话框,可询问题目解析、知识点说明等问题

**练习状态机：**

- **idle(空闲状态)**：初始状态,显示「开始练习」按钮,圆角 0.625rem
- **generating(生成中)**：点击「开始练习」后进入,显示加载动画与提示文字「正在为你生成个性化练习题」
- **answering(作答中)**：题目生成完成后进入,展示 10 道题目,学习者可逐题作答
- **submitted(已提交)**：学习者提交全部答案后进入,展示总分、各题得分、标准解析

**个性化题目生成规则：**

- 根据学习者在三个任务中的错误操作和自我解释记录,识别薄弱知识点
- 针对薄弱知识点,从题库中筛选对应题目
- **题目不重复机制**：
  - 系统记录学习者历史练习中已出现的题目 ID
  - 每次生成新题目时,优先选择未出现过的题目
  - 若某知识点题库已全部使用,则轮转复用,但确保同一次练习中不重复
- 若学习者未完成任务或无明显薄弱点,则随机生成覆盖全部知识点的题目

**大题 AI 批改功能：**

- **触发条件**：学习者提交大题答案后,在已提交状态下显示「AI 批改」按钮,圆角 0.625rem
- **批改流程**：
  - 点击「AI 批改」按钮后,通过 Supabase Edge Function 代理调用文心大模型(wenxin-text-generation)
  - 将题目、学习者答案、参考答案一起发送给大模型,请求详细点评和评分
  - 批改结果以 SSE 流式方式边生成边展示,呈现打字机效果
  - 批改内容包含：优点分析、不足指出、改进建议、评分(10 分制)
  - 批改完成后按钮文字变为「重新批改」,允许再次调用大模型重新批改
- **批改结果展示**：
  - 批改内容嵌入在题目卡片内,不新增页面
  - 批改过程中显示加载状态,批改完成后显示完整批改内容

**练习历史记录功能：**

- **数据存储**：使用 Supabase 持久化存储每次练习的以下信息
  - 练习时间
  - 总分(100 分制)
  - 各题得分(10 分制)
  - 薄弱知识点列表
  - 题目 ID 列表(用于题目不重复机制)
- **历史记录展示**：
  - 练习页面顶部显示「查看历史记录」按钮,圆角 0.625rem
  - 点击后展开历史记录面板,圆角 0.625rem
  - 面板内容：练习时间、总分、薄弱点变化趋势图(折线图或柱状图)
  - 支持点击单次记录查看详细得分与题目解析
- **趋势分析**：
  - 展示薄弱知识点在多次练习中的得分变化趋势
  - 识别持续薄弱的知识点,在下次练习中优先针对性出题

**薄弱项重新出题功能：**

- **触发条件**：学习者在历史记录中查看薄弱知识点后,点击「针对薄弱项练习」按钮,圆角 0.625rem
- **AI 动态生成题目**：
  - 通过 Supabase Edge Function 代理调用文心大模型(wenxin-text-generation)
  - 将薄弱知识点名称、知识点描述、学习者水平一起发送给大模型
  - 请求大模型针对该知识点动态生成新题目(包含题干、选项、答案、解析)
  - 生成的题目不复用题库中的固定题目,确保每次练习题目不同
- **题目类型**：
  - 根据薄弱知识点类型,生成对应题型(选择题、判断题或大题)
  - 每次生成 3-5 道针对性题目
- **题目展示与作答**：
  - 生成完成后进入 answering 状态,学习者可逐题作答
  - 提交后给出反馈与解析,大题支持 AI 批改

---

### 4.9 知识库

- 静态内容页,按主题分类展示所有支持性信息
- 分类：图论基础 / 树与无环性质 / 贪心思想 / 并查集原理 / Kruskal 算法 / Prim 算法 / 双算法对比 / 场景建模方法
- 每个主题为独立卡片,圆角 0.625rem,支持展开/折叠
- **图片说明**：每个知识点条目增加图片说明,辅助理解
- **双向跳转**：
  - 从任务页面点击知识点链接跳转到知识库时,对应知识点自动展开并高亮,URL 加 # 锚点
  - 知识库页面提供「返回来源任务」按钮,圆角 0.625rem,点击后跳回来源任务页面
- 无交互操作,仅供查阅
- **智能助手机器人**：页面右下角显示机器人图标,点击后展开对话框,可询问知识点详细解释、相关概念等问题

**语音规则：**
- 知识库不包含任何语音播放功能

---

## 5. 业务规则与逻辑

### 5.1 学习者水平分层逻辑

- 学习者在首页选择水平后,该选择在当前会话内全站生效
- 所有任务页面根据当前水平自动调整：提示层级、信息量、反馈类型
- 学习者可在首页重新选择水平,切换后立即生效
- 水平选择不影响图结构与算法内容,仅影响辅助信息的显示与隐藏
- 智能助手机器人回复内容根据学习者水平自动调整详细程度

### 5.2 判环规则

- 使用并查集逻辑判断：若所选边的两个端点已在同一连通分量中,则该边形成回路
- 判环结果实时反馈,不需要学习者手动触发(任务 1 与演示模式下自动判断；任务 2 高阶模式下由学习者手动确认)

### 5.3 MST 完成判定

- 当已选边数等于节点数 - 1 且无回路时,判定 MST 构建完成
- 完成后进度条满格,显示完成提示,展示最终 MST 总权值

### 5.4 等权边处理规则

- 存在多条等权边时,任意选择其中一条均视为合法操作
- 最终 MST 总权值相同即为正确,不要求唯一路径

### 5.5 任务 3 校验规则

- 系统根据学习者自建图,计算标准 MST 总权值
- 学习者提交的 MST 总权值与标准值一致则判定正确
- 若图结构本身有误(如遗漏节点或边),系统提示建模可能存在问题,不直接给出正确建模方案

### 5.6 任务 3 输入方式切换规则

- 集合输入与矩阵输入可随时切换
- 切换时保留已输入的所有边数据
- 切换后可继续使用新方式补充剩余边

### 5.7 任务 3 方案复盘规则

- 完成任务后可选择保存复盘内容
- 支持下载复盘内容为本地文件

### 5.8 任务 3 提交前约束检测规则

- 学习者点击提交按钮后,系统自动检测约束条件(必经边、禁用边等)是否满足
- 未满足约束条件时,不允许提交,弹出提示框说明未满足的约束条件,要求学习者修改后重新提交
- 满足约束条件时,允许提交,进入方案论证环节

### 5.9 语音播放规则

- 任务 1 进入时自动播放 Kruskal 算法步骤语音
- 任务 2 选择算法后自动播放对应算法步骤语音
- 选边时自动播放当前边的语音与顺序提醒语音
- 选择成环边时自动播放语音提醒
- 所有语音采用自然口语化表达
- 边的权值播放必须准确无误
- 语音输出需消除机械感与不自然停顿,语调变化符合日常口语表达习惯

### 5.10 语音重复播放规则

- 所有任务页面已播放的语音内容支持重复播放
- 提供「重新播放」按钮,点击后重新播放当前语音内容
- 重复播放不影响当前操作进度

### 5.11 语速调节规则

- 所有任务页面提供语速调节功能
- 语速档位：慢速、标准、快速三档
- 默认语速为标准档,接近自然对话节奏
- 学习者可随时切换语速,切换后立即生效
- 语速设置在当前会话内全站生效

### 5.12 音色选择规则

- 所有任务页面提供音色选择功能
- 提供多种音色选项供学习者选择
- 学习者可随时切换音色,切换后立即生效
- 音色设置在当前会话内全站生效

### 5.13 语音开关规则

- 语音开关按钮固定在所有任务页面(任务1、任务2、任务3)右上角
- 点击按钮可切换语音播报功能的开启与关闭状态
- 语音开关状态在当前会话内全站生效并持久保存(页面刷新内保持)
- 默认状态为开启
- 语音开关关闭时,所有自动语音播报功能停止
- 语音开关关闭时,重新播放按钮置灰不可点击
- 语音开关关闭时,语速调节和音色选择功能置灰不可操作
- 语音开关开启时,恢复所有语音播报功能
- 语音开关状态切换时,当前正在播放的语音立即停止或恢复
- 语音开关不影响语音输入功能

### 5.14 信标一致性规则

- 全站所有页面：选中边统一为柔和绿色,回路边统一为柔和红色,步骤提示统一为矢车菊蓝色
- 术语统一：节点、边、权值、回路、MST、Kruskal、Prim 全站使用一致表述
- 按钮样式统一：主操作按钮(矢车菊蓝填充,圆角 0.625rem)、次操作按钮(矢车菊蓝描边,圆角 0.625rem)、危险操作按钮(灰色,圆角 0.625rem)

### 5.15 延迟性自我解释交互规则

- 任务 1：仅在学习者选错边、出现回路后触发解释框,要求通过文字或语音输入解释「为什么这条边不能加入 MST」,解释通过后动画继续
- 任务 2：仅在 Kruskal 和 Prim 双算法都完整运行结束后触发对比总结框,要求通过文字或语音输入归纳两种算法的差异,不提前给出对比表
- 任务 3：仅在学习者提交最终布线方案且满足约束条件后触发方案论证框,要求通过文字或语音输入说明「为什么这个方案是最优的」,引导从建模到算法选择的完整复盘
- 所有解释框必须在关键节点暂停时触发,打破线性播放,设置认知停顿点,促进意义建构
- 学习者必须输入解释内容后才能继续,不允许跳过或关闭
- 解释框内容根据学习者水平分层显示,零基础最详细,高阶最简短

### 5.16 自我解释保存规则

- 学习者在三个任务中的所有自我解释记录(问题+学习者回答+系统点评)自动保存
- 首页「我的反思」区域展示自我解释记录摘要
- 点击「下载全部反思」按钮,将三个任务中所有自我解释记录打包下载为本地文件
- 下载文件格式为文本文件或PDF,按任务分组展示

### 5.17 语音输入规则

- 所有延迟性自我解释交互框均支持语音输入功能
- 任务 3 的建模区节点名称、边权值、方案说明输入区均支持语音输入
- 语音输入按钮与文本输入框并列显示
- 语音输入完成后自动转换为文字填入对应输入区
- 语音输入支持实时识别与纠错

### 5.18 知识库关联规则

- 任务 1、2、3 中的算法步骤和支持性信息区域,关联知识库中对应知识点
- 点击知识点链接跳转到知识库对应条目
- 跳转到知识库后,对应知识点自动展开并高亮,URL 加 # 锚点
- 知识库页面提供「返回来源任务」按钮,点击后跳回来源任务页面

### 5.19 任务 2 算法对比概念图拖拽填写规则

- 在双算法都完整运行结束后,展示 Kruskal vs Prim 对比概念图
- 以列表形式展示两个算法的对比特征项
- 学习者将特征描述拖拽到对应算法的对应特征项位置
- 全部填写正确后,表格变为柔和绿色,显示完成提示
- 填写错误时,错误项高亮为柔和红色,提示重新填写

### 5.20 智能助手机器人交互规则

- 机器人图标固定在所有页面右下角,始终可见
- 点击机器人图标后展开对话框,对话框位于页面右侧或居中弹窗
- 学习者可通过文字输入向机器人提问,机器人给出文字回复
- 机器人回复内容根据学习者当前所在页面与学习者水平自动调整详细程度
- 零基础学习者：机器人给出详细解释性回复
- 中等基础学习者：机器人给出简化提示性回复
- 高阶学习者：机器人给出简短结果性回复
- 机器人可识别学习者当前所在任务页面,针对当前任务内容给出帮助
- 对话历史记录在当前会话内保留,刷新页面后清空
- 对话框可最小化为机器人图标,再次点击恢复对话框
- 对话框可关闭,关闭后机器人图标仍保留在页面右下角

### 5.21 智能助手机器人微表情规则

- 机器人根据状态切换微表情：idle(空闲)、thinking(思考中)、excited(兴奋)、curious(好奇)
- 学习者输入问题时切换为 thinking 状态
- 机器人回复完成后切换为 excited 状态
- 学习者长时间未操作时切换为 curious 状态
- 其他时间保持 idle 状态

### 5.22 常见问题快捷按钮规则

- 快捷按钮位于对话框内文本输入框上方,对话历史记录区下方
- 按钮横向排列,支持左右滚动查看更多按钮
- 每个页面显示3-4个最相关的常见问题
- 按钮内容根据当前所在页面自动切换
- 点击快捷按钮后,问题文本自动填入输入框并立即发送
- 机器人收到快捷问题后,按正常对话流程给出回复
- 快捷按钮样式为矢车菊蓝描边按钮,圆角 0.625rem,与整体风格一致

### 5.23 AgentHint 行内陪伴组件规则

- AgentHint 在任务页面适当位置按需嵌入温和的认知失衡提示
- 任务 1：学习者首次选错边时,在步骤记录面板上方显示 AgentHint
- 任务 2：学习者首次遇到等权边时,在边权排序列表上方显示 AgentHint
- 任务 3：学习者首次进入建模区时,在建模区上方显示 AgentHint
- AgentHint 首次出现时自动展示,学习者可点击关闭按钮隐藏
- 同一场景下 AgentHint 仅在首次触发时显示,后续不再重复出现
- AgentHint 不影响原有功能与交互流程,仅作为情感化陪伴提示

### 5.24 学情报告专项练习题作答规则

- 三个任务全部完成后,学情报告区域自动出现在首页
- 学情报告中包含针对薄弱知识点的专项练习题
- 每道练习题包含：题干、提示(hint)、作答输入框(Textarea)、提交按钮
- 学习者在输入框中填写答案后点击提交按钮
- 提交后系统调用 validateAnswer 校验机制进行即时评分
- 评分结果展示：得分(数值)和质量等级(如优秀、良好、及格、不及格)
- 提交后展示标准解析：基于题目的 hint 做扩展解释,结合 MST 知识点给出参考答案
- 每道题提供「重新作答」按钮,点击后清空输入框和评分结果,允许重新填写答案
- 重新作答后可再次提交,系统重新评分并展示解析
- 专项练习题作答功能嵌入在学情报告的专项练习卡片中,不新增页面

### 5.25 AI 智能批改规则

- 触发条件：学习者提交答案并完成 validateAnswer 评分后,在已提交状态下显示「AI 批改」按钮
- 点击「AI 批改」按钮后,通过 Supabase Edge Function 代理调用文心大模型(wenxin-text-generation)
- 将题目、学习者答案、参考答案一起发送给大模型,请求个性化批改意见
- 批改结果以 SSE 流式方式边生成边展示,呈现打字机效果
- 批改内容包含三部分：优点分析、不足指出、改进建议
- 批改完成后按钮文字变为「重新批改」,允许再次调用大模型重新批改
- AI 批改功能嵌入在 PracticeAnswerBox 组件内,不新增页面
- 批改过程中显示加载状态,批改完成后显示完整批改内容

### 5.26 练习页状态机规则

- **idle(空闲状态)**：初始状态,显示「开始练习」按钮
- **generating(生成中)**：点击「开始练习」后进入,显示加载动画与提示文字
- **answering(作答中)**：题目生成完成后进入,展示 10 道题目,学习者可逐题作答
- **submitted(已提交)**：学习者提交全部答案后进入,展示总分、各题得分、标准解析

### 5.27 练习题目生成规则

- 根据学习者在三个任务中的错误操作和自我解释记录,识别薄弱知识点
- 针对薄弱知识点,从题库中筛选对应题目
- 系统记录学习者历史练习中已出现的题目 ID
- 每次生成新题目时,优先选择未出现过的题目
- 若某知识点题库已全部使用,则轮转复用,但确保同一次练习中不重复
- 若学习者未完成任务或无明显薄弱点,则随机生成覆盖全部知识点的题目

### 5.28 练习历史记录规则

- 使用 Supabase 持久化存储每次练习的练习时间、总分、各题得分、薄弱知识点列表、题目 ID 列表
- 练习页面顶部显示「查看历史记录」按钮
- 点击后展开历史记录面板,展示练习时间、总分、薄弱点变化趋势图
- 支持点击单次记录查看详细得分与题目解析
- 展示薄弱知识点在多次练习中的得分变化趋势
- 识别持续薄弱的知识点,在下次练习中优先针对性出题

### 5.29 大题 AI 批改规则

- 学习者提交大题答案后,在已提交状态下显示「AI 批改」按钮
- 点击「AI 批改」按钮后,通过 Supabase Edge Function 代理调用文心大模型(wenxin-text-generation)
- 将题目、学习者答案、参考答案一起发送给大模型,请求详细点评和评分
- 批改结果以 SSE 流式方式边生成边展示,呈现打字机效果
- 批改内容包含：优点分析、不足指出、改进建议、评分(10 分制)
- 批改完成后按钮文字变为「重新批改」,允许再次调用大模型重新批改
- 批改内容嵌入在题目卡片内,不新增页面
- 批改过程中显示加载状态,批改完成后显示完整批改内容

### 5.30 薄弱项重新出题规则

- 学习者在历史记录中查看薄弱知识点后,点击「针对薄弱项练习」按钮
- 通过 Supabase Edge Function 代理调用文心大模型(wenxin-text-generation)
- 将薄弱知识点名称、知识点描述、学习者水平一起发送给大模型
- 请求大模型针对该知识点动态生成新题目(包含题干、选项、答案、解析)
- 生成的题目不复用题库中的固定题目,确保每次练习题目不同
- 根据薄弱知识点类型,生成对应题型(选择题、判断题或大题)
- 每次生成 3-5 道针对性题目
- 生成完成后进入 answering 状态,学习者可逐题作答
- 提交后给出反馈与解析,大题支持 AI 批改

### 5.31 练习评分规则

- 每道题目分值为 10 分
- 总分为 100 分(10 道题 × 10 分)
- 选择题与判断题：答对得 10 分,答错得 0 分
- 大题：根据 validateAnswer 校验机制或 AI 批改结果给出 0-10 分评分

---

## 6. 异常与边界情况

| 场景 | 处理方式 |
|------|----------|
| 学习者未选择水平直接进入任务页 | 默认使用「中等基础」水平,页面顶部提示可返回首页修改 |
| 任务 1 中学习者选择回路边 | 边变柔和红色,强制暂停动画,弹出延迟性自我解释框,播放成环语音提醒,学习者通过文字或语音输入解释后继续 |
| 任务 2 等权边存在多条 | 高亮所有等权边,学习者选择任意一条均合法 |
| 任务 2 双算法未完整运行 | 不触发对比总结框,仅在双算法都完整运行结束后触发 |
| 任务 2 算法对比概念图拖拽填写错误 | 错误项高亮为柔和红色,提示重新填写 |
| 任务 3 学习者建模图不连通 | 提交时提示「图不连通,无法构建 MST,请检查是否遗漏边」 |
| 任务 3 学习者未填写方案说明直接提交 | 弹出方案论证框,要求通过文字或语音输入方案论证内容后才能提交 |
| 任务 3 提交前未满足约束条件 | 不允许提交,弹出提示框说明未满足的约束条件,要求学习者修改后重新提交 |
| 任务 3 输入方式切换时已有部分边数据 | 保留已输入数据,切换后可继续补充 |
| 演示模式中途切换倍速 | 立即以新倍速继续,不重置当前进度 |
| 练习题全部答完 | 显示得分与简短总结,提供重新作答入口 |
| 语音播放权值错误 | 系统必须播放正确的边权值,不得出现错误 |
| 语速调节中途切换 | 立即以新语速继续播放,不中断当前语音 |
| 音色选择中途切换 | 立即以新音色继续播放,不中断当前语音 |
| 语音开关关闭时点击重新播放按钮 | 按钮置灰不可点击,无响应 |
| 语音开关关闭时调整语速或音色 | 语速调节和音色选择功能置灰不可操作 |
| 语音开关状态切换时正在播放语音 | 当前正在播放的语音立即停止或恢复 |
| 延迟性自我解释框未输入内容直接点击继续 | 提示「请输入解释内容后继续」,不允许跳过 |
| 延迟性自我解释框输入内容为空 | 提示「请输入有效内容后继续」,不允许跳过 |
| 延迟性自我解释框直接关闭 | 解释框重新弹出,必须输入内容后才能继续 |
| 语音输入识别失败 | 提示「语音识别失败,请重新输入或使用文字输入」 |
| 语音输入环境噪音过大 | 提示「环境噪音过大,请调整环境或使用文字输入」 |
| 知识库跳转后无来源任务 | 不显示「返回来源任务」按钮 |
| 首页「我的反思」区域无反思记录 | 显示「暂无反思记录」,「下载全部反思」按钮置灰不可点击 |
| 智能助手机器人对话框关闭后 | 机器人图标仍保留在页面右下角,可再次点击打开对话框 |
| 智能助手机器人对话历史记录过长 | 对话框支持滚动查看历史记录,不限制记录条数 |
| 学习者向智能助手机器人提问超出知识范围 | 机器人回复「抱歉,我暂时无法回答这个问题,建议查阅知识库或联系老师」 |
| 快捷按钮数量超出屏幕宽度 | 按钮区域支持左右滚动查看所有按钮 |
| 快捷按钮点击后输入框已有内容 | 清空输入框原有内容,填入快捷问题并发送 |
| AgentHint 首次出现后学习者点击关闭 | AgentHint 隐藏,同一场景下不再重复出现 |
| 学情报告专项练习题未填写答案直接提交 | 提示「请填写答案后提交」,不允许提交 |
| 学情报告专项练习题提交后点击重新作答 | 清空输入框和评分结果,允许重新填写答案 |
| 学情报告专项练习题重新作答后再次提交 | 系统重新评分并展示解析 |
| AI 批改按钮点击后网络请求失败 | 显示错误提示「批改请求失败,请稍后重试」,按钮恢复为「AI 批改」状态 |
| AI 批改过程中学习者关闭页面 | 批改结果不保存,下次进入时需重新点击「AI 批改」按钮 |
| AI 批改返回内容为空 | 显示提示「批改内容生成失败,请重新尝试」 |
| AI 批改流式传输中断 | 显示已接收的部分批改内容,并提示「批改内容未完整生成,请重新批改」 |
| 学习者在批改过程中点击重新作答 | 中断批改流程,清空输入框和评分结果,允许重新填写答案 |
| 练习页点击「开始练习」后题目生成失败 | 显示错误提示「题目生成失败,请稍后重试」,返回 idle 状态 |
| 练习页题目生成过程中学习者关闭页面 | 生成进度不保存,下次进入时需重新点击「开始练习」 |
| 练习页历史记录为空 | 显示「暂无练习记录」,「查看历史记录」按钮置灰不可点击 |
| 练习页历史记录数据加载失败 | 显示错误提示「历史记录加载失败,请稍后重试」 |
| 练习页薄弱项重新出题时 AI 生成失败 | 显示错误提示「题目生成失败,请稍后重试」,返回历史记录面板 |
| 练习页薄弱项重新出题时生成题目数量不足 | 显示已生成的题目,提示「部分题目生成失败,已展示可用题目」 |
| 练习页大题 AI 批改时网络请求失败 | 显示错误提示「批改请求失败,请稍后重试」,按钮恢复为「AI 批改」状态 |
| 练习页大题 AI 批改返回内容为空 | 显示提示「批改内容生成失败,请重新尝试」 |
| 练习页大题 AI 批改流式传输中断 | 显示已接收的部分批改内容,并提示「批改内容未完整生成,请重新批改」 |
| 练习页题目不重复机制失效(题库已全部使用) | 轮转复用题库题目,但确保同一次练习中不重复 |
| 练习页学习者未完成任何任务直接进入练习 | 随机生成覆盖全部知识点的题目,不针对薄弱点 |
| 练习页学习者提交答案后刷新页面 | 提交记录已保存至 Supabase,刷新后可在历史记录中查看 |
| 练习页学习者在 answering 状态刷新页面 | 作答进度不保存,返回 idle 状态,需重新开始练习 |

---

## 7. 验收标准

1. 首页可正常选择学习者水平,选择后全站分层显示生效,首页无语音播放功能
2. 首页「我的反思」区域正常展示自我解释记录摘要,点击「下载全部反思」按钮可下载所有反思记录
3. 三个任务全部完成后,首页学情报告区域自动出现,展示整体表现、薄弱知识点和专项练习题
4. 学情报告专项练习题包含题干、提示、作答输入框和提交按钮,学习者可正常填写答案并提交
5. 专项练习题提交后系统调用 validateAnswer 校验机制进行即时评分,展示得分和质量等级
6. 专项练习题提交后展示标准解析,基于 hint 做扩展解释并结合 MST 知识点给出参考答案
7. 专项练习题提供「重新作答」按钮,点击后清空输入框和评分结果,允许重新填写答案
8. 专项练习题重新作答后可再次提交,系统重新评分并展示解析
9. 专项练习题提交并完成评分后,显示「AI 批改」按钮
10. 点击「AI 批改」按钮后,通过 Supabase Edge Function 代理调用文心大模型
11. AI 批改结果以 SSE 流式方式边生成边展示,呈现打字机效果
12. AI 批改内容包含优点分析、不足指出、改进建议三部分
13. AI 批改完成后按钮文字变为「重新批改」,允许再次调用
14. AI 批改功能嵌入在 PracticeAnswerBox 组件内,不新增页面
15. AI 批改过程中显示加载状态,批改完成后显示完整批改内容
16. 固定侧边导航在所有页面正常显示,当前页高亮,点击可正常跳转,知识库位于导航最后位置
17. 所有页面右下角固定显示智能助手机器人图标,点击后展开对话框,可正常进行文字对话
18. 智能助手机器人根据状态切换微表情(idle/thinking/excited/curious),表情切换流畅自然
19. 智能助手机器人对话框内文本输入框上方显示常见问题快捷按钮区,按钮横向排列,支持左右滚动
20. 快捷按钮内容根据当前所在页面自动切换,每个页面显示3-4个最相关的常见问题
21. 点击快捷按钮后,问题文本自动填入输入框并立即发送,机器人给出对应回复
22. 快捷按钮样式为矢车菊蓝描边按钮,圆角 0.625rem,与整体风格一致
23. 智能助手机器人回复内容根据学习者水平与当前页面自动调整详细程度
24. 智能助手机器人对话历史记录在当前会话内保留,刷新页面后清空
25. 智能助手机器人对话框可最小化与关闭,关闭后机器人图标仍保留
26. 所有任务页面(任务1、任务2、任务3)右上角固定显示语音开关按钮
27. 语音开关按钮样式为矢车菊蓝图标按钮,圆角 0.625rem,开启状态显示喇叭图标,关闭状态显示静音图标
28. 点击语音开关按钮可切换语音播报功能的开启与关闭状态
29. 语音开关状态在当前会话内全站生效并持久保存,页面刷新后保持
30. 语音开关默认状态为开启
31. 语音开关关闭时,所有自动语音播报功能停止
32. 语音开关关闭时,重新播放按钮置灰不可点击
33. 语音开关关闭时,语速调节和音色选择功能置灰不可操作
34. 语音开关开启时,恢复所有语音播报功能
35. 语音开关状态切换时,当前正在播放的语音立即停止或恢复
36. 语音开关不影响语音输入功能
37. 任务 1 进入时自动播放 Kruskal 算法步骤语音,无播放按键,已播放语音支持重复播放
38. 任务 1 图可正常渲染,节点可拖拽,边可点选,判环逻辑正确,进度条随选边更新,演示模式可正常运行并支持倍速切换
39. 任务 1 选边时播放当前边语音与顺序提醒语音,成环时播放语音提醒,权值播放准确
40. 任务 1 三种水平下提示与反馈内容不同,零基础显示最多,高阶显示最少
41. 任务 1 仅在学习者选错边、出现回路后强制暂停,弹出延迟性自我解释框,学习者通过文字或语音输入解释后动画继续,解释记录自动保存
42. 任务 1 学习者首次选错边时,在步骤记录面板上方显示 AgentHint,提示内容温和友好
43. 任务 1 算法步骤和支持性信息中的知识点可点击跳转到知识库对应条目
44. 任务 2 选择算法后自动播放对应算法步骤语音,无播放按键,已播放语音支持重复播放
45. 任务 2 Kruskal 与 Prim 标签可正常切换,等权边高亮逻辑正确
46. 任务 2 选边时播放当前边语音与顺序提醒语音,成环时播放语音提醒,权值播放准确
47. 任务 2 仅在 Kruskal 和 Prim 双算法都完整运行结束后弹出对比总结框,要求学习者通过文字或语音输入归纳差异,不提前给出对比表,解释记录自动保存
48. 任务 2 完成对比总结后展示算法对比概念图拖拽填写界面,学习者可拖拽特征描述到对应位置,全部填写正确后表格变柔和绿色
49. 任务 2 学习者首次遇到等权边时,在边权排序列表上方显示 AgentHint,提示内容温和友好
50. 任务 2 算法步骤和支持性信息中的知识点可点击跳转到知识库对应条目
51. 任务 3 支持集合输入与矩阵输入随时切换,切换时保留已输入数据
52. 任务 3 建模区可添加节点与边,支持文字输入与语音输入,MST 构建后可提交,校验逻辑正确,分层支架按水平正确显示
53. 任务 3 选边时播放当前边语音与顺序提醒语音,成环时播放语音提醒,权值播放准确,已播放语音支持重复播放
54. 任务 3 提交前自动检测约束条件,未满足约束条件时不允许提交并给出明确提示
55. 任务 3 完成后可保存与下载复盘内容
56. 任务 3 仅在学习者提交最终布线方案且满足约束条件后弹出方案论证框,要求通过文字或语音输入说明方案最优性,学习者输入论证后才能提交,解释记录自动保存
57. 任务 3 学习者首次进入建模区时,在建模区上方显示 AgentHint,提示内容温和友好
58. 任务 3 算法步骤和支持性信息中的知识点可点击跳转到知识库对应条目
59. 知识库所有主题卡片可正常展开/折叠,无语音播放功能,每个知识点包含图片说明
60. 知识库从任务页面跳转时,对应知识点自动展开并高亮,URL 加 # 锚点,提供「返回来源任务」按钮
61. 练习页初始状态为 idle,显示「开始练习」按钮
62. 点击「开始练习」后进入 generating 状态,显示加载动画与提示文字
63. 题目生成完成后进入 answering 状态,展示 5 道选择题、3 道判断题、2 道大题,共 10 道题
64. 每道题目分值为 10 分,总分 100 分
65. 学习者可逐题作答,提交全部答案后进入 submitted 状态
66. submitted 状态展示总分、各题得分、标准解析
67. 大题提交后显示「AI 批改」按钮,点击后通过 Supabase Edge Function 代理调用文心大模型
68. 大题 AI 批改结果以 SSE 流式方式边生成边展示,呈现打字机效果
69. 大题 AI 批改内容包含优点分析、不足指出、改进建议、评分(10 分制)
70. 大题 AI 批改完成后按钮文字变为「重新批改」,允许再次调用
71. 练习页顶部显示「查看历史记录」按钮,点击后展开历史记录面板
72. 历史记录面板展示练习时间、总分、薄弱点变化趋势图
73. 支持点击单次记录查看详细得分与题目解析
74. 历史记录面板展示薄弱知识点在多次练习中的得分变化趋势
75. 历史记录面板提供「针对薄弱项练习」按钮,点击后通过 AI 动态生成新题目
76. 薄弱项练习题目由文心大模型动态生成,不复用题库中的固定题目
77. 薄弱项练习生成 3-5 道针对性题目,生成完成后进入 answering 状态
78. 练习题目不重复机制生效,每次生成的题目优先选择未出现过的题目
79. 若某知识点题库已全部使用,则轮转复用,但确保同一次练习中不重复
80. 练习历史记录使用 Supabase 持久化存储,刷新页面后数据保留
81. 所有任务页面提供语速调节功能,支持慢速、标准、快速三档切换,默认为标准语速
82. 所有任务页面提供音色选择功能,提供多种音色选项,学习者可随时切换
83. 语速切换后立即生效,不中断当前语音播放
84. 音色切换后立即生效,不中断当前语音播放
85. 语音输出无明显机械感,停顿自然,语调变化符合口语习惯
86. 所有语音采用自然口语化表达,不生硬
87. 全站颜色规范一致：选中边柔和绿色、回路边柔和红色、步骤提示矢车菊蓝色
88. 全站背景色为暖米白(#FDFBF7),主色调为矢车菊蓝(#6495ED),次要色为柔和沙黄(#F4E4C1)
89. 全站所有交互按钮、流程节点、卡片、输入框、对话框等元素统一使用 0.625rem 或以上圆角
90. 全站无多余装饰,无花哨动画,文字无冗余重复
91. 延迟性自我解释框在所有任务页面的关键节点正常弹出,学习者必须通过文字或语音输入解释后才能继续
92. 延迟性自我解释框内容根据学习者水平分层显示,零基础最详细,高阶最简短
93. 延迟性自我解释框未输入内容或输入为空时无法继续,必须输入有效内容
94. 延迟性自我解释框直接关闭后重新弹出,必须输入内容后才能继续
95. 任务 2 在双算法运行过程中不展示任何对比表或对比内容,仅在双算法完整运行结束后弹出对比总结框
96. 所有延迟性自我解释交互框均包含语音输入按钮,点击后可正常进行语音输入
97. 任务 3 建模区节点名称、边权值输入支持语音输入功能
98. 任务 3 方案说明输入区支持语音输入功能
99. 语音输入完成后自动转换为文字填入对应输入区
100. 语音输入识别失败时给出明确提示
101. 语音输入环境噪音过大时给出明确提示
102. 智能助手机器人在所有页面可正常对话,回复内容准确且符合当前页面场景
103. 智能助手机器人对话框支持滚动查看历史记录
104. 快捷按钮数量超出屏幕宽度时,按钮区域支持左右滚动查看所有按钮
105. 快捷按钮点击后清空输入框原有内容,填入快捷问题并发送
106. AgentHint 在任务 1、2、3 的指定场景首次触发时正常显示,提示内容温和友好
107. AgentHint 可点击关闭按钮隐藏,同一场景下不再重复出现
108. AgentHint 不影响原有功能与交互流程
109. 全站视觉风格符合情感化设计要求,色彩舒缓,造型圆润,界面亲和力强
110. 练习页题目生成失败时显示错误提示并返回 idle 状态
111. 练习页历史记录为空时显示「暂无练习记录」,「查看历史记录」按钮置灰不可点击
112. 练习页薄弱项重新出题时 AI 生成失败显示错误提示并返回历史记录面板
113. 练习页大题 AI 批改时网络请求失败显示错误提示,按钮恢复为「AI 批改」状态
114. 练习页学习者未完成任何任务直接进入练习时,随机生成覆盖全部知识点的题目
115. 练习页学习者提交答案后刷新页面,提交记录已保存至 Supabase,可在历史记录中查看

---

## 8. 本期不实现功能

- 用户账号体系与学习进度云端持久化存储(本期水平选择仅在当前会话内有效)
- 多语言支持
- 移动端专项适配
- 自定义图(任务 1/2 图结构固定,不支持学习者自行修改节点与边)
- Prim 算法在任务 1 的实操交互(本期仅文字介绍)
- 练习题的难度自适应推荐
- 延迟性自我解释框回答内容的智能评估与反馈(本期仅要求输入解释即可继续,不对解释内容进行正误判断)
- 语音输入的多语言识别(本期仅支持中文语音输入)
- 智能助手机器人的语音对话功能(本期仅支持文字对话)
- 智能助手机器人的主动推送学习建议功能
- 智能助手机器人对话内容的云端持久化存储
- 快捷按钮内容的个性化推荐(本期按页面固定显示预设问题)
- 学情报告专项练习题 AI 批改内容的云端持久化存储(本期批改结果仅在当前会话内保留)
- AgentHint 内容的个性化推荐(本期按场景固定显示预设提示)
- 智能助手机器人微表情的动画过渡效果(本期仅切换静态表情图片)
- 练习页题目收藏功能
- 练习页错题本功能
- 练习页学习报告导出功能
- 练习页多人协作练习功能
- 练习页实时排行榜功能