docs: update architecture docs, audit reports, and bug tracking
- Update architecture impact map, data, feature checklist, gap audit - Add audit reports for dashboard, exam-homework, grades-diagnostic, settings-profile, textbooks - Update bug reports (admin, teacher, lesson-preparation, others, shared) - Update coding standards, DR plan, design docs, and README
This commit is contained in:
525
bugs/teacher_bug_v4.md
Normal file
525
bugs/teacher_bug_v4.md
Normal file
@@ -0,0 +1,525 @@
|
||||
# `src/app/(dashboard)/teacher` 产品体验与功能审查报告 v4
|
||||
|
||||
> 核查日期:2026-06-20(第四轮·产品/UX 视角)
|
||||
> 核查范围:`src/app/(dashboard)/teacher/` 全部功能模块的页面布局、交互流程、信息架构、用户习惯契合度
|
||||
> 对标产品:Canvas LMS、PowerSchool、钉钉教育版、企业微信教育版、ClassIn、晓黑板、希沃白板
|
||||
> 对比基准:[v1](./teacher_bug.md)、[v2](./teacher_bug_v2.md)、[v3](./teacher_bug_v3.md)(前三轮聚焦代码规范,本轮聚焦产品体验)
|
||||
> 应用技能:`web-design-guidelines`(Web 界面规范)、`web-artifacts-builder`(界面优化)
|
||||
|
||||
---
|
||||
|
||||
## 一、审查维度与方法
|
||||
|
||||
本轮审查跳出代码规范层面,从**教师用户真实使用场景**出发,按以下维度评估:
|
||||
|
||||
| 维度 | 评估要点 |
|
||||
|------|----------|
|
||||
| 信息架构 | 导航结构、功能分组、入口路径是否合理 |
|
||||
| 核心流程 | 高频任务(布置作业/批改/录分/考勤)的操作步数与心智负担 |
|
||||
| 数据呈现 | 列表/详情/统计的信息密度、可读性、可操作性 |
|
||||
| 反馈机制 | 操作后反馈、状态变化、错误恢复 |
|
||||
| 移动适配 | 教师移动端使用场景支持 |
|
||||
| 对标差距 | 与主流 LMS 产品的功能缺失与体验差距 |
|
||||
|
||||
---
|
||||
|
||||
## 二、信息架构问题
|
||||
|
||||
### 2.1 【P0·严重】导航项过多且分组混乱,违背教师工作流
|
||||
|
||||
**位置**:[navigation.ts](../src/modules/layout/config/navigation.ts#L108-L232) teacher 导航配置
|
||||
|
||||
**问题**:teacher 侧边栏共有 **17 个一级导航项**(Dashboard / Textbooks / Exams / Homework / Grades / Question Bank / Class Management / Course Plans / Lesson Plans / Attendance / Schedule Changes / Diagnostic / Electives / Management / Announcements / Messages),远超人脑短时记忆容量(7±2)。
|
||||
|
||||
**对标分析**:
|
||||
- Canvas:6 个主入口(Dashboard / Courses / Calendar / Inbox / History / Account)
|
||||
- 钉钉教育:5 个主入口(消息 / 工作 / 通讯录 / 日程 / 我的)
|
||||
- PowerSchool:7 个主入口(Start Page / Classes / Students / Reports / Setup / System / District)
|
||||
|
||||
**具体缺陷**:
|
||||
1. `Textbooks` 与 `Lesson Plans` 与 `Course Plans` 三个备课相关功能分散在不同位置,教师备课需要在三个入口间切换
|
||||
2. `Schedule Changes`(调课申请)与 `Class Management > Schedule`(课表查看)功能相关却分属不同一级入口
|
||||
3. `Management`(年级管理)入口对普通教师而言语义模糊,且其子项 `Grade Classes` / `Grade Insights` 实际是年级主任功能
|
||||
4. `Electives`(选修课)对非选修课教师是噪音,应按需显示
|
||||
|
||||
**建议**:
|
||||
- 将导航项收敛到 8 个以内:Dashboard / 教学(含备课+教材+课程计划)/ 作业考试 / 成绩 / 考勤 / 班级 / 诊断 / 消息
|
||||
- `Schedule Changes` 合并到 `Class Management` 子菜单
|
||||
- `Electives` / `Management` 按角色权限动态显示,非默认可见
|
||||
- `Textbooks` / `Lesson Plans` / `Course Plans` 合并为「教学资源」折叠组
|
||||
|
||||
### 2.2 【P1·重要】Exams 与 Homework 模块割裂,违背「出题-下发-批改」一体化心智
|
||||
|
||||
**位置**:[exams/page.tsx](../src/app/(dashboard)/teacher/exams/page.tsx) redirect 到 `exams/all`;[homework/page.tsx](../src/app/(dashboard)/teacher/homework/page.tsx) redirect 到 `homework/assignments`
|
||||
|
||||
**问题**:
|
||||
- 教师创建 Exam 后,需要手动跳到 Homework 模块才能下发为作业
|
||||
- `exams/grading` redirect 到 `homework/submissions`,说明系统已意识到两者关联,但仍保留两个独立入口
|
||||
- 作业详情页 [homework/assignments/[id]/page.tsx](../src/app/(dashboard)/teacher/homework/assignments/[id]/page.tsx) 显示「Source Exam」字段,但无法反向跳转到原 Exam
|
||||
|
||||
**对标分析**:Canvas 的「Assignments」统一管理作业(可关联 Quiz),教师在一个列表里完成创建/下发/批改,无需在两个模块间跳转。
|
||||
|
||||
**建议**:
|
||||
- 在 Exam 详情页增加「下发为作业」按钮,直接跳转到 `homework/assignments/create?examId=xxx`
|
||||
- 在 Homework 列表的「Source Exam」列增加链接,点击跳回 Exam 详情
|
||||
- 长期考虑合并为「作业考试」一级入口,子菜单区分类型
|
||||
|
||||
### 2.3 【P1·重要】Dashboard 缺少「待办聚合」,教师需多入口查找待处理事项
|
||||
|
||||
**位置**:[teacher-dashboard-view.tsx](../src/modules/dashboard/components/teacher-dashboard/teacher-dashboard-view.tsx)
|
||||
|
||||
**问题**:Dashboard 展示了 4 个统计卡片 + 成绩趋势 + 待批改 + 今日课表 + 作业 + 班级,但**没有统一的「今日待办」列表**。教师需要:
|
||||
- 去 `homework/submissions` 看待批改
|
||||
- 去 `attendance/sheet` 看今天是否要考勤
|
||||
- 去 `schedule-changes` 看调课申请是否被批准
|
||||
- 去 `grades/entry` 看是否要录成绩
|
||||
|
||||
**对标分析**:
|
||||
- Canvas Dashboard 顶部有「To Do」侧栏,聚合所有待办(待批改/待提交/待评分)
|
||||
- 钉钉教育首页有「待办」卡片,按紧急程度排序
|
||||
|
||||
**建议**:在 Dashboard 左栏顶部增加「今日待办」卡片,聚合:
|
||||
- 待批改作业(N 份)→ 点击跳转
|
||||
- 今日待考勤班级(N 个)→ 点击跳转
|
||||
- 待处理调课申请(N 条)
|
||||
- 近 3 天到期的作业未提交学生提醒
|
||||
|
||||
---
|
||||
|
||||
## 三、核心流程问题
|
||||
|
||||
### 3.1 【P0·严重】作业创建流程强制依赖 Exam,无法独立出题
|
||||
|
||||
**位置**:[homework/assignments/create/page.tsx](../src/app/(dashboard)/teacher/homework/assignments/create/page.tsx) + [homework-assignment-form.tsx](../src/modules/homework/components/homework-assignment-form.tsx)
|
||||
|
||||
**问题**:创建作业的表单**必须选择一个已存在的 Exam** 作为来源(`sourceExamId` 必填),如果没有 Exam 则直接显示空状态「No exams available - Create an exam first」。这意味着教师布置一次日常作业的流程是:
|
||||
1. 去 Question Bank 建题
|
||||
2. 去 Exams 创建考试
|
||||
3. 去 Homework 创建作业(关联 Exam)
|
||||
4. 等待学生提交
|
||||
5. 去 Homework Submissions 批改
|
||||
|
||||
**5 步才能布置一次作业,严重违背教师工作习惯**。日常作业(如抄写、阅读、小测验)根本不需要走「考试」流程。
|
||||
|
||||
**对标分析**:
|
||||
- 钉钉教育:教师直接在「作业」里发文本/图片/文件即可,1 步完成
|
||||
- Canvas:Assignment 可独立创建,关联 Quiz 是可选的
|
||||
- 晓黑板:支持快速发布口头作业/书面作业/打卡作业
|
||||
|
||||
**建议**:
|
||||
- 支持两种作业创建模式:「快速作业」(直接输入标题+描述+附件,不走 Exam)和「考试派生作业」(现有流程)
|
||||
- 快速作业模式允许教师直接粘贴题目文本或上传图片
|
||||
|
||||
### 3.2 【P0·严重】考勤批量录入缺少快捷操作,逐人下拉选择效率极低
|
||||
|
||||
**位置**:[attendance-sheet.tsx](../src/modules/attendance/components/attendance-sheet.tsx#L178-L208)
|
||||
|
||||
**问题**:考勤表每个学生一行,每行一个 Select 下拉框选状态。一个 40 人的班级要点 40 次下拉框。虽然有「Mark All Present」按钮,但实际场景中教师通常需要标记 2-3 个缺席/迟到学生,现状是:
|
||||
- 点「Mark All Present」→ 再逐个改 2-3 个异常学生
|
||||
- 或者逐个选 40 次
|
||||
|
||||
**对标分析**:
|
||||
- 钉钉教育:支持「一键全部到齐」+ 点击学生头像快速切换状态(弹出 5 个状态按钮)
|
||||
- ClassIn:支持快捷键(P=Present, A=Absent, L=Late)+ 批量框选
|
||||
|
||||
**建议**:
|
||||
- 每个学生行改为 5 个状态按钮组(单选),一键点击切换,无需下拉
|
||||
- 支持键盘快捷键:P/A/L/E/X
|
||||
- 默认全部 Present,教师只需点击异常学生
|
||||
- 支持搜索学生姓名快速定位
|
||||
|
||||
### 3.3 【P0·严重】成绩批量录入无校验、无快捷键、无保存草稿
|
||||
|
||||
**位置**:[batch-grade-entry.tsx](../src/modules/grades/components/batch-grade-entry.tsx)
|
||||
|
||||
**问题**:
|
||||
1. **无分数范围校验**:Input 接受任意数字,教师可能输入 150 分(满分 100)或负数,只在提交后才报错
|
||||
2. **无 Tab 键跳转**:输入完一个学生分数后,Tab 键应自动跳到下一个输入框,现状未验证是否支持
|
||||
3. **无草稿保存**:40 个学生分数输入到一半,刷新页面全部丢失
|
||||
4. **无 Excel 粘贴**:教师常在 Excel 里整理好分数,希望直接粘贴整列
|
||||
5. **无平均分/最高分实时统计**:输入过程中看不到班级整体情况
|
||||
|
||||
**对标分析**:
|
||||
- PowerSchool Gradebook:支持 Tab 跳转、自动保存、分数范围校验、Excel 粘贴
|
||||
- Canvas SpeedGrader:支持键盘快捷键批量评分
|
||||
|
||||
**建议**:
|
||||
- 输入框 `min={0} max={maxScore}` + `onBlur` 校验
|
||||
- 支持 Tab 键自动跳转下一行
|
||||
- 每 30 秒自动保存草稿到 localStorage
|
||||
- 支持从 Excel 粘贴一列分数
|
||||
- 顶部实时显示「已录入 N/M,平均 X 分,最高 Y 分」
|
||||
|
||||
### 3.4 【P1·重要】批改作业缺少「下一位」快捷跳转,需返回列表再进入
|
||||
|
||||
**位置**:[homework/submissions/[submissionId]/page.tsx](../src/app/(dashboard)/teacher/homework/submissions/[submissionId]/page.tsx)
|
||||
|
||||
**问题**:批改页面虽然传入了 `prevSubmissionId` / `nextSubmissionId`,但需确认 `HomeworkGradingView` 组件是否渲染了「下一位」按钮。即使有,批改完一个学生后需要:保存 → 点击「下一位」→ 等待加载。40 个学生要重复 40 次。
|
||||
|
||||
**对标分析**:Canvas SpeedGrader 批改时,右侧栏可快速切换学生,分数自动保存,支持键盘 `[` / `]` 切换。
|
||||
|
||||
**建议**:
|
||||
- 批改界面右侧增加学生列表抽屉,可快速跳转
|
||||
- 保存分数后自动跳到下一位未批改的学生
|
||||
- 支持键盘快捷键切换学生
|
||||
|
||||
---
|
||||
|
||||
## 四、数据呈现问题
|
||||
|
||||
### 4.1 【P1·重要】列表页普遍缺少分页,数据量大时性能与体验双降
|
||||
|
||||
**位置**:
|
||||
- [questions/page.tsx#L44](../src/app/(dashboard)/teacher/questions/page.tsx) `pageSize: 200` 硬编码 200 条
|
||||
- [homework/assignments/page.tsx](../src/app/(dashboard)/teacher/homework/assignments/page.tsx) 无分页
|
||||
- [homework/submissions/page.tsx](../src/app/(dashboard)/teacher/homework/submissions/page.tsx) 无分页
|
||||
- [attendance/page.tsx](../src/app/(dashboard)/teacher/attendance/page.tsx) 无分页
|
||||
- [grades/page.tsx](../src/app/(dashboard)/teacher/grades/page.tsx) 无分页
|
||||
|
||||
**问题**:题库硬编码 200 条,作业/提交/考勤/成绩列表均无分页。教师使用 1 年后,作业列表可能有几百条,成绩记录可能上千条,一次性渲染会导致:
|
||||
- 首屏加载慢(>2s)
|
||||
- DOM 节点过多导致滚动卡顿
|
||||
- 无法快速定位历史数据
|
||||
|
||||
**对标分析**:Canvas 所有列表均分页(10/20/50 条/页),支持排序与搜索。
|
||||
|
||||
**建议**:
|
||||
- 统一引入分页组件(10/20/50 条/页可选)
|
||||
- 题库改为无限滚动或分页
|
||||
- 列表默认按时间倒序,支持按状态/班级/日期范围筛选
|
||||
|
||||
### 4.2 【P1·重要】列表筛选条件不持久化,刷新即丢失
|
||||
|
||||
**位置**:所有使用 `searchParams` 的列表页
|
||||
|
||||
**问题**:筛选条件通过 URL searchParams 传递(这是正确做法),但:
|
||||
- 教师点击列表中的「查看详情」再返回,浏览器 back 能保留筛选(✅)
|
||||
- 但点击侧边栏导航再回来,筛选丢失(❌)
|
||||
- 教师切换标签页再回来,无法恢复上次筛选
|
||||
|
||||
**建议**:
|
||||
- 将筛选条件同步到 sessionStorage,2 小时内有效
|
||||
- 或在列表页顶部增加「最近筛选」快捷标签
|
||||
|
||||
### 4.3 【P1·重要】作业列表缺少关键列:提交率、平均分、是否逾期
|
||||
|
||||
**位置**:[homework/assignments/page.tsx#L85-L92](../src/app/(dashboard)/teacher/homework/assignments/page.tsx)
|
||||
|
||||
**问题**:当前列表只有 5 列:Title / Status / Due / Source Exam / Created。教师最关心的「提交率(已交/应交)」「平均分」「是否有学生逾期未交」都没有展示。
|
||||
|
||||
**对比**:`homework/submissions/page.tsx` 的列表反而有 Targets / Submitted / Graded 三列,两个列表信息维度不一致。
|
||||
|
||||
**建议**:作业列表增加列:
|
||||
- 提交率(Submitted/Targets,带进度条)
|
||||
- 平均分(已批改的均分)
|
||||
- 逾期人数(红色徽标)
|
||||
- 操作列(查看详情 / 提醒未交学生)
|
||||
|
||||
### 4.4 【P1·重要】成绩统计页默认无数据引导,教师不知如何开始
|
||||
|
||||
**位置**:[grades/stats/page.tsx](../src/app/(dashboard)/teacher/grades/stats/page.tsx)
|
||||
|
||||
**问题**:页面默认选择第一个班级,但如果该班级没有成绩记录,`ClassGradeReport` 组件显示什么?没有空状态引导。教师看到空白图表会困惑。
|
||||
|
||||
**建议**:无数据时显示「该班级暂无成绩记录,去录入成绩」的引导卡片。
|
||||
|
||||
### 4.5 【P2·次要】日期格式不统一,部分页面用英文全称
|
||||
|
||||
**位置**:
|
||||
- [teacher-dashboard-header.tsx#L8-L13](../src/modules/dashboard/components/teacher-dashboard/teacher-dashboard-header.tsx) `toLocaleDateString("en-US", { weekday: "long", ... })` 显示「Monday, June 20, 2026」
|
||||
- 其他页面用 `formatDate()` 工具函数
|
||||
|
||||
**问题**:Dashboard 顶部显示长英文日期,但项目面向中文用户(从 lesson-plans 页面用中文「我的备课」可见)。日期格式应本地化为「2026年6月20日 周一」。
|
||||
|
||||
**建议**:统一使用 `toLocaleDateString("zh-CN", ...)` 或自定义中文格式。
|
||||
|
||||
---
|
||||
|
||||
## 五、交互细节问题
|
||||
|
||||
### 5.1 【P1·重要】空状态 CTA 按钮全部是「主按钮」,视觉噪音过大
|
||||
|
||||
**位置**:[empty-state.tsx#L46-L54](../src/shared/components/ui/empty-state.tsx)
|
||||
|
||||
**问题**:所有空状态都渲染一个 `variant="default"` 的主按钮(实心蓝色)。当列表上方已有多个主按钮时,空状态再放一个主按钮,视觉焦点混乱。
|
||||
|
||||
**建议**:
|
||||
- 空状态 CTA 默认用 `variant="outline"`
|
||||
- 仅在「无任何数据」的首次引导场景用主按钮
|
||||
- 「筛选无结果」场景不显示 CTA,只显示「清除筛选」次级链接
|
||||
|
||||
### 5.2 【P1·重要】表单提交后无 loading 遮罩,可能重复提交
|
||||
|
||||
**位置**:[attendance-sheet.tsx](../src/modules/attendance/components/attendance-sheet.tsx)、[batch-grade-entry.tsx](../src/modules/grades/components/batch-grade-entry.tsx)、[homework-assignment-form.tsx](../src/modules/homework/components/homework-assignment-form.tsx)
|
||||
|
||||
**问题**:虽然 `SubmitButton` 有 `disabled={pending}`,但整个表单没有遮罩,教师仍可修改输入框内容。批量录入 40 人考勤时,提交过程中误触输入框可能导致数据不一致。
|
||||
|
||||
**建议**:提交期间在表单区域覆盖半透明 loading 遮罩。
|
||||
|
||||
### 5.3 【P1·重要】考勤/成绩录入切换班级后输入的数据丢失
|
||||
|
||||
**位置**:[attendance-sheet.tsx#L71](../src/modules/attendance/components/attendance-sheet.tsx) `const [classId, setClassId] = useState(...)`
|
||||
|
||||
**问题**:教师在 A 班录了一半考勤,切换到 B 班查看,`statuses` state 保留但学生列表变了,A 班的数据可能被 B 班学生覆盖。成绩录入同理。
|
||||
|
||||
**建议**:
|
||||
- 切换班级前弹确认框「当前班级有未保存的考勤记录,确认切换?」
|
||||
- 或为每个班级缓存独立的 statuses/scores
|
||||
|
||||
### 5.4 【P2·次要】详情页返回路径不一致
|
||||
|
||||
**位置**:
|
||||
- [textbooks/[id]/page.tsx](../src/app/(dashboard)/teacher/textbooks/[id]/page.tsx) 用 `ArrowLeft` 图标按钮
|
||||
- [grades/analytics/page.tsx](../src/app/(dashboard)/teacher/grades/analytics/page.tsx) 用「Back to Grades」文字按钮
|
||||
- [homework/assignments/[id]/page.tsx](../src/app/(dashboard)/teacher/homework/assignments/[id]/page.tsx) 用面包屑「< Assignments / Details」
|
||||
- [course-plans/[id]/page.tsx](../src/app/(dashboard)/teacher/course-plans/[id]/page.tsx) 无返回按钮(依赖浏览器 back)
|
||||
|
||||
**问题**:4 种不同的返回交互模式,教师无法形成肌肉记忆。
|
||||
|
||||
**建议**:统一为面包屑 + 浏览器 back 支持,或统一为左上角 ArrowLeft 按钮。
|
||||
|
||||
### 5.5 【P2·次要】Dashboard 问候语固定为「Good morning」
|
||||
|
||||
**位置**:[teacher-dashboard-header.tsx#L18](../src/modules/dashboard/components/teacher-dashboard/teacher-dashboard-header.tsx)
|
||||
|
||||
**问题**:`Good morning, {teacherName}` 硬编码 morning,不根据当前时间切换。下午访问显示「Good morning」很突兀。
|
||||
|
||||
**建议**:根据 `new Date().getHours()` 动态切换:上午 Good morning / 下午 Good afternoon / 晚上 Good evening。中文版可用「早上好/下午好/晚上好」。
|
||||
|
||||
---
|
||||
|
||||
## 六、移动端适配问题
|
||||
|
||||
### 6.1 【P1·重要】表格在移动端横向溢出,无优化方案
|
||||
|
||||
**位置**:所有使用 `<Table>` 组件的页面(作业列表、提交列表、学生列表、成绩列表、考勤记录列表、题库列表)
|
||||
|
||||
**问题**:Table 组件在窄屏下会出现横向滚动条,但:
|
||||
- 滚动条不明显,教师可能不知道可以横滑
|
||||
- 关键操作列(如「Grade」按钮)可能被滚出视口
|
||||
- 表头不固定,滚动后看不到列名
|
||||
|
||||
**对标分析**:Canvas 移动端将表格转为卡片列表,每条记录一张卡片。
|
||||
|
||||
**建议**:
|
||||
- 窄屏(<768px)将表格转为卡片布局
|
||||
- 或至少固定表头 + 首列
|
||||
- 操作列固定在右侧
|
||||
|
||||
### 6.2 【P1·重要】考勤/成绩批量录入在移动端几乎不可用
|
||||
|
||||
**位置**:[attendance-sheet.tsx](../src/modules/attendance/components/attendance-sheet.tsx)、[batch-grade-entry.tsx](../src/modules/grades/components/batch-grade-entry.tsx)
|
||||
|
||||
**问题**:40 行表格 + 每行一个 Select/Input,在手机上需要大量滚动和点击。教师移动端巡课时无法快速考勤。
|
||||
|
||||
**建议**:
|
||||
- 移动端考勤改为「学生头像网格」,点击头像切换状态
|
||||
- 移动端成绩录入改为「逐个学生卡片」模式,滑动切换下一位
|
||||
|
||||
### 6.3 【P2·次要】Dashboard 双栏布局在移动端堆叠顺序不合理
|
||||
|
||||
**位置**:[teacher-dashboard-view.tsx#L65-L81](../src/modules/dashboard/components/teacher-dashboard/teacher-dashboard-view.tsx)
|
||||
|
||||
**问题**:左栏(成绩趋势 + 待批改)在移动端会显示在右栏(今日课表 + 作业 + 班级)之前。但教师移动端最关心的是「下一节课是什么」和「待批改多少」,成绩趋势优先级应降低。
|
||||
|
||||
**建议**:移动端顺序调整为:今日课表 → 待批改 → 作业 → 班级 → 成绩趋势。
|
||||
|
||||
---
|
||||
|
||||
## 七、对标产品的功能缺失
|
||||
|
||||
### 7.1 【P0·严重】缺少「通知/提醒」机制
|
||||
|
||||
**缺失场景**:
|
||||
- 学生提交作业后,教师无实时通知(需主动刷新 Dashboard)
|
||||
- 作业即将到期,教师无法一键提醒未提交学生
|
||||
- 调课申请被批准/拒绝,教师无通知
|
||||
- 成绩录入后,无通知家长/学生的入口
|
||||
|
||||
**对标分析**:
|
||||
- Canvas:站内消息 + 邮件通知 + 移动端推送
|
||||
- 钉钉教育:Ding 一下强提醒学生
|
||||
- 晓黑板:自动通知家长
|
||||
|
||||
**建议**:
|
||||
- 站内消息中心已有 `/messages` 入口,但未与业务事件联动
|
||||
- 作业详情页增加「提醒未提交学生」按钮(发站内信)
|
||||
- 关键状态变更(调课审批、作业提交)触发站内通知
|
||||
|
||||
### 7.2 【P0·严重】缺少「作业模板/复用」功能
|
||||
|
||||
**缺失场景**:教师每周布置类似作业(如「背诵第 N 课课文」),每次都要重新创建。
|
||||
|
||||
**对标分析**:Canvas 支持作业模板 + 一键复制历史作业。
|
||||
|
||||
**建议**:
|
||||
- 作业列表增加「复制」操作
|
||||
- 支持保存为模板,下次创建时可选「从模板创建」
|
||||
|
||||
### 7.3 【P1·重要】缺少「学生画像」聚合页
|
||||
|
||||
**缺失场景**:教师想了解某个学生的整体情况(成绩趋势 + 考勤率 + 作业提交率 + 知识点掌握),需要分别去 Grades / Attendance / Homework / Diagnostic 四个模块查询。
|
||||
|
||||
**对标分析**:Canvas 的 Student Context Card 在一处展示学生的所有信息。
|
||||
|
||||
**建议**:在 `classes/students` 列表点击学生姓名,打开学生画像页,聚合:
|
||||
- 基本信息卡片
|
||||
- 成绩趋势图
|
||||
- 考勤统计
|
||||
- 作业提交率
|
||||
- 知识点掌握雷达图
|
||||
- 历史评语
|
||||
|
||||
### 7.4 【P1·重要】缺少「班级对比」功能
|
||||
|
||||
**缺失场景**:教师同时教 4 个班,想对比哪个班掌握得差,需要逐个切换班级查看统计。
|
||||
|
||||
**现状**:`grades/analytics` 有 `ClassComparisonChart`,但需要选择年级(gradeId),而非教师自己的班级对比。
|
||||
|
||||
**建议**:在 `grades/analytics` 增加「我的班级对比」模式,默认对比教师所教的所有班级。
|
||||
|
||||
### 7.5 【P1·重要】缺少「导出报告」的完整体系
|
||||
|
||||
**现状**:
|
||||
- `grades/page.tsx` 有 `ExportButton`(导出成绩)
|
||||
- `grades/stats/page.tsx` 有 `ExportButton`(导出统计)
|
||||
- 其他页面无导出功能
|
||||
|
||||
**缺失**:
|
||||
- 考勤统计无法导出
|
||||
- 作业提交情况无法导出
|
||||
- 学生诊断报告无法导出
|
||||
- 班级学情报告无法导出 PDF
|
||||
|
||||
**建议**:统一导出能力,支持 Excel + PDF 两种格式。
|
||||
|
||||
### 7.6 【P2·次要】缺少「评语库」功能
|
||||
|
||||
**缺失场景**:批改作业时写评语,教师常重复输入「做得好」「请认真订正」等。
|
||||
|
||||
**对标分析**:Canvas SpeedGrader 支持保存评语库,一键插入。
|
||||
|
||||
**建议**:批改界面的评语输入框增加「从评语库选择」按钮。
|
||||
|
||||
---
|
||||
|
||||
## 八、可访问性与国际化
|
||||
|
||||
### 8.1 【P1·重要】中英文混杂严重,违背用户预期
|
||||
|
||||
**位置**:全模块
|
||||
|
||||
**问题**:
|
||||
- 导航项全英文(Dashboard / Textbooks / Exams...)
|
||||
- `lesson-plans/page.tsx` 用中文(「我的备课」「新建课案」)
|
||||
- `proctoring/page.tsx` 权限提示用中文(「您没有监考权限」)
|
||||
- `grades/stats/page.tsx` 导出按钮用中文(「导出成绩」)
|
||||
- 空状态文案全英文(「No assignments」「You haven't created any assignments yet.」)
|
||||
|
||||
**影响**:中文教师用户看到混杂的中英文会感到不专业,且无法形成统一的语言心智。
|
||||
|
||||
**建议**:
|
||||
- 确定产品语言策略:全中文 or 全英文 or 双语切换
|
||||
- 若面向中国 K12 市场,建议全中文(含导航、按钮、空状态、日期格式)
|
||||
- 引入 i18n 框架(如 next-intl)支持未来多语言
|
||||
|
||||
### 8.2 【P2·次要】Dashboard 问候语未本地化
|
||||
|
||||
见 5.5 节,`Good morning` 应改为「早上好」。
|
||||
|
||||
---
|
||||
|
||||
## 九、问题汇总与优先级
|
||||
|
||||
### 9.1 按严重程度分布
|
||||
|
||||
| 级别 | 数量 | 说明 |
|
||||
|------|------|------|
|
||||
| P0(严重,阻断核心流程) | 6 | 导航混乱、作业创建强制依赖Exam、考勤录入低效、成绩录入无校验、缺通知机制、缺作业模板 |
|
||||
| P1(重要,影响体验与效率) | 14 | 模块割裂、Dashboard无待办、列表无分页、筛选不持久、移动端表格溢出、缺学生画像等 |
|
||||
| P2(次要,优化项) | 6 | 日期格式、返回路径、问候语、移动端堆叠顺序、评语库等 |
|
||||
| **合计** | **26** | |
|
||||
|
||||
### 9.2 按模块分布
|
||||
|
||||
| 模块 | 问题数 | 主要问题 |
|
||||
|------|--------|----------|
|
||||
| 全局导航 | 3 | 导航项过多、分组混乱、Exams/Homework割裂 |
|
||||
| Dashboard | 3 | 无待办聚合、问候语硬编码、移动端堆叠顺序 |
|
||||
| 作业/考试 | 5 | 强制依赖Exam、无模板复用、列表缺关键列、无分页、无通知 |
|
||||
| 成绩 | 4 | 录入无校验/草稿/粘贴、统计无空状态引导、导出不完整 |
|
||||
| 考勤 | 3 | 录入低效、切换班级丢数据、移动端不可用 |
|
||||
| 班级/学生 | 2 | 缺学生画像、缺班级对比 |
|
||||
| 列表通用 | 3 | 无分页、筛选不持久、空状态CTA过重 |
|
||||
| 移动端 | 3 | 表格溢出、批量录入不可用、堆叠顺序 |
|
||||
| 国际化 | 2 | 中英文混杂、问候语未本地化 |
|
||||
|
||||
---
|
||||
|
||||
## 十、改进路线建议
|
||||
|
||||
### 10.1 第一阶段(P0 修复,1-2 周)
|
||||
|
||||
1. **导航重构**:收敛到 8 个一级入口,合并备课相关功能
|
||||
2. **作业创建解耦**:支持「快速作业」模式,不强制依赖 Exam
|
||||
3. **考勤录入优化**:改为状态按钮组 + 默认全到 + 快捷键
|
||||
4. **成绩录入加固**:分数校验 + 草稿保存 + Tab 跳转
|
||||
5. **通知机制 MVP**:作业提交触发站内通知
|
||||
|
||||
### 10.2 第二阶段(P1 修复,2-4 周)
|
||||
|
||||
1. **Dashboard 待办聚合**:统一待办卡片
|
||||
2. **列表分页**:统一分页组件
|
||||
3. **学生画像页**:聚合成绩/考勤/作业/诊断
|
||||
4. **移动端表格优化**:卡片布局
|
||||
5. **作业列表补列**:提交率/平均分/逾期
|
||||
6. **语言统一**:全中文或引入 i18n
|
||||
|
||||
### 10.3 第三阶段(P2 优化,4-6 周)
|
||||
|
||||
1. **作业模板/复用**
|
||||
2. **评语库**
|
||||
3. **导出体系完善**
|
||||
4. **班级对比模式**
|
||||
5. **返回路径统一**
|
||||
6. **日期格式本地化**
|
||||
|
||||
---
|
||||
|
||||
## 十一、与 v1-v3 的关系
|
||||
|
||||
| 轮次 | 视角 | 问题数 | 修复率 |
|
||||
|------|------|--------|--------|
|
||||
| v1 | 代码规范 | 64 | 1.6% |
|
||||
| v2 | 代码规范(复审) | 74 | 1.6% |
|
||||
| v3 | 代码规范(终审) | 74 | 100% |
|
||||
| **v4** | **产品/UX** | **26** | **0%(待规划)** |
|
||||
|
||||
v1-v3 解决了「代码是否符合规范」的问题,v4 发现的是「产品是否符合用户习惯」的问题。两者互补:代码规范是底线,产品体验是上限。建议在 v3 代码规范已闭环的基础上,按 v4 路线图推进产品体验升级。
|
||||
|
||||
---
|
||||
|
||||
## 十二、核查结论
|
||||
|
||||
### 12.1 核心优势(保持)
|
||||
|
||||
1. ✅ **架构合规**:三层架构清晰,数据访问通过 data-access 层
|
||||
2. ✅ **权限完备**:每个页面有权限校验,DataScope 数据范围控制
|
||||
3. ✅ **性能基础**:Promise.all 并行查询,force-dynamic 声明
|
||||
4. ✅ **空状态覆盖**:所有列表页有 EmptyState 引导
|
||||
5. ✅ **Suspense 流式加载**:exams/questions/textbooks 等页面有骨架屏
|
||||
|
||||
### 12.2 核心缺陷(待改进)
|
||||
|
||||
1. ❌ **导航信息过载**:17 个一级入口远超同类产品(Canvas 6 个)
|
||||
2. ❌ **作业流程断裂**:强制依赖 Exam,5 步才能布置作业
|
||||
3. ❌ **批量录入低效**:考勤逐人下拉、成绩无校验无草稿
|
||||
4. ❌ **列表无分页**:数据量增长后性能与体验双降
|
||||
5. ❌ **缺通知机制**:教师需主动刷新发现待办
|
||||
6. ❌ **中英文混杂**:面向中文用户却用英文 UI
|
||||
|
||||
### 12.3 总体评价
|
||||
|
||||
当前 teacher 模块在**代码工程质量**上已达到企业级标准(v3 100% 通过),但在**产品体验**上与主流 LMS(Canvas/钉钉教育)仍有明显差距。核心差距不在技术实现,而在**对教师真实工作流的理解**:系统按「数据模型」组织功能(Exam/Homework/Grade 分表),而非按「教师任务」组织(布置作业/批改/反馈)。
|
||||
|
||||
建议产品团队优先解决 P0 的 6 个流程阻断问题,可显著提升教师日均使用效率。
|
||||
Reference in New Issue
Block a user