feat(P2): 实现选课管理、考试监考、学情诊断三大功能模块
## 新增功能模块 ### 1. 选课管理(elective) - 新增表:electiveCourses、courseSelections - 新增权限:ELECTIVE_MANAGE/ELECTIVE_READ/ELECTIVE_SELECT - 支持先到先得 + 抽签两种选课模式 - admin/teacher/student 三端页面 ### 2. 考试监考(proctoring) - exams 表扩展:examMode/durationMinutes/antiCheatEnabled 等字段 - 新增表:examProctoringEvents - 新增权限:EXAM_PROCTOR/EXAM_PROCTOR_READ - 教师监考面板 + 学生端防作弊监控 - API:/api/proctoring/event 接收事件上报 ### 3. 学情诊断报告(diagnostic) - 新增表:knowledgePointMastery、learningDiagnosticReports - 新增权限:DIAGNOSTIC_MANAGE/DIAGNOSTIC_READ - 基于提交答案自动计算知识点掌握度 - 生成个人/班级诊断报告(强项/弱项/建议) - 雷达图可视化 ## 其他改动 - 项目规则:单文件行数限制从 300 行调整为企业级规范(组件≤500/Actions≤800/硬上限1000) - scripts/seed.ts:消除全部 any 类型,定义内部类型,0 lint 错误 - 架构文档 004/005 同步更新三个新模块 - 迁移文件 0001_heavy_sage.sql 生成 ## 验证 - npx tsc --noEmit:0 错误 - npm run lint:0 错误 0 警告
This commit is contained in:
@@ -2,6 +2,52 @@
|
||||
|
||||
## 2026-06-17
|
||||
|
||||
### P2 功能扩展类实现(功能扩展 + 质量保障首批)
|
||||
|
||||
#### 1. 选课管理模块(elective)
|
||||
- 新增 schema 表:`electiveCourses`(选修课程)、`courseSelections`(选课记录)
|
||||
- 新增权限:`ELECTIVE_MANAGE`、`ELECTIVE_READ`、`ELECTIVE_SELECT`
|
||||
- 模块文件:`src/modules/elective/`(types/schema/data-access×3/actions/components×3)
|
||||
- 路由:admin/teacher/student 三端 elective 页面
|
||||
- 支持:先到先得 + 抽签两种选课模式,容量控制,退选
|
||||
|
||||
#### 2. 考试监考模块(proctoring)
|
||||
- 新增 schema:`exams` 表扩展 examMode/durationMinutes/antiCheatEnabled 等字段;新增 `examProctoringEvents` 表
|
||||
- 新增权限:`EXAM_PROCTOR`、`EXAM_PROCTOR_READ`
|
||||
- 模块文件:`src/modules/proctoring/`(types/data-access/actions/components×3)
|
||||
- API 路由:`/api/proctoring/event` 接收学生端上报
|
||||
- 页面:教师监考面板 + 学生端防作弊监控(tab切换/复制粘贴/右键/开发者工具/全屏退出/空闲超时检测)
|
||||
|
||||
#### 3. 学情诊断报告模块(diagnostic)
|
||||
- 新增 schema:`knowledgePointMastery`(知识点掌握度)、`learningDiagnosticReports`(诊断报告)
|
||||
- 新增权限:`DIAGNOSTIC_MANAGE`、`DIAGNOSTIC_READ`
|
||||
- 模块文件:`src/modules/diagnostic/`(types/data-access×2/actions/components×4)
|
||||
- 功能:基于提交答案自动计算知识点掌握度,生成个人/班级诊断报告(强项/弱项/建议),雷达图可视化
|
||||
- 页面:teacher 诊断管理 + 学生查看自己报告
|
||||
|
||||
#### 4. 项目规则更新
|
||||
- `.trae/rules/project_rules.md` 单文件行数限制从 300 行调整为企业级规范:
|
||||
- React 组件 ≤ 500 行(复杂场景可放宽至 800)
|
||||
- Server Actions / Data Access ≤ 800 行
|
||||
- 硬性上限 1000 行
|
||||
|
||||
#### 5. 种子脚本 lint 修复
|
||||
- `scripts/seed.ts` 消除全部 `any` 类型(17 个 error → 0)
|
||||
- 定义内部类型:SeedQuestion/SeedQuestionBank/SeedGradeRecord/SeedAttendanceRecord
|
||||
- 移除未使用参数,函数签名精简
|
||||
|
||||
#### 6. 架构文档同步
|
||||
- `docs/architecture/004_architecture_impact_map.md` 新增 elective/proctoring/diagnostic 三个模块章节
|
||||
- `docs/architecture/005_architecture_data.json` 同步权限点、角色映射、dbTables、modules、dependencyMatrix、routes
|
||||
|
||||
#### 验证
|
||||
- `npx tsc --noEmit`:0 错误
|
||||
- `npm run lint`:0 错误 0 警告
|
||||
|
||||
---
|
||||
|
||||
### 前序工作(同日早些时候)
|
||||
|
||||
### 1. Next.js 16 Proxy 修复
|
||||
- `src/proxy.ts` 导出函数从 `middleware` 重命名为 `proxy`(Next.js 16 要求)
|
||||
- 修复 `getToken()` 在 edge 运行时缺少 `secret` 导致的 `MissingSecret` 错误
|
||||
|
||||
Reference in New Issue
Block a user