docs: 全项目架构审查与文档体系重写

- 全项目逐文件审查: 4 份审计报告(shared/core-business/management/new-modules)
- 重写 004 架构影响地图: 图优先 + 模块依赖图 + 数据流 + 调用链 + 问题分级
- 更新 005 结构化数据: 新增 architectureOverview/moduleDependencyGraph/knownIssues/dbTables 节点
- 更新 006 功能清单: 143 项功能标注实现状态, P0 覆盖率 80%->92%
- 更新 007 差距审计: v2->v3, P0 完成 69%->84%, 新增架构技术债章节
- 更新 001 项目概览: 6 角色/54 权限/26 模块/54 表
- 新增 docs/README.md 文档索引
- 归档 11 份过时文档(002x2/003/designx8) 标注
- 更新 work_log
This commit is contained in:
SpecialX
2026-06-17 21:51:32 +08:00
parent 6585e10c6f
commit f8dfd1dddd
23 changed files with 15183 additions and 4727 deletions

View File

@@ -1,8 +1,8 @@
# Next_Edu 差距审计报告v2 — 基于完整架构图)
# Next_Edu 差距审计报告v3 — 基于完整架构图 + 架构审查
> 对照《企业级 K12 教务管理系统标准功能模块清单》(006),基于完整架构影响地图(004/005)与源码全量扫描
> 审计日期2026-06-16v2 更新)
> v2 变更:架构图已全量补全12 模块 + 46 路由 + 32 表 + 200+ 导出),安全漏洞已修复
> 审计日期2026-06-17v3 更新)
> v3 变更:P0 缺口大幅补齐、8 项 P2 功能新实现、新增架构审查发现(基于 audit/00_summary.md
---
@@ -10,35 +10,65 @@
| 维度 | P0 子功能总数 | 已完成 | 部分完成 | 未实现 | 完成率 |
|------|-------------|--------|---------|--------|--------|
| 核心业务 | 31 | 23 | 5 | 3 | **74%** |
| 平台基础 | 8 | 3 | 2 | 3 | **38%** |
| 非功能性 | 8 | 5 | 2 | 1 | **63%** |
| 合规安全 | 8 | 7 | 1 | 0 | **88%** |
| **合计** | **55** | **38** | **10** | **7** | **69%** |
| 核心业务 | 31 | 28 | 3 | 0 | **90%** |
| 平台基础 | 8 | 6 | 2 | 0 | **75%** |
| 非功能性 | 8 | 6 | 1 | 1 | **75%** |
| 合规安全 | 8 | 6 | 1 | 1 | **75%** |
| **合计** | **55** | **46** | **7** | **2** | **84%** |
> P1 完成率约 **25%**P2 完成率约 **7%**
> P1 完成率约 **55%**P2 完成率约 **33%**(总体)/ **57%**Phase 3 路线图 8/14 项)
### v2 修复项
### v3 修复项(相对 v2
| 修复项 | v1 状态 | v2 状态 | 说明 |
| 修复项 | v2 状态 | v3 状态 | 说明 |
|--------|---------|---------|------|
| school/actions.ts 权限校验 | ❌ 12 个 Action 无权限 | ✅ 全部接入 requirePermission | SCHOOL_MANAGE / GRADE_MANAGE |
| settings/actions.ts 权限校验 | ❌ 使用 ensureUser() | ✅ 接入 requirePermission(AI_CONFIGURE) | 移除 auth() 直接调用 |
| users/actions.ts 权限校验 | ❌ 使用 auth() | ✅ 接入 requireAuth() | 自助操作用 requireAuth |
| 架构图完整性 | ⚠️ 大量缺失 | ✅ 全量补全 | 12 模块 + 46 路由 + 200+ 导出 |
| 通知公告系统 | ❌ 完全缺失 | ✅ 已实现 | announcements 模块 + 三级发布 |
| 操作/登录日志 | ❌ 完全缺失 | ✅ 已实现 | audit 模块 + auditLogs/loginLogs/dataChangeLogs 表 |
| 成绩录入/统计报表 | ❌ 缺失 | ✅ 已实现 | grades 模块 + data-access-analytics + export |
| 文件上传 | ❌ 无 | ✅ 已实现 | files 模块 + /api/upload 路由 |
| 课程计划管理 | ❌ 无 | ✅ 已实现 | course-plans 模块 |
| 排课规则 + 自动排课 | ❌ 无 | ✅ 已实现 | scheduling 模块 + auto-scheduler.ts |
| 站内消息 | ❌ 无 | ✅ 已实现 | messaging 模块 |
| 站内通知系统 | ❌ 无 | ✅ 已实现 | notifications 模块 + 多渠道分发 |
| 用户批量导入 | ❌ 无 | ✅ 已实现 | users/import-export.ts |
| 学生/教师考勤 | ❌ 无 | ✅ 已实现 | attendance 模块 + 统计 |
| 选课管理 | ❌ 无 | ✅ 已实现 | elective 模块P2 |
| 考试监考 | ❌ 无 | ✅ 已实现 | proctoring 模块P2 |
| 学情诊断报告 | ❌ 无 | ✅ 已实现 | diagnostic 模块P2 |
| 短信/微信推送 | ❌ 无 | ✅ 已实现 | notifications/channelsP2 |
| 屏幕阅读器兼容 | ❌ 未测试 | ✅ 已实现 | shared/lib/a11y.ts + components/a11yP2 |
| 视觉回归测试 | ❌ 无 | ✅ 已实现 | tests/visual/ + PlaywrightP2 |
| 漏洞扫描 | ❌ 无 | ✅ 已实现 | scripts/security-scan.sh/ps1 |
| 灾备方案 | ❌ 无 | ✅ 已实现 | scripts/backup-offsite-sync.sh 等 |
| 幽灵导航路由 | ⚠️ 13 个 | ✅ 已修复 | navigation.ts 已清理无效路由 |
### 关键风险项v2 更新后)
### 关键风险项v3 更新后)
1. **通知公告系统完全缺失** — P0 级功能,家校沟通核心载体,无任何代码实现
2. **操作/登录日志完全缺失** — P0 级功能,合规审计基础,无 DB 表、无代码
3. **成绩分析严重不足** — 仅有作业维度的分数趋势,缺少独立的成绩录入/统计报表/查询模块
4. **文件上传/权限控制缺失** — 当前无文件上传能力,题目/教材无法关联附件
5. **13 个幽灵导航路由** — navigation.ts 引用了 13 个不存在的页面(/admin/users/*, /courses/*, /reports, /finance, /parent/children, /parent/tuition, /messages用户点击会 404
> v2 的 5 个关键风险项中4 个已修复1 个仍存在。新增 5 个架构审查发现的风险。
**已修复的风险v2 → v3**
1. ~~通知公告系统完全缺失~~ → ✅ 已实现 announcements 模块
2. ~~操作/登录日志完全缺失~~ → ✅ 已实现 audit 模块
3. ~~成绩分析严重不足~~ → ✅ 已实现 grades 模块(录入/统计/导出)
4. ~~文件上传/权限控制缺失~~ → ✅ 已实现 files 模块 + /api/upload
5. ~~13 个幽灵导航路由~~ → ✅ 已修复
**当前关键风险项v3**
1. **`classes/data-access.ts` 严重超标** — 2104 行,超出 1000 行硬上限 2 倍,混入 homework/scheduling/grades 三个业务领域逻辑,维护风险极高
2. **`shared/lib``auth` 循环依赖** — audit-logger/change-logger/auth-guard → @/auth → shared/lib/* 形成循环,影响构建稳定性
3. **dashboard 跨模块直接查询 11 张表** — getAdminDashboardData 直查 sessions/users/classes/textbooks 等 11 张表,严重违反模块封装
4. **messaging 绕过 notifications 直接写通知** — messaging/actions.ts 直接调用 createNotification导致用户通知偏好失效
5. **classSchedule 表三处写入口** — classes/scheduling 模块各自直接写入,数据完整性高风险
6. **proctoring 死代码** — exam-mode-config.tsx 组件已创建但未集成到考试表单DB schema 有 examMode 字段但表单不收集
7. **隐私合规 P0 缺口** — 隐私政策与用户协议、未成年人信息保护仍未实现K12 强制要求
---
## 二、功能差距明细表
> 图例:✅ 已完成 / ⚠️ 部分完成 / ❌ 未实现 / 🆕 v3 新实现
### 核心业务模块
| 标准模块 | 标准子功能 | 状态 | 项目现状说明 | 补齐建议 |
@@ -48,62 +78,62 @@
| | RBAC 权限模型 | ✅ | 30 个权限点ROLE_PERMISSIONS 映射 | — |
| | 数据范围控制 | ✅ | DataScope 6 种类型 | — |
| | 角色切换 | ❌ | JWT 存 roles[],但无主动切换 UI | 新增角色切换下拉组件 |
| | 用户档案管理 | ✅ | users 模块 updateUserProfile + getUserProfileprofile 页可编辑 | — |
| | 用户档案管理 | ✅ | users 模块 updateUserProfile + getUserProfile | — |
| | 新手引导 | ✅ | OnboardingGate 组件 | — |
| | 组织架构管理 | ⚠️ | 部门/年级 CRUD 已有,但无教研组管理 | 新增 teachingGroups 表 |
| | 用户批量导入 | ❌ | 无导入功能 | Excel 解析 + 批量 insert |
| | 密码安全策略 | ⚠️ | NextAuth 默认 bcrypt但无强度校验、无锁定策略 | 前端强度校验 + 后端锁定 |
| **学校管理** | 学校信息配置 | ✅ | schools 表 + CRUDrequirePermission(SCHOOL_MANAGE) | — |
| | 用户批量导入 | 🆕 ✅ | users/import-export.ts 实现 Excel 导入 | — |
| | 密码安全策略 | ⚠️ | NextAuth 默认 bcrypt有锁定策略,但无强度校验 | 前端强度校验 |
| **学校管理** | 学校信息配置 | ✅ | schools 表 + CRUD | — |
| | 学年学期管理 | ✅ | academicYears 表 + CRUD | — |
| | 年级管理 | ✅ | grades 表 + CRUDrequirePermission(GRADE_MANAGE) | — |
| | 年级管理 | ✅ | grades 表 + CRUD | — |
| | 班级管理 | ✅ | classes 表 + 17 个 actions含邀请码 | — |
| | 学科管理 | ⚠️ | subjects 表存在,但仅有 name/order/code | 扩展学段归属字段 |
| | 部门管理 | ✅ | departments 表 + CRUD | — |
| | 校区管理 | ❌ | 无校区概念 | 新增 campuses 表 |
| | 学校参数配置 | ❌ | 无参数配置功能 | 新增 schoolSettings KV 表 |
| **教务排课** | 课程计划管理 | ❌ | classSchedule 表仅存单条课表项 | 新增 coursePlans |
| | 排课规则配置 | ❌ | 无规则引擎 | 新增 schedulingRules 表 |
| | 自动排课引擎 | ❌ | 无 | CSP 求解器 |
| | 课表查看 | ✅ | 教师课表 + 学生课表 + 班级课表,含 ScheduleView/ScheduleFilters 组件 | — |
| **教务排课** | 课程计划管理 | 🆕 ✅ | course-plans 模块已实现 | — |
| | 排课规则配置 | 🆕 ✅ | scheduling 模块 + SchedulingRule 类型 | — |
| | 自动排课引擎 | 🆕 ✅ | scheduling/auto-scheduler.ts 纯函数算法 | — |
| | 课表查看 | ✅ | 教师课表 + 学生课表 + 班级课表 | — |
| | 课表调整/代课 | ❌ | 仅 CRUD 课表项 | 新增 scheduleChanges 表 + 审批流 |
| | 教室资源管理 | ⚠️ | classrooms 表(name/building/floor/capacity),但无管理 UI | 增加 CRUD 页面 |
| | 选课管理 | ❌ | 无 | 新增 electiveCourses 表 |
| | 教室资源管理 | ⚠️ | classrooms 表存在,但无管理 UI | 增加 CRUD 页面 |
| | 选课管理 | 🆕 ✅ | elective 模块CRUD + 选课 + 抽签) | — |
| **教材资源** | 教材库管理 | ✅ | textbooks 表 + createTextbookAction | — |
| | 章节结构管理 | ✅ | chapters 树形结构 + reorderChaptersAction 拖拽排序 | — |
| | 章节结构管理 | ✅ | chapters 树形结构 + reorderChaptersAction | — |
| | 知识点图谱 | ⚠️ | knowledgePoints 有 CRUD + 章节关联,但无前置/后继关系 | 增加 prerequisiteEdges 表 |
| | 教材内容阅读 | ✅ | TextbookContentPanelMarkdown + rehype-sanitize | — |
| | 教材版本管理 | ❌ | 无版本概念 | 增加 version 字段 |
| | 资源附件管理 | ❌ | 无文件上传能力 | 新增 attachments 表 |
| | 资源附件管理 | 🆕 ✅ | files 模块 + fileAttachments 表 + /api/upload | — |
| | 教材审核流程 | ❌ | 无审核机制 | 新增 reviewWorkflow 表 |
| **题库与试卷** | 题目创建/编辑 | ✅ | 5 种题型支持子题目CreateQuestionDialog | — |
| | 题目分类标签 | ✅ | 知识点关联 + difficulty + type 多维标签 | — |
| | 题目批量导入 | ❌ | 无 | Excel 模板 + 批量解析 |
| | 题目版本管理 | ❌ | 无 | 增加 questionVersions 表 |
| | 试卷手动组卷 | ✅ | ExamAssembly 组件 + StructureEditor + QuestionBankList | — |
| | 试卷手动组卷 | ✅ | ExamAssembly 组件 + StructureEditor | — |
| | 试卷智能组卷 | ❌ | 无自动抽题 | 按知识点/难度分布随机抽题 |
| | AI 辅助出题 | ✅ | ai-pipeline.ts3 个 AI 生成函数 + generateAiExamDraft | — |
| | AI 辅助出题 | ✅ | ai-pipeline.ts3 个 AI 生成函数 | — |
| | 试卷模板管理 | ❌ | 无 | 新增 examTemplates 表 |
| | 试卷预览/打印 | ⚠️ | ExamPreviewDialog 可预览,但无打印适配 | 增加 @media print |
| **作业与考试** | 作业布置 | ✅ | createHomeworkAssignmentAction + HomeworkAssignmentForm | — |
| | 作业提交 | ✅ | startHomeworkSubmissionAction + saveHomeworkAnswerAction + submitHomeworkAction | — |
| **作业与考试** | 作业布置 | ✅ | createHomeworkAssignmentAction | — |
| | 作业提交 | ✅ | startHomeworkSubmissionAction + submitHomeworkAction | — |
| | 作业批改评分 | ✅ | gradeHomeworkSubmissionAction + HomeworkGradingView | — |
| | 迟交/补交策略 | ⚠️ | allowLate/lateDueAt 字段存在,前端未暴露配置 | 作业创建表单增加开关 |
| | 多次提交/重做 | ⚠️ | maxAttempts 字段存在,有次数检查 | 前端暴露配置 + 重做入口 |
| | 作业统计分析 | ✅ | getHomeworkAssignmentAnalytics + HomeworkAssignmentQuestionErrorOverviewCard | — |
| | 作业统计分析 | ✅ | getHomeworkAssignmentAnalytics | — |
| | 作业归档 | ❌ | 无归档机制 | 增加 archivedAt 字段 |
| | 在线考试模式 | | 无限时/防切屏/乱序/自动交卷 | 新增 examMode + 前端计时器 |
| | 考试监考 | ❌ | 无 | WebSocket 实时推送 |
| **成绩分析** | 成绩录入 | ❌ | 无独立成绩录入功能 | 新增 gradeRecords 表 + 录入 UI |
| | 成绩查询 | ⚠️ | 学生仪表盘有作业分数(getStudentDashboardGrades)无独立查询页 | 新增成绩查询页面 |
| | 成绩统计报表 | ❌ | 无班级/年级均分、中位数、标准差统计 | 新增聚合查询 + 图表 |
| | 在线考试模式 | ⚠️ | examMode 字段存在,但 exam-mode-config.tsx 未集成 | 集成组件到考试表单 |
| | 考试监考 | 🆕 ✅ | proctoring 模块(事件上报 + 监考面板 + 防作弊) | — |
| **成绩分析** | 成绩录入 | 🆕 ✅ | grades 模块 + gradeRecords 表 + 批量录入 | — |
| | 成绩查询 | ⚠️ | grades/data-access 有查询,但无独立查询页 | 新增成绩查询页面 |
| | 成绩统计报表 | 🆕 ✅ | grades/data-access-analytics.ts 班级统计 + 排名 | — |
| | 成绩趋势分析 | ⚠️ | getTeacherGradeTrends 提供教师维度趋势 | 扩展为多维度 |
| | 成绩对比分析 | ❌ | 无班级间/学科间对比 | 新增对比查询 + 雷达图 |
| | 学情诊断报告 | ❌ | 无 | 基于知识点掌握度生成诊断 |
| | 成绩导出 | ❌ | 无导出功能 | ExcelJS/PDFKit 导出 |
| | 学情诊断报告 | 🆕 ✅ | diagnostic 模块(个人/班级诊断报告) | — |
| | 成绩导出 | 🆕 ✅ | grades/export.ts Excel 导出 | — |
| | 等第转换 | ❌ | 无 | 新增 gradeScale 配置 |
| **家校沟通** | 通知公告 | ❌ | 完全缺失 | 新增 announcements + 三级发布 |
| | 站内消息 | ❌ | 无 | 新增 messages 表 |
| | 家长端仪表盘 | ⚠️ | /parent/dashboard 路由存在但组件为空壳 | 接入子女数据查询 |
| **家校沟通** | 通知公告 | 🆕 ✅ | announcements 模块 + 三级发布 | — |
| | 站内消息 | 🆕 ✅ | messaging 模块 + 通知偏好 | — |
| | 家长端仪表盘 | ⚠️ | parent 模块有 data-access但组件不完整 | 接入子女数据查询 |
| | 家长会/约谈预约 | ❌ | 无 | 新增 appointments 表 |
| | 请假审批 | ❌ | 无 | 新增 leaveRequests 表 |
| | 校园动态/班级圈 | ❌ | 无 | 新增 posts 表 |
@@ -112,40 +142,40 @@
| | AI 批改辅助 | ❌ | 无 | 接入 AI 评分 prompt + 教师终审 |
| | AI 学情分析 | ❌ | 无 | 基于作业数据生成学习路径 |
| | AI 备课助手 | ❌ | 无 | 根据教材章节生成教案 |
| | AI 多模型配置 | ✅ | aiProviders 表 + upsertAiProviderActionrequirePermission(AI_CONFIGURE) | — |
| | AI 多模型配置 | ✅ | aiProviders 表 + upsertAiProviderAction | — |
| | AI API Key 加密 | ✅ | AES 加密 | — |
| **考勤管理** | 学生考勤 | ❌ | 无 | 新增 attendanceRecords 表 |
| | 教师考勤 | ❌ | 无 | 同上 |
| | 考勤统计 | ❌ | 无 | 聚合查询 + 报表 |
| | 考勤规则配置 | | 无 | 新增 attendanceRules 配置 |
| **考勤管理** | 学生考勤 | 🆕 ✅ | attendance 模块 + 考勤登记 | — |
| | 教师考勤 | 🆕 ✅ | attendance 模块 | |
| | 考勤统计 | 🆕 ✅ | attendance/data-access-stats.ts 月度汇总 | — |
| | 考勤规则配置 | ⚠️ | 有基础规则,但无完整配置 UI | 增加规则配置页面 |
### 平台基础能力
| 标准模块 | 标准子功能 | 状态 | 项目现状说明 | 补齐建议 |
|----------|------------|------|-------------|----------|
| **消息通知** | 站内通知 | ❌ | 无通知系统 | 新增 notifications + 推送 |
| | 邮件通知 | ❌ | 无 | 集成 nodemailer/Resend |
| | 短信通知 | ❌ | 无 | 集成短信网关 |
| | 微信/钉钉推送 | ❌ | 无 | 集成 webhook |
| | 通知偏好管理 | ❌ | 无 | 新增 notificationPreferences |
| **日志审计** | 操作日志 | ❌ | 完全缺失 | 新增 auditLogs 表 + action 拦截器 |
| | 登录日志 | ❌ | 无 | 新增 loginLogs 表 + NextAuth event |
| | 数据变更日志 | ❌ | 无 | Drizzle middleware 或 trigger |
| | 日志查询/导出 | | 无 | 管理员日志查询页面 |
| **文件管理** | 文件上传 | ❌ | 无文件上传能力 | 新增 upload API + 存储 |
| **消息通知** | 站内通知 | 🆕 ✅ | notifications 模块 + dispatcher 多渠道分发 | — |
| | 邮件通知 | 🆕 ✅ | notifications/channels/email-channel.ts | — |
| | 短信通知 | 🆕 ✅ | notifications/channels/sms-channel.ts | — |
| | 微信/钉钉推送 | 🆕 ✅ | notifications/channels/wechat-channel.ts | — |
| | 通知偏好管理 | 🆕 ✅ | messaging/notification-preferences.ts | — |
| **日志审计** | 操作日志 | 🆕 ✅ | audit 模块 + auditLogs 表 + logAudit | — |
| | 登录日志 | 🆕 ✅ | audit 模块 + loginLogs 表 + NextAuth event | — |
| | 数据变更日志 | 🆕 ✅ | audit 模块 + dataChangeLogs 表 + change-logger | — |
| | 日志查询/导出 | ⚠️ | audit/data-access 有分页查询,但无导出 | 增加导出功能 |
| **文件管理** | 文件上传 | 🆕 ✅ | files 模块 + /api/upload + fileAttachments 表 | — |
| | 文件预览 | ❌ | 无 | 集成文件预览服务 |
| | 文件存储策略 | | | 抽象 StorageProvider 接口 |
| | 文件权限控制 | | | 文件访问鉴权中间件 |
| **全局搜索** | 全文检索 | | | 集成 Meilisearch/Typesense |
| | 搜索建议 | | | 搜索 API + 前端联想 |
| | 文件存储策略 | ⚠️ | 有本地存储,无 OSS/S3 抽象 | 抽象 StorageProvider 接口 |
| | 文件权限控制 | ⚠️ | 有基础鉴权,但不完整 | 完善文件访问鉴权 |
| **全局搜索** | 全文检索 | ⚠️ | global-search.tsx 组件 + /api/search 路由 | 集成 Meilisearch/Typesense |
| | 搜索建议 | ⚠️ | 有基础联想 | 搜索 API + 前端联想 |
| | 搜索过滤 | ❌ | 无 | 搜索结果筛选器 |
| **导入导出** | Excel 导入 | ❌ | 无 | ExcelJS 解析 + 校验 |
| | Excel/PDF 导出 | ❌ | 无 | ExcelJS/PDFKit 生成 |
| | 导入校验与错误报告 | | | 行级校验 + 错误报告 |
| **导入导出** | Excel 导入 | 🆕 ✅ | users/import-export.ts 实现 | — |
| | Excel/PDF 导出 | 🆕 ✅ | grades/export.ts + users/import-export.ts | — |
| | 导入校验与错误报告 | ⚠️ | 有基础校验,无错误报告下载 | 行级校验 + 错误报告 |
| **数据看板** | 管理员仪表盘 | ✅ | getAdminDashboardData + AdminDashboardView | — |
| | 教师仪表盘 | ✅ | TeacherDashboardView + 9 个子组件 | — |
| | 学生仪表盘 | ✅ | StudentDashboard + 5 个子组件 | — |
| | 家长仪表盘 | ⚠️ | 路由存在但组件为空壳 | 接入子女数据 |
| | 家长仪表盘 | ⚠️ | parent 模块有 data-access组件不完整 | 接入子女数据 |
| | 自定义看板 | ❌ | 无 | 拖拽布局 + localStorage |
### 非功能性模块
@@ -162,7 +192,7 @@
| | 主题色定制 | ❌ | 无 | CSS 变量动态注入 |
| **无障碍访问** | 键盘导航 | ⚠️ | 部分组件支持,但非系统性 | 全面键盘测试 |
| | ARIA 标注 | ⚠️ | icon 按钮 aria-label 已加,非全覆盖 | 系统性 ARIA 审计 |
| | 屏幕阅读器兼容 | ❌ | 未测试 | NVDA/VoiceOver 测试 |
| | 屏幕阅读器兼容 | 🆕 ✅ | shared/lib/a11y.ts + components/a11y/ 4 组件 | — |
| | 跳转链接 | ✅ | layout.tsx 有 skip-link | — |
| **性能优化** | 页面懒加载 | ✅ | Next.js App Router 自动代码分割 | — |
| | 图片优化 | ✅ | next/image 使用 | — |
@@ -171,13 +201,13 @@
| **自动化测试** | 单元测试 | ✅ | Vitest 5 文件 19 用例 | 扩展覆盖率 |
| | 集成测试 | ✅ | Vitest 7 文件 38 用例 | 扩展覆盖率 |
| | E2E 测试 | ⚠️ | Playwright 3 个 spec需数据库环境 | 完善 CI 环境配置 |
| | 视觉回归测试 | ❌ | 无 | 集成 Chromatic |
| | 视觉回归测试 | 🆕 ✅ | tests/visual/ 4 个 spec + 多视口/主题 | — |
| **CI/CD** | 持续集成 | ✅ | .gitea/workflows/ci.yml | — |
| | 持续部署 | ✅ | Dockerfile + CI 自动构建部署 | — |
| | 预览环境 | ❌ | 无 | PR 预览部署 |
| **数据备份** | 数据库定时备份 | ❌ | 无 | cron + mysqldump |
| | 备份恢复演练 | ❌ | 无 | 定期恢复测试 |
| | 灾备方案 | ❌ | 无 | 异地容灾规划 |
| **数据备份** | 数据库定时备份 | 🆕 ✅ | scripts/backup-db.sh | — |
| | 备份恢复演练 | 🆕 ✅ | scripts/backup-verify.sh + test-backup.sh | — |
| | 灾备方案 | 🆕 ✅ | scripts/backup-offsite-sync.sh 异地同步 | — |
### 合规与安全
@@ -196,100 +226,195 @@
| | 速率限制 | ❌ | 无 | 集成 upstash/ratelimit |
| | 会话管理 | ✅ | JWT 过期策略 + NextAuth | — |
| | **Server Action 权限校验** | ✅ | **v2 修复:全部 57+ Server Action 均使用 requirePermission/requireAuth** | — |
| **敏感信息脱敏** | 日志脱敏 | ❌ | 无日志系统 | 日志框架内置脱敏 |
| **敏感信息脱敏** | 日志脱敏 | ❌ | 无日志框架内置脱敏 | 日志框架内置脱敏 |
| | 前端脱敏 | ❌ | 无 | 手机号/邮箱掩码组件 |
| | 导出脱敏 | ❌ | 无导出功能 | 导出时可选脱敏 |
| **安全审计** | 漏洞扫描 | ❌ | 无 | 集成 OWASP ZAP/Snyk |
| | 导出脱敏 | ❌ | 无导出脱敏 | 导出时可选脱敏 |
| **安全审计** | 漏洞扫描 | 🆕 ✅ | scripts/security-scan.sh + security-scan.ps1 | — |
| | 依赖审计 | ⚠️ | npm audit 可用但未集成 CI | CI 增加 npm audit |
| | 渗透测试 | ❌ | 无 | 上线前第三方测试 |
---
## 三、优先补齐路线图
## 三、P2 实现进度表Phase 3 路线图
### Phase 1: P0 缺口补齐MVP 必须项)
> v3 新增章节:追踪 Phase 3 P2 迭代优化功能的实现进度
> 目标:将 P0 完成率从 69% 提升到 100%
| P2 功能 | 状态 | 实现日期 | 实现模块/文件 |
|---------|------|---------|-------------|
| 选课管理 | ✅ | 2026-06-17 | src/modules/elective/ |
| 考试监考 | ✅ | 2026-06-17 | src/modules/proctoring/ |
| 学情诊断 | ✅ | 2026-06-17 | src/modules/diagnostic/ |
| 屏幕阅读器 | ✅ | 2026-06-17 | src/shared/lib/a11y.ts + components/a11y/ |
| 视觉回归 | ✅ | 2026-06-17 | tests/visual/ + visual.config.ts |
| 通知渠道 | ✅ | 2026-06-17 | src/modules/notifications/channels/ |
| 漏洞扫描 | ✅ | 2026-06-17 | scripts/security-scan.sh/ps1 |
| 灾备方案 | ✅ | 2026-06-17 | scripts/backup-offsite-sync.sh 等 |
| AI 批改辅助 | ❌ | - | — |
| AI 学情分析 | ❌ | - | — |
| AI 备课助手 | ❌ | - | — |
| 国际化 | ❌ | - | — |
| 多租户 | ❌ | - | — |
| 主题色定制 | ❌ | - | — |
| 序号 | 功能 | 所属模块 | 工作量 | 理由 |
|------|------|---------|--------|------|
| 1 | **通知公告系统** | 家校沟通 | 大 | P0 缺失最严重项,学校运营核心需求 |
| 2 | **操作日志 + 登录日志** | 日志审计 | 大 | P0 合规底线,无日志则无法追溯 |
| 3 | **成绩录入 + 查询 + 统计报表** | 成绩分析 | 大 | P0 教务核心闭环缺失 |
| 4 | **文件上传 + 权限控制** | 文件管理 | 中 | P0 基础能力,题目/教材/通知需附件 |
| 5 | **课程计划管理** | 教务排课 | 中 | P0 排课前置条件 |
| 6 | **隐私政策 + 用户同意** | 隐私合规 | 小 | P0 合规底线 |
| 7 | **未成年人信息保护** | 隐私合规 | 小 | P0 K12 强制要求 |
| 8 | **修复 13 个幽灵导航路由** | 布局 | 小 | 用户点击 404影响体验 |
### Phase 2: P1 关键增强(上线前推荐)
| 序号 | 功能 | 所属模块 | 理由 |
|------|------|---------|------|
| 1 | 站内消息系统 | 家校沟通 | 教师与家长沟通核心渠道 |
| 2 | 家长端仪表盘 | 家校沟通 | 家长核心入口,当前为空壳 |
| 3 | Excel 批量导入 | 导入导出 | 开学季批量导入学生/教师 |
| 4 | Excel/PDF 导出 | 导入导出 | 成绩单/名单导出 |
| 5 | 排课规则 + 自动排课 | 教务排课 | 手动排课效率极低 |
| 6 | 课表调整/代课 | 教务排课 | 日常调课高频操作 |
| 7 | 速率限制 | 操作安全 | 防暴力破解 |
| 8 | 成绩趋势 + 对比分析 | 成绩分析 | 教学质量分析核心 |
| 9 | 成绩导出 | 成绩分析 | 家长会/教研会必备 |
| 10 | 学生考勤 | 考勤管理 | 日常管理刚需 |
| 11 | 用户批量导入 | 用户与权限 | 开学季批量注册 |
| 12 | 密码安全策略 | 用户与权限 | 安全基线 |
| 13 | 数据变更日志 | 日志审计 | 争议追溯 |
| 14 | 日志查询/导出 | 日志审计 | 管理员日常使用 |
| 15 | 文件预览 + 存储策略 | 文件管理 | 用户体验提升 |
| 16 | 全文检索 | 全局搜索 | 题库/教材量大后必须 |
| 17 | 依赖审计集成 CI | 安全审计 | 安全基线 |
| 18 | 数据库定时备份 | 数据备份 | 数据安全底线 |
| 19 | E2E 测试完善 | 自动化测试 | 上线前回归保障 |
| 20 | 通知偏好管理 | 消息通知 | 用户体验 |
### Phase 3: P2 迭代优化(竞争力提升)
| 序号 | 功能 | 所属模块 | 理由 |
|------|------|---------|------|
| 1 | 国际化(i18n) | 非功能性 | 海外学校/国际学校市场 |
| 2 | 多租户/多校区 | 非功能性 | 集团化办学市场 |
| 3 | 主题色定制 | 深色主题 | 学校品牌化 |
| 4 | 屏幕阅读器兼容 | 无障碍 | 合规 + 社会责任 |
| 5 | 视觉回归测试 | 自动化测试 | UI 变更质量保障 |
| 6 | AI 批改辅助 | AI 赋能 | 教师效率提升 |
| 7 | AI 学情分析 | AI 赋能 | 个性化学习差异化 |
| 8 | AI 备课助手 | AI 赋能 | 教师备课效率 |
| 9 | 选课管理 | 教务排课 | 高中选修课场景 |
| 10 | 考试监考 | 作业与考试 | 在线考试完整性 |
| 11 | 学情诊断报告 | 成绩分析 | 精准教学 |
| 12 | 短信/微信推送 | 消息通知 | 紧急事件触达 |
| 13 | 漏洞扫描 + 渗透测试 | 安全审计 | 上线后安全验证 |
| 14 | 灾备方案 | 数据备份 | 业务连续性 |
**P2 路线图完成率8/14 = 57%**
---
## 四、差距统计摘要
## 四、架构技术债(基于架构审查 audit/00_summary.md
> v3 新增章节:基于 2026-06-17 架构审查发现的 P0/P1 问题
### 4.1 P0 严重问题(必须修复)
| 序号 | 问题 | 文件/位置 | 严重程度 | 说明 |
|------|------|----------|---------|------|
| 1 | 文件超 1000 行硬上限 | `classes/data-access.ts` (2104 行) | 🔴 严重 | 混入 homework/scheduling/grades 三个业务领域逻辑,超出硬上限 2 倍 |
| 2 | 文件超 1000 行硬上限 | `homework/data-access.ts` (1038 行) | 🔴 严重 | 混入排名计算业务逻辑,超出硬上限 |
| 3 | 文件超 1000 行硬上限 | `shared/db/schema.ts` (1111 行) | 🟡 需改进 | 54 张表混合,可接受但需按业务域分节 |
| 4 | 循环依赖 | `shared/lib``@/auth` | 🔴 严重 | audit-logger/change-logger/auth-guard → @/auth → shared/lib/* 形成循环 |
| 5 | dashboard 跨模块直查 11 张表 | `dashboard/data-access.ts` | 🔴 严重 | getAdminDashboardData 直查 sessions/users/classes 等 11 张表,违反模块封装 |
| 6 | messaging 绕过 notifications | `messaging/actions.ts` 第 66-72 行 | 🔴 严重 | 直接调用 createNotification导致通知偏好失效 |
| 7 | classSchedule 三处写入口 | classes/scheduling 模块 | 🔴 严重 | 数据完整性高风险,无统一入口 |
### 4.2 P1 较严重问题
| 序号 | 问题 | 说明 |
|------|------|------|
| 8 | 跨模块直接 DB 查询普遍 | classes(8+)/classEnrollments(6+)/users(6+)/subjects(6+)/exams(5+) 被跨模块直接访问 |
| 9 | actions 层混入数据访问 | exams/homework/questions/announcements 的 actions.ts 直接 db.insert/update/delete |
| 10 | auth.ts 混合 5 类职责 | NextAuth 配置 + 密码安全 DB + 角色规范化 + IP 解析 + 回调函数 |
| 11 | users/import-export.ts 四重职责 | 导入解析 + 导出 + 用户创建 + 班级注册(跨模块写) |
| 12 | proctoring 死代码 | exam-mode-config.tsx 未集成到考试表单 |
| 13 | messaging 与 notifications 边界模糊 | 双向依赖,类型系统不一致 |
| 14 | proctoring 事件双通道重复 | Server Action 与 REST API 同一逻辑两份代码 |
| 15 | proxy.ts 硬编码权限字符串 | 未复用 Permissions 常量,违反项目规则 |
### 4.3 架构文档问题
当前 004 架构影响地图存在的问题:
1. 按模块罗列函数签名,缺乏全局视角
2. 缺少模块依赖关系图
3. 缺少数据流向图
4. 缺少调用链路
5. 缺少分层架构说明
6. 未标注循环依赖
### 4.4 解耦优先级
**立即执行P0**
1. 拆分 `classes/data-access.ts`2104 行 → 按职责拆 3-4 个文件)
2. 拆分 `homework/data-access.ts`1038 行 → 分离排名逻辑)
3. 修复 shared/lib ↔ auth 循环依赖
4. dashboard 改为通过各模块 data-access 获取数据
5. messaging 写通知改为通过 notifications dispatcher
**短期执行P1**
6. 统一 classSchedule 写入口到 scheduling 模块
7. actions 层移除直接 DB 操作
8. 拆分 auth.ts
9. 集成 proctoring/exam-mode-config 到考试表单
10. 拆分 users/import-export.ts
---
## 五、优先补齐路线图
### Phase 1: P0 缺口补齐MVP 必须项)
> v3 进度8 项中 6 项已完成,剩余 2 项
| 序号 | 功能 | 所属模块 | v2 状态 | v3 状态 | 工作量 |
|------|------|---------|---------|---------|--------|
| 1 | **通知公告系统** | 家校沟通 | ❌ | ✅ 已实现 | — |
| 2 | **操作日志 + 登录日志** | 日志审计 | ❌ | ✅ 已实现 | — |
| 3 | **成绩录入 + 查询 + 统计报表** | 成绩分析 | ❌ | ✅ 已实现 | — |
| 4 | **文件上传 + 权限控制** | 文件管理 | ❌ | ✅ 已实现 | — |
| 5 | **课程计划管理** | 教务排课 | ❌ | ✅ 已实现 | — |
| 6 | **隐私政策 + 用户同意** | 隐私合规 | ❌ | ❌ 未实现 | 小 |
| 7 | **未成年人信息保护** | 隐私合规 | ❌ | ❌ 未实现 | 小 |
| 8 | **修复 13 个幽灵导航路由** | 布局 | ❌ | ✅ 已修复 | — |
### Phase 2: P1 关键增强(上线前推荐)
> v3 进度20 项中约 11 项已完成
| 序号 | 功能 | 所属模块 | v2 状态 | v3 状态 |
|------|------|---------|---------|---------|
| 1 | 站内消息系统 | 家校沟通 | ❌ | ✅ 已实现 |
| 2 | 家长端仪表盘 | 家校沟通 | ⚠️ | ⚠️ 仍需完善 |
| 3 | Excel 批量导入 | 导入导出 | ❌ | ✅ 已实现 |
| 4 | Excel/PDF 导出 | 导入导出 | ❌ | ✅ 已实现 |
| 5 | 排课规则 + 自动排课 | 教务排课 | ❌ | ✅ 已实现 |
| 6 | 课表调整/代课 | 教务排课 | ❌ | ❌ 未实现 |
| 7 | 速率限制 | 操作安全 | ❌ | ❌ 未实现 |
| 8 | 成绩趋势 + 对比分析 | 成绩分析 | ⚠️ | ⚠️ 趋势已有,对比未实现 |
| 9 | 成绩导出 | 成绩分析 | ❌ | ✅ 已实现 |
| 10 | 学生考勤 | 考勤管理 | ❌ | ✅ 已实现 |
| 11 | 用户批量导入 | 用户与权限 | ❌ | ✅ 已实现 |
| 12 | 密码安全策略 | 用户与权限 | ⚠️ | ⚠️ 仍需完善 |
| 13 | 数据变更日志 | 日志审计 | ❌ | ✅ 已实现 |
| 14 | 日志查询/导出 | 日志审计 | ❌ | ⚠️ 查询已有,导出未实现 |
| 15 | 文件预览 + 存储策略 | 文件管理 | ❌ | ⚠️ 存储策略部分实现 |
| 16 | 全文检索 | 全局搜索 | ❌ | ⚠️ 基础实现 |
| 17 | 依赖审计集成 CI | 安全审计 | ⚠️ | ⚠️ 仍未集成 CI |
| 18 | 数据库定时备份 | 数据备份 | ❌ | ✅ 已实现 |
| 19 | E2E 测试完善 | 自动化测试 | ⚠️ | ⚠️ 仍需完善 |
| 20 | 通知偏好管理 | 消息通知 | ❌ | ✅ 已实现 |
### Phase 3: P2 迭代优化(竞争力提升)
> v3 进度14 项中 8 项已完成57%
| 序号 | 功能 | 所属模块 | v2 状态 | v3 状态 |
|------|------|---------|---------|---------|
| 1 | 国际化(i18n) | 非功能性 | ❌ | ❌ 未实现 |
| 2 | 多租户/多校区 | 非功能性 | ❌ | ❌ 未实现 |
| 3 | 主题色定制 | 深色主题 | ❌ | ❌ 未实现 |
| 4 | 屏幕阅读器兼容 | 无障碍 | ❌ | ✅ 已实现 |
| 5 | 视觉回归测试 | 自动化测试 | ❌ | ✅ 已实现 |
| 6 | AI 批改辅助 | AI 赋能 | ❌ | ❌ 未实现 |
| 7 | AI 学情分析 | AI 赋能 | ❌ | ❌ 未实现 |
| 8 | AI 备课助手 | AI 赋能 | ❌ | ❌ 未实现 |
| 9 | 选课管理 | 教务排课 | ❌ | ✅ 已实现 |
| 10 | 考试监考 | 作业与考试 | ❌ | ✅ 已实现 |
| 11 | 学情诊断报告 | 成绩分析 | ❌ | ✅ 已实现 |
| 12 | 短信/微信推送 | 消息通知 | ❌ | ✅ 已实现 |
| 13 | 漏洞扫描 + 渗透测试 | 安全审计 | ❌ | ⚠️ 漏洞扫描已实现,渗透测试未实现 |
| 14 | 灾备方案 | 数据备份 | ❌ | ✅ 已实现 |
---
## 六、差距统计摘要
| 状态 | P0 | P1 | P2 | 合计 |
|------|-----|-----|-----|------|
| ✅ 已完成 | 38 | 12 | 2 | **52** |
| ⚠️ 部分完成 | 10 | 8 | 1 | **19** |
| ❌ 未实现 | 7 | 28 | 27 | **62** |
| **合计** | **55** | **48** | **30** | **133** |
| ✅ 已完成 | 46 | 31 | 12 | **89** |
| ⚠️ 部分完成 | 7 | 11 | 6 | **24** |
| ❌ 未实现 | 2 | 11 | 17 | **30** |
| **合计** | **55** | **53** | **35** | **143** |
| 完成率 | P0 | P1 | P2 | 总体 |
|--------|-----|-----|-----|------|
| 按已完成计 | 69% | 25% | 7% | **39%** |
| 含部分完成 | 87% | 42% | 10% | **53%** |
| 按已完成计 | 84% | 58% | 34% | **62%** |
| 含部分完成 | 96% | 79% | 51% | **79%** |
### v1 → v2 改善
### v2 → v3 改善
| 指标 | v1 | v2 | 变化 |
| 指标 | v2 | v3 | 变化 |
|------|-----|-----|------|
| P0 完成率(严格) | 65% | 69% | +4% |
| P0 完成率(含部分) | 83% | 87% | +4% |
| 安全漏洞数 | 15 个 Server Action 无权限 | 0 | **全部修复** |
| 架构图覆盖率 | ~40% | 100% | **全量补全** |
| 幽灵路由 | 未发现 | 13 个 | **新发现** |
| P0 完成率(严格) | 69% | 84% | **+15%** |
| P0 完成率(含部分) | 87% | 96% | **+9%** |
| P1 完成率(严格) | 25% | 58% | **+33%** |
| P2 完成率(严格) | 7% | 34% | **+27%** |
| P2 路线图完成率 | 0% | 57% (8/14) | **+57%** |
| 总体完成率(严格) | 39% | 62% | **+23%** |
| 总体完成率(含部分) | 53% | 79% | **+26%** |
| 幽灵路由 | 13 个 | 0 | **全部修复** |
| 架构技术债 | 未审查 | 7 P0 + 8 P1 | **新发现** |
> **结论**:项目 P0 核心功能完成度约 69%(严格)/ 87%(含部分),较 v1 提升 4%。安全漏洞全部修复。架构图已全量补全。主要缺口集中在**通知公告**、**日志审计**、**成绩分析**三个 P0 模块。建议优先补齐 Phase 1 的 8 项 P0 缺口
> **结论**:项目 P0 核心功能完成度达 84%(严格)/ 96%(含部分),较 v2 大幅提升 15%。P2 路线图完成 8/1457%)。主要剩余缺口
> 1. **隐私合规 P0**隐私政策、未成年人信息保护2 项)
> 2. **P2 路线图**AI 批改/学情/备课、国际化、多租户、主题色定制6 项)
> 3. **架构技术债**7 项 P0 严重问题需修复classes/data-access 超标、循环依赖、跨模块直查等)
>
> 建议优先:① 补齐 2 项 P0 隐私合规缺口;② 修复 7 项 P0 架构技术债;③ 推进 P2 路线图剩余 6 项。