Files
NextEdu/.trae/rules/project_rules.md
SpecialX b86255f0ea 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 警告
2026-06-17 19:12:51 +08:00

2.3 KiB
Raw Blame History

项目规则

架构图优先规则

任何任务开始前,必须先查阅架构影响地图,通过图定位代码和模块。

  1. 先图后码:执行任何分析、修改、搜索任务时,首先阅读 docs/architecture/004_architecture_impact_map.mddocs/architecture/005_architecture_data.json,从图中定位目标模块、函数、依赖关系,再按图索骥读取源码
  2. 图未覆盖则先补图:如果发现项目中存在架构图未记录的模块、函数、表、路由等,必须优先完善架构图信息,然后再继续后续工作
  3. 改码必同步图:对源码的任何修改完成后,必须同步更新 004 和 005 两个架构文档

架构文档清单

文档 用途
docs/architecture/004_architecture_impact_map.md 人类可读的架构影响地图
docs/architecture/005_architecture_data.json AI 友好格式的结构化数据
docs/architecture/006_k12_feature_checklist.md 标准功能模块清单
docs/architecture/007_gap_audit_report.md 差距审计报告

需要同步图的场景

  • 新增/删除/重命名导出函数、组件、Hook、类型
  • 修改函数签名(参数、返回类型)
  • 修改权限点Permissions 常量)或角色-权限映射
  • 新增/删除数据库表
  • 新增/删除路由页面或 API 路由
  • 修改模块间依赖关系
  • 新增模块

同步方式

  • 修改 Markdown 文档中对应的模块章节
  • 修改 JSON 文档中对应的节点(modules.*.exportspermissionsdependencyMatrixroutesdbTables 等)
  • 确保两个文档内容一致

代码质量规则

  • 每次修改后运行 npm run lintnpx tsc --noEmit 确保零错误
  • Server Action 必须使用 requirePermission() 进行权限校验
  • 前端组件禁止使用 role === "xxx" 硬编码,统一使用 usePermission().hasPermission()
  • 单文件行数遵循企业级规范:
    • 配置文件、常量文件、类型定义文件:无限制
    • React 组件:建议 ≤ 500 行(复杂表单/大型表格可放宽至 800 行)
    • Server Actions / Data Access 模块:建议 ≤ 800 行
    • 超过建议行数时应考虑拆分(如 data-access 拆分为多个按职责划分的文件)
    • 硬性上限:任何文件不超过 1000 行,超过必须拆分