feat: 新增备课模块并修复全模块 P0/P1/P2 缺陷
Some checks failed
Security / deep-security-scan (push) Failing after 20m5s
DR Drill / dr-drill (push) Failing after 1m31s
CI / scheduled-backup (push) Failing after 1m31s
CI / backup-verify (push) Has been skipped
CI / weekly-dr-drill (push) Failing after 0s
CI / build-deploy (push) Has been cancelled
CI / security-scan (push) Has been cancelled

主要变更:

- 新增 lesson-preparation 模块: 备课编辑器、节点编辑、AI 建议、知识点选择、版本历史、作业发布

- 新增 shared 通用组件: charts/question-bank-filters/schedule-list/ui (chip-nav/filter-bar/page-header/stat-card/stat-item)

- 新增 student/admin 端 loading.tsx 与 error.tsx, 优化加载与错误态体验

- 新增 teacher/lesson-plans 页面 (列表/新建/编辑)

- 新增 drizzle 迁移 0002_tiny_lionheart 及 snapshot

- 新增 textbooks/schema.ts 与 exams/utils/normalize-structure.ts

- 修复 Tiptap v3 SSR hydration 崩溃 (rich-text-block immediatelyRender: false)

- 重构多模块 data-access/actions/组件, 修复权限校验与类型规范

- 同步架构文档 004/005 反映新增模块、导出、依赖关系

- 归档 bugs/* 测试报告与 e2e 测试脚本 (admin/parent/student/teacher web_test)
This commit is contained in:
SpecialX
2026-06-22 01:06:16 +08:00
parent d8962aba96
commit 978d9a8309
327 changed files with 34070 additions and 5642 deletions

160
bugs/student_web_test.md Normal file
View File

@@ -0,0 +1,160 @@
# 学生端 Web 功能测试报告
> 测试日期2026-06-20 13:07:52
> 测试范围:所有学生端页面功能
> 测试工具Playwright + Chromium (headless)
> 测试账号student_g1c1_1@xiaoxue.edu.cn
> Base URLhttp://localhost:3000
---
## 一、测试概览
| 指标 | 数值 |
|------|------|
| 总测试页面数 | 20 |
| 通过 | 20 |
| 失败 | 0 |
| 警告 | 0 |
| 通过率 | 100.0% |
---
## 二、页面测试详情
### Announcements
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/announcements` | 200 | passed | - |
### Assignment Detail
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/learning/assignments/hw_math_g1` | 200 | passed | - |
| ✅ | `/student/learning/assignments/ozfylp4e4so21dd3nu1pk774` | 200 | passed | - |
### Attendance
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/attendance` | 200 | passed | - |
### Common Dashboard
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/dashboard` | 200 | passed | 重定向到: `http://localhost:3000/student/dashboard`<br>警告: 页面错误提示: 1; 页面错误提示: 2026年6月18日 |
### Dashboard
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/dashboard` | 200 | passed | 警告: 页面错误提示: 1; 页面错误提示: 2026年6月18日 |
### Diagnostic
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/diagnostic` | 200 | passed | - |
### Electives
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/elective` | 200 | passed | - |
### Messages
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/messages` | 200 | passed | - |
| ✅ | `/messages/compose` | 200 | passed | - |
### My Grades
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/grades` | 200 | passed | - |
### My Learning - Assignments
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/learning/assignments` | 200 | passed | - |
### My Learning - Courses
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/learning/courses` | 200 | passed | - |
### My Learning - Textbooks
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/learning/textbooks` | 200 | passed | - |
### Profile
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/profile` | 200 | passed | 警告: 页面错误提示: 1; 页面错误提示: 2026年6月18日 |
### Schedule
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/schedule` | 200 | passed | - |
### Settings
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/settings` | 200 | passed | - |
| ✅ | `/settings/security` | 200 | passed | - |
### Textbook Detail
| 状态 | URL | HTTP状态 | 结果 | 备注 |
|------|-----|----------|------|------|
| ✅ | `/student/learning/textbooks/tb_MATH_g1` | 200 | passed | - |
| ✅ | `/student/learning/textbooks/tb_ENG_g1` | 200 | passed | - |
---
## 四、发现的问题分析
根据测试结果,发现以下问题:
---
## 五、测试覆盖范围
本次测试覆盖学生端以下功能模块:
| 模块 | 路由 | 说明 |
|------|------|------|
| Dashboard | `/student/dashboard` | 学生仪表盘 |
| My Learning - Courses | `/student/learning/courses` | 我的课程 |
| My Learning - Assignments | `/student/learning/assignments` | 作业列表 |
| My Learning - Assignment Detail | `/student/learning/assignments/[id]` | 作业详情/作答 |
| My Learning - Textbooks | `/student/learning/textbooks` | 教材列表 |
| My Learning - Textbook Detail | `/student/learning/textbooks/[id]` | 教材阅读 |
| Schedule | `/student/schedule` | 课表 |
| My Grades | `/student/grades` | 我的成绩 |
| Attendance | `/student/attendance` | 考勤 |
| Diagnostic | `/student/diagnostic` | 学情诊断 |
| Electives | `/student/elective` | 选课中心 |
| Announcements | `/announcements` | 公告 |
| Messages | `/messages` | 消息列表 |
| Messages - Compose | `/messages/compose` | 写消息 |
| Profile | `/profile` | 个人资料 |
| Settings | `/settings` | 设置 |
| Settings - Security | `/settings/security` | 安全设置 |
| Common Dashboard | `/dashboard` | 通用仪表盘(角色跳转) |
---
*报告自动生成于 2026-06-20 13:07:52*