Files
NextEdu/docs/architecture/007_gap_audit_report.md
SpecialX f8dfd1dddd 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
2026-06-17 21:51:32 +08:00

26 KiB
Raw Blame History

Next_Edu 差距审计报告v3 — 基于完整架构图 + 架构审查)

对照《企业级 K12 教务管理系统标准功能模块清单》(006),基于完整架构影响地图(004/005)与源码全量扫描 审计日期2026-06-17v3 更新) v3 变更P0 缺口大幅补齐、8 项 P2 功能新实现、新增架构审查发现(基于 audit/00_summary.md


一、总体完成度

维度 P0 子功能总数 已完成 部分完成 未实现 完成率
核心业务 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 完成率约 55%P2 完成率约 33%(总体)/ 57%Phase 3 路线图 8/14 项)。

v3 修复项(相对 v2

修复项 v2 状态 v3 状态 说明
通知公告系统 完全缺失 已实现 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 已清理无效路由

关键风险项v3 更新后)

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/libauth 循环依赖 — 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 新实现

核心业务模块

标准模块 标准子功能 状态 项目现状说明 补齐建议
用户与权限 用户注册/登录 NextAuth v5邮箱+OAuth 登录JWT 策略
多角色体系 6 角色usersToRoles 多对多
RBAC 权限模型 30 个权限点ROLE_PERMISSIONS 映射
数据范围控制 DataScope 6 种类型
角色切换 JWT 存 roles[],但无主动切换 UI 新增角色切换下拉组件
用户档案管理 users 模块 updateUserProfile + getUserProfile
新手引导 OnboardingGate 组件
组织架构管理 ⚠️ 部门/年级 CRUD 已有,但无教研组管理 新增 teachingGroups 表
用户批量导入 🆕 users/import-export.ts 实现 Excel 导入
密码安全策略 ⚠️ NextAuth 默认 bcrypt有锁定策略但无强度校验 前端强度校验
学校管理 学校信息配置 schools 表 + CRUD
学年学期管理 academicYears 表 + CRUD
年级管理 grades 表 + CRUD
班级管理 classes 表 + 17 个 actions含邀请码
学科管理 ⚠️ subjects 表存在,但仅有 name/order/code 扩展学段归属字段
部门管理 departments 表 + CRUD
校区管理 无校区概念 新增 campuses 表
学校参数配置 无参数配置功能 新增 schoolSettings KV 表
教务排课 课程计划管理 🆕 course-plans 模块已实现
排课规则配置 🆕 scheduling 模块 + SchedulingRule 类型
自动排课引擎 🆕 scheduling/auto-scheduler.ts 纯函数算法
课表查看 教师课表 + 学生课表 + 班级课表
课表调整/代课 仅 CRUD 课表项 新增 scheduleChanges 表 + 审批流
教室资源管理 ⚠️ classrooms 表存在,但无管理 UI 增加 CRUD 页面
选课管理 🆕 elective 模块CRUD + 选课 + 抽签)
教材资源 教材库管理 textbooks 表 + createTextbookAction
章节结构管理 chapters 树形结构 + reorderChaptersAction
知识点图谱 ⚠️ knowledgePoints 有 CRUD + 章节关联,但无前置/后继关系 增加 prerequisiteEdges 表
教材内容阅读 TextbookContentPanelMarkdown + rehype-sanitize
教材版本管理 无版本概念 增加 version 字段
资源附件管理 🆕 files 模块 + fileAttachments 表 + /api/upload
教材审核流程 无审核机制 新增 reviewWorkflow 表
题库与试卷 题目创建/编辑 5 种题型支持子题目CreateQuestionDialog
题目分类标签 知识点关联 + difficulty + type 多维标签
题目批量导入 Excel 模板 + 批量解析
题目版本管理 增加 questionVersions 表
试卷手动组卷 ExamAssembly 组件 + StructureEditor
试卷智能组卷 无自动抽题 按知识点/难度分布随机抽题
AI 辅助出题 ai-pipeline.ts3 个 AI 生成函数
试卷模板管理 新增 examTemplates 表
试卷预览/打印 ⚠️ ExamPreviewDialog 可预览,但无打印适配 增加 @media print
作业与考试 作业布置 createHomeworkAssignmentAction
作业提交 startHomeworkSubmissionAction + submitHomeworkAction
作业批改评分 gradeHomeworkSubmissionAction + HomeworkGradingView
迟交/补交策略 ⚠️ allowLate/lateDueAt 字段存在,前端未暴露配置 作业创建表单增加开关
多次提交/重做 ⚠️ maxAttempts 字段存在,有次数检查 前端暴露配置 + 重做入口
作业统计分析 getHomeworkAssignmentAnalytics
作业归档 无归档机制 增加 archivedAt 字段
在线考试模式 ⚠️ examMode 字段存在,但 exam-mode-config.tsx 未集成 集成组件到考试表单
考试监考 🆕 proctoring 模块(事件上报 + 监考面板 + 防作弊)
成绩分析 成绩录入 🆕 grades 模块 + gradeRecords 表 + 批量录入
成绩查询 ⚠️ grades/data-access 有查询,但无独立查询页 新增成绩查询页面
成绩统计报表 🆕 grades/data-access-analytics.ts 班级统计 + 排名
成绩趋势分析 ⚠️ getTeacherGradeTrends 提供教师维度趋势 扩展为多维度
成绩对比分析 无班级间/学科间对比 新增对比查询 + 雷达图
学情诊断报告 🆕 diagnostic 模块(个人/班级诊断报告)
成绩导出 🆕 grades/export.ts Excel 导出
等第转换 新增 gradeScale 配置
家校沟通 通知公告 🆕 announcements 模块 + 三级发布
站内消息 🆕 messaging 模块 + 通知偏好
家长端仪表盘 ⚠️ parent 模块有 data-access但组件不完整 接入子女数据查询
家长会/约谈预约 新增 appointments 表
请假审批 新增 leaveRequests 表
校园动态/班级圈 新增 posts 表
AI 赋能 AI 对话助手 /api/ai/chat + createAiChatCompletion
AI 辅助出题 exams/ai-pipeline.ts 完整实现
AI 批改辅助 接入 AI 评分 prompt + 教师终审
AI 学情分析 基于作业数据生成学习路径
AI 备课助手 根据教材章节生成教案
AI 多模型配置 aiProviders 表 + upsertAiProviderAction
AI API Key 加密 AES 加密
考勤管理 学生考勤 🆕 attendance 模块 + 考勤登记
教师考勤 🆕 attendance 模块
考勤统计 🆕 attendance/data-access-stats.ts 月度汇总
考勤规则配置 ⚠️ 有基础规则,但无完整配置 UI 增加规则配置页面

