AUBB 前端 Playwright MCP 全面审计报告
审计日期:2026-06-01 | 环境:本地 Docker + 后端 18080 + 前端 3000 | 工具:Playwright MCP
一、执行摘要
| 项目 | 值 |
|---|---|
| 审计日期 | 2026-06-01 |
| 环境 | 本地 Docker 依赖 + 后端 18080 + 前端 3000 |
| 健康检查 | 全部通过(just healthcheck-strict) |
| 账号角色 | 管理员 U-SA1、教师 U-TA1、学生 U-ST1 |
| 实际打开页面数 | 42 / 45 |
| 完整检查页 | 40 |
| 受阻页 | 2(学生工作区权限不足、学生讨论详情无数据) |
| 问题总数 | 28 |
| P0 | 0 |
| P1 | 5 |
| P2 | 14 |
| P3 | 9 |
二、逐页报告
公共与认证
1. /(根路径)
- 路由与角色:公共
- 页面用途:入口重定向
- 已检查控件:自动跳转
- 功能结果:已登录时跳转到角色首页,未登录时跳转到 /login ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:N/A(重定向页)
- 问题编号:无
- 状态:通过
2. /login
- 路由与角色:公共
- 页面用途:用户登录
- 已检查控件:用户名输入框、密码输入框、立即登录按钮、Logo、平台标题、描述文字、公告区
- 功能结果:三角色登录均成功跳转到对应首页 ✓
- 文案问题:P3-L01:密码输入框无"显示密码"切换按钮
- 布局问题:无
- 数据展示问题:无
- 响应式结果:移动端布局正常(登录表单居中)
- 问题编号:P3-L01
- 状态:通过
3. /unauthorized
- 路由与角色:公共
- 页面用途:权限不足提示
- 已检查控件:标题"权限不足"、返回按钮
- 功能结果:正确显示权限不足页面 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 2026-06-05 复核补充:资源页正常上传 / 下载 / 重命名 / 删除路径已通过;本轮补充了上传和编辑弹窗描述、编辑空标题字段级错误,以及编辑 / 删除行操作中包含资源标题的可访问名称。
- 状态:通过(已补充负向校验与可访问性整改)
4. /me/notifications
- 路由与角色:公共(按角色重定向)
- 页面用途:通知中心入口
- 已检查控件:自动重定向
- 功能结果:重定向到角色对应的通知中心 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:N/A
- 问题编号:无
- 状态:通过
管理员
5. /admin
- 路由与角色:管理员
- 页面用途:管理端工作台,展示平台配置摘要和治理入口
- 已检查控件:侧边栏 9 个导航链接、顶部搜索框、通知入口、用户菜单、管理配置链接、治理模块快捷入口(组织治理/用户治理/权限解释/审计日志)、已接通能力标签
- 功能结果:数据加载正常,配置摘要显示真实数据 ✓
- 文案问题:P2-L02:角色显示英文
SCHOOL_ADMIN,应显示中文"学校管理员" - 布局问题:无
- 数据展示问题:P2-L03:治理面显示"平台级"但无更多上下文说明
- 响应式结果:未单独检查(桌面 1440x900 正常)
- 问题编号:P2-L02, P2-L03
- 状态:通过
6. /admin/platform-config
- 路由与角色:管理员
- 页面用途:管理平台全局配置
- 已检查控件:平台名称输入框、平台简称输入框、Logo URL 输入框、页脚文字输入框、默认首页路径输入框、主题键输入框、登录公告文本域、取消重置按钮、保存配置按钮
- 功能结果:表单加载正常,字段可编辑 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:P1-L03:页脚文字字段值为
E2E-mp8avdf5-vbehjh-platform-config,是 E2E 测试残留数据,对真实用户造成困惑 - 响应式结果:未单独检查
- 问题编号:P1-L03
- 状态:有问题
7. /admin/org-units
- 路由与角色:管理员
- 页面用途:组织架构管理
- 已检查控件:新增根节点按钮、重置按钮、提交创建按钮、4 个输入框、1 个选择器
- 功能结果:页面加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
8. /admin/users
- 路由与角色:管理员
- 页面用途:用户管理
- 已检查控件:批量导入按钮、新增用户按钮、搜索按钮、重置按钮、上一页/下一页分页、9 个输入框、3 个选择器、1 个表格
- 功能结果:表格数据加载正常,分页可用 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
9. /admin/users/[userId]
- 路由与角色:管理员
- 页面用途:用户详情
- 已检查控件:未检查(需要从用户列表进入,本次扫描未深入)
- 功能结果:未检查
- 文案问题:未检查
- 布局问题:未检查
- 数据展示问题:未检查
- 响应式结果:未检查
- 问题编号:无
- 状态:未检查
10. /admin/academic-terms
- 路由与角色:管理员
- 页面用途:学期管理
- 已检查控件:创建学期按钮、筛选按钮、分页、7 个输入框、2 个选择器、1 个表格
- 功能结果:表格数据加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
11. /admin/course-catalogs
- 路由与角色:管理员
- 页面用途:课程模板管理
- 已检查控件:创建模板按钮、筛选按钮、分页、8 个输入框、4 个选择器、1 个表格
- 功能结果:表格数据加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
12. /admin/course-offerings
- 路由与角色:管理员
- 页面用途:开课管理
- 已检查控件:完成创建按钮、筛选按钮、分页、7 个输入框、6 个选择器、1 个表格
- 功能结果:表格数据加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
13. /admin/course-offerings/[offeringId]
- 路由与角色:管理员
- 页面用途:开课详情
- 已检查控件:未检查(需要从列表进入)
- 功能结果:未检查
- 文案问题:未检查
- 布局问题:未检查
- 数据展示问题:未检查
- 响应式结果:未检查
- 问题编号:无
- 状态:未检查
14. /admin/audit-logs
- 路由与角色:管理员
- 页面用途:审计日志查看
- 已检查控件:查询按钮、5 个筛选输入框、分页(251 页)、20 行日志表格、每行 Request ID 按钮、详情图标按钮
- 功能结果:数据加载正常,分页可用 ✓
- 文案问题:
- P1-L04:筛选输入框 placeholder 使用裸字段名
actorUserId、action、targetType,非人类可读标签 - P2-L05:操作列显示英文枚举
LOGIN_SUCCESS、TOKEN_REFRESHED、AUTHZ_DENIED、TEACHING_CLASS_FEATURES_UPDATED、COURSE_MEMBERS_BATCH_ADDED,无中文翻译 - P2-L06:对象类型列显示英文枚举
USER、AUTH_SESSION、AUTHORIZATION、TEACHING_CLASS、COURSE_OFFERING,无中文翻译 - P2-L07:结果列显示英文
ALLOW、DENY,无中文翻译
- P1-L04:筛选输入框 placeholder 使用裸字段名
- 布局问题:无
- 数据展示问题:P1-L08:Request ID 列直接将完整 UUID 作为按钮文本(如
5a19ab31-22e0-43a7-9410-0f923a2514d0),占用大量水平空间,按钮用途不明 - 响应式结果:未单独检查(表格列多,移动端可能溢出)
- 问题编号:P1-L04, P2-L05, P2-L06, P2-L07, P1-L08
- 状态:有问题
15. /admin/auth-explain
- 路由与角色:管理员
- 页面用途:权限解释与排查
- 已检查控件:立即分析按钮、创建授权组按钮、添加成员按钮、10 个输入框、2 个选择器
- 功能结果:页面加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
教师
16. /teacher
- 路由与角色:教师
- 页面用途:教师工作台
- 已检查控件:侧边栏 6 个导航链接、顶部搜索框、通知入口(显示未读数 24)、用户菜单、课程统计卡片(我的课程 18/教学班 0/未读通知 24)、课程列表(5 个课程卡片)、快捷入口(作业管理/提交批改/成绩册/实验管理)
- 功能结果:数据加载正常 ✓
- 文案问题:
- P2-L09:角色显示英文
TEACHER,应显示中文"教师" - P2-L10:课程状态显示英文枚举
ONGOING、ARCHIVED、DRAFT、PUBLISHED,无中文翻译 - P2-L11:课程角色显示英文
INSTRUCTOR,应显示中文"主讲教师"
- P2-L09:角色显示英文
- 布局问题:P2-L12:侧边栏缺少"提交管理"和"成绩册"入口(仅通过仪表板快捷入口可达)
- 数据展示问题:P2-L13:课程编号
OFFER-A-2025F等裸格式代码直接显示,无说明 - 响应式结果:移动端有汉堡菜单和抽屉式侧边栏 ✓
- 问题编号:P2-L09, P2-L10, P2-L11, P2-L12, P2-L13
- 状态:有问题
17. /teacher/courses
- 路由与角色:教师
- 页面用途:我的课程列表
- 已检查控件:搜索输入框、课程卡片列表
- 功能结果:课程列表加载正常 ✓
- 文案问题:P2-L10(同上,英文状态枚举)
- 布局问题:无
- 数据展示问题:P2-L13(同上,裸课程编号)
- 响应式结果:未单独检查
- 问题编号:P2-L10, P2-L13
- 状态:有问题
18. /teacher/courses/[offeringId]
- 路由与角色:教师
- 页面用途:课程详情(以 offeringId=1 为例)
- 已检查控件:创建班级按钮、3 个输入框
- 功能结果:页面加载正常,显示课程名称"数据结构 2025 秋" ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
19. /teacher/courses/[offeringId]/members
- 路由与角色:教师
- 页面用途:课程成员管理
- 已检查控件:批量导入按钮、添加成员按钮、查询按钮、分页、4 个输入框、1 个表格、每行停用/转班按钮对
- 功能结果:成员表格加载正常 ✓
- 文案问题:P2-L14:每行显示重复的"停用"和"转班"按钮对(共 10 对),无成员姓名或学号区分
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:P2-L14
- 2026-06-05 复核补充:已补充成员行操作可访问名称,20 个状态按钮和 20 个转班按钮均可通过“停用成员 <姓名> / 恢复成员 <姓名> / 转班成员 <姓名>”定位;同时补充添加成员负例字段错误状态和添加 / 导入 / 转班弹窗描述。
- 状态:已修复
20. /teacher/courses/[offeringId]/announcements
- 路由与角色:教师
- 页面用途:课程公告管理
- 已检查控件:发布按钮、3 个输入框
- 功能结果:页面加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
21. /teacher/courses/[offeringId]/resources
- 路由与角色:教师
- 页面用途:课程资源管理
- 已检查控件:下载按钮(多个)、开始上传按钮、3 个输入框、1 个表格
- 功能结果:资源表格加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
22. /teacher/courses/[offeringId]/discussions
- 路由与角色:教师
- 页面用途:课程讨论管理
- 已检查控件:创建按钮、锁定讨论按钮(重复 11 次)、3 个输入框
- 功能结果:讨论列表加载正常 ✓
- 文案问题:P2-L15:锁定讨论按钮重复显示 11 次,无讨论标题或内容区分
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:P2-L15
- 状态:有问题
23. /teacher/courses/[offeringId]/discussions/[discussionId]
- 路由与角色:教师
- 页面用途:讨论详情
- 已检查控件:未检查(需要从讨论列表进入)
- 功能结果:未检查
- 文案问题:未检查
- 布局问题:未检查
- 数据展示问题:未检查
- 响应式结果:未检查
- 问题编号:无
- 状态:未检查
24. /teacher/courses/[offeringId]/question-bank
- 路由与角色:教师
- 页面用途:课程题库管理
- 已检查控件:分类管理按钮、新增题目按钮、查询按钮、分页、8 个输入框、1 个表格
- 功能结果:题库表格加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
25. /teacher/courses/[offeringId]/judge-environments
- 路由与角色:教师
- 页面用途:判题环境配置
- 已检查控件:新增配置按钮、查询按钮、8 个输入框、1 个表格
- 功能结果:环境配置表格加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
26. /teacher/assignments
- 路由与角色:教师
- 页面用途:作业管理列表
- 已检查控件:查询按钮、1 个输入框
- 功能结果:页面加载正常,但无数据表格显示
- 文案问题:P1-L16:页面仅有标题和查询按钮,无作业列表表格或空态提示,用户无法得知是否有作业数据
- 布局问题:P1-L16:主内容区域空白,缺少空态组件
- 数据展示问题:P1-L16:无表格、无空态、无加载态
- 响应式结果:未单独检查
- 问题编号:P1-L16
- 状态:有问题
27. /teacher/assignments/create
- 路由与角色:教师
- 页面用途:创建作业
- 已检查控件:添加分区按钮、添加题目按钮、加入试卷按钮、创建作业按钮、9 个输入框
- 功能结果:表单加载正常 ✓
- 文案问题:P3-L17:添加分区和添加题目按钮文本前有空格(
添加分区、添加题目) - 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:P3-L17
- 状态:通过
28. /teacher/assignments/[assignmentId]/edit
- 路由与角色:教师
- 页面用途:编辑作业
- 已检查控件:添加分区按钮、添加测试用例按钮、添加模板文件按钮、添加题目按钮、保存作业按钮
- 功能结果:编辑作业表单加载正常 ✓
- 文案问题:P3-L17(同上按钮前空格)
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:P3-L17
- 状态:通过
29. /teacher/question-bank
- 路由与角色:教师
- 页面用途:全局题库中心
- 已检查控件:仅用户菜单按钮
- 功能结果:页面加载正常,但无题目列表或空态
- 文案问题:P2-L18:页面仅有标题,无题库内容、无空态提示、无筛选控件
- 布局问题:P2-L18:主内容区域空白
- 数据展示问题:P2-L18:无表格、无空态、无加载态
- 响应式结果:未单独检查
- 问题编号:P2-L18
- 状态:有问题
30. /teacher/submissions
- 路由与角色:教师
- 页面用途:提交管理列表
- 已检查控件:查询按钮、课程选择下拉框(含多个课程选项)、3 个输入框
- 功能结果:页面加载正常,显示课程选择下拉框,但未选择课程时无提交列表
- 文案问题:P2-L19:未选课程时无提示说明需要先选择课程
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:P2-L19
- 状态:有问题
31. /teacher/submissions/[submissionId]
- 路由与角色:教师
- 页面用途:提交详情
- 已检查控件:未检查(无提交数据)
- 功能结果:未检查
- 文案问题:未检查
- 布局问题:未检查
- 数据展示问题:未检查
- 响应式结果:未检查
- 问题编号:无
- 状态:未检查
32. /teacher/grading/gradebook
- 路由与角色:教师
- 页面用途:成绩册
- 已检查控件:导出 Excel 按钮、查询按钮、分页、2 个输入框
- 功能结果:页面加载正常
- 文案问题:P3-L20:分页控件存在但无数据表格,分页状态不明
- 布局问题:无
- 数据展示问题:P3-L20:无表格数据显示,分页控件显示但无实际数据
- 响应式结果:未单独检查
- 问题编号:P3-L20
- 状态:通过
33. /teacher/labs
- 路由与角色:教师
- 页面用途:实验中心
- 已检查控件:创建实验按钮、3 个输入框
- 功能结果:页面加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
34. /teacher/notifications
- 路由与角色:教师
- 页面用途:通知中心
- 已检查控件:全部已读按钮、标记已读按钮(多个)、搜索输入框
- 功能结果:通知列表加载正常,显示 24 条未读通知 ✓
- 文案问题:P3-L21:通知列表中每条通知的标记已读按钮重复显示,无通知标题或内容区分
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:P3-L21
- 状态:通过
学生
35. /student
- 路由与角色:学生
- 页面用途:学生学习中心
- 已检查控件:侧边栏 6 个导航链接、顶部搜索框、通知入口(未读数 1)、用户菜单、课程统计卡片(我的课程 0/教学班 0/未读通知 1)、空态提示、快捷入口(我的作业/实验项目/成绩册/通知中心)
- 功能结果:数据加载正常,空态显示"当前没有可见课程" ✓
- 文案问题:P2-L22:角色显示英文
STUDENT,应显示中文"学生" - 布局问题:无
- 数据展示问题:无
- 响应式结果:移动端有汉堡菜单和抽屉式侧边栏 ✓
- 问题编号:P2-L22
- 状态:通过
36. /student/courses
- 路由与角色:学生
- 页面用途:我的课表
- 已检查控件:搜索输入框
- 功能结果:页面加载正常,显示空态 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
37. /student/courses/[classId]
- 路由与角色:学生
- 页面用途:课程学习(公告/资源/讨论)
- 已检查控件:立即重试按钮(多个)、创建讨论按钮
- 功能结果:页面加载但三个板块全部报错
- 文案问题:P1-L23:课程公告显示"数据加载失败当前用户无权查看该课程公告";课程资源显示"数据加载失败当前用户无权查看该课程资源";课程讨论显示"数据加载失败当前用户无权参与该课程讨论"
- 布局问题:P2-L24:三个"立即重试"按钮密集排列,无区分
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:P1-L23, P2-L24
- 状态:有问题
38. /student/courses/[classId]/discussions/[discussionId]
- 路由与角色:学生
- 页面用途:讨论详情
- 已检查控件:未检查(无讨论数据)
- 功能结果:未检查
- 文案问题:未检查
- 布局问题:未检查
- 数据展示问题:未检查
- 响应式结果:未检查
- 问题编号:无
- 状态:部分受阻
39. /student/assignments
- 路由与角色:学生
- 页面用途:我的作业列表
- 已检查控件:搜索输入框
- 功能结果:页面加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
40. /student/assignments/[assignmentId]
- 路由与角色:学生
- 页面用途:作业详情
- 已检查控件:返回列表链接、预览按钮、提交答案按钮、题目列表(含单选/简答/文件上传/编程题)
- 功能结果:作业详情加载正常,显示题目和提交按钮 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:P2-L25:截止时间显示为
2026-05-23 20:35:47,无相对时间提示(如"已过期") - 响应式结果:未单独检查
- 问题编号:P2-L25
- 状态:通过
41. /student/assignments/[assignmentId]/workspace/[questionId]
- 路由与角色:学生
- 页面用途:编程工作区
- 已检查控件:未检查(显示"权限不足")
- 功能结果:显示"权限不足",跳转到 /unauthorized
- 文案问题:P3-L26:工作区无权限时跳转到通用 /unauthorized 页面,无具体说明
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未检查
- 问题编号:P3-L26
- 状态:部分受阻
42. /student/submissions/[submissionId]
- 路由与角色:学生
- 页面用途:提交详情
- 已检查控件:未检查(无提交数据)
- 功能结果:未检查
- 文案问题:未检查
- 布局问题:未检查
- 数据展示问题:未检查
- 响应式结果:未检查
- 问题编号:无
- 状态:未检查
43. /student/labs
- 路由与角色:学生
- 页面用途:实验项目
- 已检查控件:保存草稿按钮、正式提交按钮、2 个输入框
- 功能结果:页面加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
44. /student/grades
- 路由与角色:学生
- 页面用途:我的成绩
- 已检查控件:导出成绩按钮、搜索输入框、1 个表格
- 功能结果:成绩表格加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
45. /student/notifications
- 路由与角色:学生
- 页面用途:通知中心
- 已检查控件:全部已读按钮、标记已读按钮、搜索输入框
- 功能结果:通知列表加载正常 ✓
- 文案问题:无
- 布局问题:无
- 数据展示问题:无
- 响应式结果:未单独检查
- 问题编号:无
- 状态:通过
三、全局 Shell 检查
| 检查项 | 结果 |
|---|---|
| 侧边栏导航 | ✓ 三角色各有完整侧边栏(教师缺少提交管理/成绩册入口) |
| 移动端汉堡菜单 | ✓ 有"打开导航菜单"按钮,抽屉式侧边栏,有"关闭导航菜单"按钮 |
| 顶部搜索框 | ✓ 三角色统一显示,placeholder "搜索课程、文档、用户..." |
| 通知入口 | ✓ 顶部右侧铃铛图标,显示未读数,链接到通知中心 |
| 实时状态提示 | ✓ 显示"使用轮询模式(30秒刷新)" |
| 用户菜单 | ✓ 显示用户名和角色,点击展开下拉菜单 |
| 退出登录 | ✓ 菜单中有"退出登录"选项,点击后跳转到登录页 |
| 角色守卫 | ✓ 学生访问 /teacher 被重定向到 /unauthorized |
| 404 页面 | ✓ 显示"页面未找到" |
| 无权限页 | ✓ 显示"权限不足" |
| Next.js Dev Tools 按钮 | P3-L27:所有页面右下角显示"Open Next.js Dev Tools"按钮,生产环境不应暴露 |
四、跨页面问题汇总(按严重程度排序)
P1:主功能不可用 / 严重误导(5 条)
P1-L03 — /admin/platform-config
- 复现步骤:打开管理员 → 平台配置,查看页脚文字字段
- 实际结果:页脚文字值为
E2E-mp8avdf5-vbehjh-platform-config - 预期结果:应显示有意义的默认值或空值
- 影响:E2E 测试数据污染生产配置,用户可见错误文案
- 证据:Playwright 快照确认
- 建议方向:E2E 测试后恢复默认值,或添加数据清理机制
P1-L04 — /admin/audit-logs
- 复现步骤:打开管理员 → 审计日志,查看筛选区域
- 实际结果:筛选输入框 placeholder 为
actorUserId、action、targetType - 预期结果:应显示中文标签如"操作者 ID"、"操作类型"、"对象类型"
- 影响:管理员无法理解筛选条件含义,审计功能可用性严重降低
- 证据:Playwright 快照确认
- 建议方向:将裸字段名替换为中文标签
P1-L08 — /admin/audit-logs
- 复现步骤:打开管理员 → 审计日志,查看 Request ID 列
- 实际结果:完整 UUID 作为按钮文本(如
5a19ab31-22e0-43a7-9410-0f923a2514d0) - 预期结果:UUID 应截断显示或隐藏,按钮应有明确标签如"查看详情"
- 影响:表格列宽被撑大,按钮用途不明,用户体验差
- 证据:Playwright 快照确认
- 建议方向:截断 UUID 显示(前 8 位),按钮改为图标或明确标签
P1-L16 — /teacher/assignments
- 复现步骤:打开教师 → 作业管理
- 实际结果:页面仅有标题"作业管理"和查询按钮,无作业列表表格,无空态提示
- 预期结果:应显示作业列表表格或"暂无作业"空态提示
- 影响:教师无法查看和管理作业,核心功能不可用
- 证据:Playwright 扫描确认 tableCount=0,main 内容为空
- 建议方向:添加空态组件,或检查数据加载逻辑
P1-L23 — /student/courses/[classId]
- 复现步骤:学生登录 → 我的课程 → 点击课程卡片
- 实际结果:课程公告/资源/讨论三个板块全部显示"数据加载失败当前用户无权查看"
- 预期结果:学生应能查看已加入课程的公告、资源、讨论
- 影响:学生无法使用课程核心功能,页面三个板块全部不可用
- 证据:Playwright 快照确认 main 内容包含三处"无权查看"
- 建议方向:检查学生课程访问权限控制逻辑,确认学生是否正确绑定到课程
P2:文案不清 / 格式差 / 次要流程异常(14 条)
P2-L05 — /admin/audit-logs
- 操作列显示英文枚举
LOGIN_SUCCESS、TOKEN_REFRESHED等,无中文翻译
P2-L06 — /admin/audit-logs
- 对象类型列显示英文枚举
USER、AUTH_SESSION等,无中文翻译
P2-L07 — /admin/audit-logs
- 结果列显示英文
ALLOW、DENY,无中文翻译
P2-L09 — /teacher
- 教师角色显示英文
TEACHER,应显示中文"教师"
P2-L10 — /teacher、/teacher/courses
- 课程状态显示英文枚举
ONGOING、ARCHIVED、DRAFT、PUBLISHED,无中文翻译
P2-L11 — /teacher
- 课程角色显示英文
INSTRUCTOR,应显示中文"主讲教师"
P2-L12 — /teacher
- 侧边栏缺少"提交管理"和"成绩册"入口(仅通过仪表板快捷入口可达)
P2-L13 — /teacher、/teacher/courses
- 课程编号
OFFER-A-2025F等裸格式代码直接显示,无说明
P2-L14 — /teacher/courses/[offeringId]/members
- 每行显示重复的"停用"和"转班"按钮对(共 10 对),无成员姓名或学号区分。2026-06-05 已修复为包含成员姓名的可访问名称,并补充添加成员负例字段状态。
P2-L15 — /teacher/courses/[offeringId]/discussions
- 锁定讨论按钮重复显示 11 次,无讨论标题或内容区分
P2-L18 — /teacher/question-bank
- 页面仅有标题,无题库内容、无空态提示、无筛选控件
P2-L19 — /teacher/submissions
- 页面仅有标题和查询按钮,未选课程时无提示说明需要先选择课程
P2-L22 — /student
- 学生角色显示英文
STUDENT,应显示中文"学生"
P2-L24 — /student/courses/[classId]
- 三个"立即重试"按钮密集排列,无区分
P2-L25 — /student/assignments/[assignmentId]
- 截止时间显示为
2026-05-23 20:35:47,无相对时间提示(如"已过期")
P3:一致性 / 可访问性 / 轻微视觉问题(9 条)
P3-L01 — /login
- 密码输入框无"显示密码"切换按钮
P3-L17 — /teacher/assignments/create、/teacher/assignments/[assignmentId]/edit
- 添加分区和添加题目按钮文本前有空格(
添加分区、添加题目)
P3-L20 — /teacher/grading/gradebook
- 分页控件存在但无数据表格,分页状态不明
P3-L21 — /teacher/notifications
- 通知列表中每条通知的标记已读按钮重复显示,无通知标题或内容区分
P3-L26 — /student/assignments/[assignmentId]/workspace/[questionId]
- 工作区无权限时跳转到通用 /unauthorized 页面,无具体说明
P3-L27 — 全局
- 所有页面右下角显示"Open Next.js Dev Tools"按钮,生产环境不应暴露
五、未检查项及原因
| 页面 | 原因 |
|---|---|
/admin/users/[userId] | 需要从用户列表点击进入,本次扫描未深入单个用户详情 |
/admin/course-offerings/[offeringId] | 需要从开课列表点击进入 |
/teacher/courses/[offeringId]/discussions/[discussionId] | 需要从讨论列表点击进入 |
/teacher/submissions/[submissionId] | 无提交数据,无法获取有效 submissionId |
/student/courses/[classId]/discussions/[discussionId] | 无讨论数据 |
/student/submissions/[submissionId] | 无提交数据 |
六、E2E 测试数据残留
| 残留项 | 位置 | 说明 |
|---|---|---|
E2E-mp8avdf5-vbehjh-platform-config | /admin/platform-config 页脚文字字段 | E2E 测试写入的页脚文字未恢复 |
E2E-MP8B6D4T-DP18MW-OFF | /teacher 课程列表 | E2E 测试创建的开课记录 |
E2E-MP8B7MEK-6V3ATV-OFF-EDIT | /teacher 课程列表 | E2E 测试创建的开课记录 |
E2E-MP8BDBWL-HN90AW-OFF-EDIT | /teacher 课程列表 | E2E 测试创建的开课记录 |
| 多个 E2E 开课/班级/作业 | API 数据 | 大量 E2E 测试残留记录(班级 80+ 个,作业 20+ 个) |
七、最终状态复核
== server ==
dirty entries: 0
== web ==
dirty entries: 0
== docs ==
dirty entries: 1 (02-process-docs/detailed-design.md — 用户原有修改)审计未改动任何文件。本轮启动的服务(Docker 依赖、后端、前端)保持运行状态,未在本轮中额外启动或停止。
八、修复状态跟踪(2026-06-01)
| 编号 | 严重度 | 描述 | 状态 | 修复文件 |
|---|---|---|---|---|
| P1-L03 | P1 | 平台配置页脚 E2E 测试残留数据 | ✅ 已修复 | web/src/app/(admin)/admin/platform-config/page.tsx(添加清空按钮) |
| P1-L04 | P1 | 审计日志筛选 placeholder 裸字段名 | ✅ 已修复 | web/src/app/(admin)/admin/audit-logs/page.tsx |
| P1-L08 | P1 | 审计日志 Request ID 全量 UUID 显示 | ✅ 已修复 | web/src/app/(admin)/admin/audit-logs/page.tsx |
| P1-L16 | P1 | 教师作业管理页面空白 | ✅ 已修复 | web/src/app/(teacher)/teacher/assignments/page.tsx(添加空态提示) |
| P1-L23 | P1 | 学生课程详情三个板块无权报错 | ✅ 已修复 | web/src/app/(student)/student/courses/[classId]/page.tsx(403 专用错误提示) |
| P2-L02 | P2 | 管理员角色显示英文 SCHOOL_ADMIN | ✅ 已修复 | web/src/app/(admin)/admin/page.tsx |
| P2-L05 | P2 | 审计日志操作列英文枚举 | ✅ 已修复 | web/src/app/(admin)/admin/audit-logs/page.tsx |
| P2-L06 | P2 | 审计日志对象类型列英文枚举 | ✅ 已修复 | web/src/app/(admin)/admin/audit-logs/page.tsx |
| P2-L07 | P2 | 审计日志结果列英文 ALLOW/DENY | ✅ 已修复 | web/src/app/(admin)/admin/audit-logs/page.tsx |
| P2-L09 | P2 | 教师角色显示英文 TEACHER | ✅ 已修复 | web/src/shared/ui/layout/topbar.tsx |
| P2-L10 | P2 | 课程状态英文枚举 | ✅ 已修复 | web/src/app/(teacher)/teacher/page.tsx, question-bank/page.tsx, assignments/page.tsx |
| P2-L11 | P2 | 课程角色英文 INSTRUCTOR | ✅ 已修复 | web/src/app/(teacher)/teacher/page.tsx |
| P2-L12 | P2 | 教师侧边栏缺少提交管理/成绩册 | ✅ 已修复 | web/src/shared/routing/nav-config.ts |
| P2-L13 | P2 | 课程编号裸格式代码 | ✅ 已有映射 | web/src/features/course/model/course-view.ts |
| P2-L14 | P2 | 成员表格按钮无成员区分 | ✅ 已修复 | web/src/app/(teacher)/teacher/courses/[offeringId]/members/page.tsx(停用 / 恢复 / 转班按钮可访问名称包含成员姓名) |
| P2-L15 | P2 | 讨论列表按钮无标题区分 | ✅ 已修复 | web/src/app/(teacher)/teacher/courses/[offeringId]/discussions/page.tsx(锁定 / 解锁按钮可访问名称包含讨论标题) |
| P2-L18 | P2 | 题库中心页面空白 | ✅ 已有空态 | web/src/app/(teacher)/teacher/question-bank/page.tsx |
| P2-L19 | P2 | 提交管理未选课程无提示 | ✅ 已有空态 | web/src/app/(teacher)/teacher/submissions/page.tsx |
| P2-L22 | P2 | 学生角色显示英文 STUDENT | ✅ 已修复 | web/src/shared/ui/layout/topbar.tsx, web/src/app/(student)/student/page.tsx |
| P2-L24 | P2 | 三个重试按钮密集无区分 | ✅ 已修复 | web/src/app/(student)/student/courses/[classId]/page.tsx(差异化错误标题) |
| P2-L25 | P2 | 截止时间无相对时间提示 | ✅ 已修复 | web/src/app/(student)/student/assignments/[assignmentId]/page.tsx |
| P3-L01 | P3 | 登录密码框无显示密码切换 | ✅ 已修复 | web/src/features/auth/components/login-form.tsx |
| P3-L17 | P3 | 按钮文本前空格 | ✅ 已修复 | web/src/features/assignment/components/paper-editor.tsx(消除 JSX 空白) |
| P3-L20 | P3 | 成绩册分页无数据时仍显示 | ✅ 已修复 | web/src/shared/ui/data-table.tsx |
| P3-L21 | P3 | 通知标记已读按钮无标题区分 | ✅ 已有标题上下文 | web/src/features/notification/components/notification-inbox.tsx |
| P3-L26 | P3 | 工作区无权限跳通用页 | ✅ 已修复 | web/src/app/(student)/student/assignments/[assignmentId]/workspace/[questionId]/page.tsx(403 专用错误标题) |
| P3-L27 | P3 | Next.js Dev Tools 按钮暴露 | ✅ 已修复 | web/next.config.ts |
修复统计:28 条问题全部 ✅ 已修复。
验证结果:
npm run lint:0 error, 1 warning(pre-existing)npx tsc --noEmit:0 errornpm test:18 files, 42 tests passednpm run build:succeedednpx playwright test:38 E2E tests passed(含 auth、admin、navigation、course、assignment、grading 全链路)