平台基础能力

标准模块 标准子功能 状态 项目现状说明 补齐建议
消息通知 站内通知 🆕 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 表
文件预览 集成文件预览服务
文件存储策略 ⚠️ 有本地存储,无 OSS/S3 抽象 抽象 StorageProvider 接口
文件权限控制 ⚠️ 有基础鉴权,但不完整 完善文件访问鉴权
全局搜索 全文检索 ⚠️ global-search.tsx 组件 + /api/search 路由 集成 Meilisearch/Typesense
搜索建议 ⚠️ 有基础联想 搜索 API + 前端联想
搜索过滤 搜索结果筛选器
导入导出 Excel 导入 🆕 users/import-export.ts 实现
Excel/PDF 导出 🆕 grades/export.ts + users/import-export.ts
导入校验与错误报告 ⚠️ 有基础校验,无错误报告下载 行级校验 + 错误报告
数据看板 管理员仪表盘 getAdminDashboardData + AdminDashboardView
教师仪表盘 TeacherDashboardView + 9 个子组件
学生仪表盘 StudentDashboard + 5 个子组件
家长仪表盘 ⚠️ parent 模块有 data-access组件不完整 接入子女数据
自定义看板 拖拽布局 + localStorage

非功能性模块

标准模块 标准子功能 状态 项目现状说明 补齐建议
国际化 多语言框架 无 i18n 集成 集成 next-intl
语言切换 语言选择器 + URL 前缀
日期/数字本地化 ⚠️ formatDate 支持 locale 参数(默认 zh-CN) 绑定用户语言偏好
多租户/多校区 租户隔离 行级 tenantId 或 schema 隔离
校区资源映射 跨校区共享规则
统一管理后台 集团管理视图
深色主题 主题切换 ThemeProvider(next-themes) + ThemePreferencesCard
主题色定制 CSS 变量动态注入
无障碍访问 键盘导航 ⚠️ 部分组件支持,但非系统性 全面键盘测试
ARIA 标注 ⚠️ icon 按钮 aria-label 已加,非全覆盖 系统性 ARIA 审计
屏幕阅读器兼容 🆕 shared/lib/a11y.ts + components/a11y/ 4 组件
跳转链接 layout.tsx 有 skip-link
性能优化 页面懒加载 Next.js App Router 自动代码分割
图片优化 next/image 使用
缓存策略 ⚠️ 部分页面 SSR无系统性 ISR/SSG 关键页面配置 revalidate
性能监控 无 Web Vitals 采集 集成 next/web-vitals
自动化测试 单元测试 Vitest 5 文件 19 用例 扩展覆盖率
集成测试 Vitest 7 文件 38 用例 扩展覆盖率
E2E 测试 ⚠️ Playwright 3 个 spec需数据库环境 完善 CI 环境配置
视觉回归测试 🆕 tests/visual/ 4 个 spec + 多视口/主题
CI/CD 持续集成 .gitea/workflows/ci.yml
持续部署 Dockerfile + CI 自动构建部署
预览环境 PR 预览部署
数据备份 数据库定时备份 🆕 scripts/backup-db.sh
备份恢复演练 🆕 scripts/backup-verify.sh + test-backup.sh
灾备方案 🆕 scripts/backup-offsite-sync.sh 异地同步

合规与安全

标准模块 标准子功能 状态 项目现状说明 补齐建议
隐私合规 隐私政策与用户协议 无隐私政策页面 新增 consent 页
未成年人信息保护 无年龄判断、无监护人同意流程 注册时年龄校验
数据保留策略 新增 dataRetentionPolicies
用户数据导出/删除 GDPR 式数据操作 API
数据加密 传输加密 Next.js 默认 HTTPS 部署时配 HSTS
存储加密 AI API Key AES 加密,密码 bcrypt
密码哈希 NextAuth 默认 bcrypt
操作安全 CSRF 防护 NextAuth SameSite Cookie + Server Action
XSS 防护 React 自动转义 + rehype-sanitize
SQL 注入防护 Drizzle ORM 参数化查询
速率限制 集成 upstash/ratelimit
会话管理 JWT 过期策略 + NextAuth
Server Action 权限校验 v2 修复:全部 57+ Server Action 均使用 requirePermission/requireAuth
敏感信息脱敏 日志脱敏 无日志框架内置脱敏 日志框架内置脱敏
前端脱敏 手机号/邮箱掩码组件
导出脱敏 无导出脱敏 导出时可选脱敏
安全审计 漏洞扫描 🆕 scripts/security-scan.sh + security-scan.ps1
依赖审计 ⚠️ npm audit 可用但未集成 CI CI 增加 npm audit
渗透测试 上线前第三方测试

三、P2 实现进度表Phase 3 路线图)

v3 新增章节:追踪 Phase 3 P2 迭代优化功能的实现进度

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 备课助手 -
国际化 -
多租户 -
主题色定制 -

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.ts2104 行 → 按职责拆 3-4 个文件)
  2. 拆分 homework/data-access.ts1038 行 → 分离排名逻辑)
  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 合计
已完成 46 31 12 89
⚠️ 部分完成 7 11 6 24
未实现 2 11 17 30
合计 55 53 35 143
完成率 P0 P1 P2 总体
按已完成计 84% 58% 34% 62%
含部分完成 96% 79% 51% 79%

v2 → v3 改善

指标 v2 v3 变化
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 核心功能完成度达 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 项。