refactor: fix remaining P2 architecture issues

Fix P2-6: proxy.ts now uses Permissions constants instead of hardcoded strings

Fix P2-7: useA11yId file no longer exists (use-aria-live.ts already in hooks/)

Fix P2-8: schema.ts section numbering reordered to continuous 1-24

Fix P2-11: announcements dead code void wasPublished already removed

Fix P2-17: app-sidebar.tsx uses hasRole() instead of permission-based role inference

Fix P2-18: scheduling/actions.ts removes trailing re-export of data-access; 4 pages now import directly from data-access

Sync architecture docs 004 and 005
This commit is contained in:
SpecialX
2026-06-20 01:00:06 +08:00
parent 49291fcc31
commit d8962aba96
10 changed files with 94 additions and 52 deletions

View File

@@ -5,7 +5,7 @@
"generatedAt": "2026-06-17",
"formatVersion": "1.1",
"rule": "每次文件修改后须同步更新本文件",
"lastUpdate": "P1-1 已修复:所有跨模块直查已改为通过对方 data-access 接口homework/grades/parent/diagnostic/elective/proctoring/notifications/scheduling/classes 模块exams 模块 getSubjectsAction/getGradesAction 改为调用 school data-accessquestions 模块 getKnowledgePointOptionsAction 改为调用 textbooks data-accessgrades 模块多处直查 classes/classEnrollments/subjects/users 改为调用对应模块 data-accessclasses 模块 actions 直查 grades 表改为调用 school data-accessgetSessionTeacherId 改为通过 auth-guard.getAuthContextattendance 模块 getClassStudentsForAttendance 改为通过 classes data-accessscheduling 模块 autoScheduleAction 直查 users 改为通过 users data-accessnotifications 模块 sendClassNotificationAction 直查 classes/classEnrollments 改为通过 classes data-accessproctoring 模块跨模块直查 exams/examSubmissions/users 改为通过 exams/users data-accessdiagnostic 模块 updateMasteryFromSubmission 跨模块直查 4 张表改为通过 exams/questions data-accessdashboard 教师仪表盘直查 users 改为通过 users data-accessusers 模块 updateUserProfile 绕过 data-access 已下沉P2-20 已修复getDemoStudentUser 从 homework 模块迁移至 users 模块 getCurrentStudentUserhomework 保留 re-export 向后兼容6 个 student 页面dashboard/assignments/assignments-[assignmentId]/courses/textbooks/textbooks-[id]/schedule改用 users 模块,消除对 homework 的虚假依赖student/elective 改用 getAuthContext()shared/types/action-state.ts 移除分号修复 Prettier 违规shared/types/permissions.ts EXAM_PROCTOR_READ 字符串从 exam:proctor_read 改为 exam:proctor:read 统一命名;为 ActionState/DataScope/AuthContext 添加 JSDoc 注释P0-2 已修复shared/lib ↔ auth 循环依赖已解决,新增 shared/lib/session.ts 单一入口封装 getSession()dynamic import 打破静态循环audit-logger/change-logger/auth-guard 改为通过 session.ts 获取 sessionP1-6 已修复http-utils.ts 新增 getUserAgent()audit-logger/change-logger/login-logger 删除本地重复 IP/UA 提取逻辑,统一复用 resolveClientIp/getUserAgentP0-1 已修复exams/data-access.persistAiGeneratedExamDraft 改为调用 questions/data-access.createQuestionWithRelations不再直查 questions 表P0-2 已修复exams/data-access.getExams/getExamById/getExamsDashboardStats 改为调用 classes/data-access.getClassGradeIdsByClassIds不再直查 classes 表P1-2 已修复exams/homework/questions/announcements actions 层 DB 操作下沉到 data-accessP2-2 已修复ai.ts 拆分为 ai/ 目录P0-8 已修复school actions 层 DB 操作下沉到 data-accesslogAudit 改为 after() 异步非阻塞P0-7 已修复classes/data-access-stats.ts 和 data-access-students.ts 不再直查 homework/exams 表,改为调用新增的 homework/data-access-classes.ts 暴露的 7 个函数;新增 diagnostic/schema.ts6 个 Zod schema和 classes/schema.ts13 个 Zod schemaactions.ts 中手动 typeof 校验全部替换为 Zod safeParse"
"lastUpdate": "P2-6/P2-7/P2-8/P2-11/P2-17/P2-18 已修复:proxy.ts 改用 Permissions 常量替代硬编码字符串useA11yId 文件已不存在use-aria-live.ts 已在 hooks/ 目录schema.ts 分节编号重新编号为连续 1-24消除 8b/14b/乱序问题announcements 死代码 void wasPublished 已不存在layout/app-sidebar.tsx 改用 hasRole() 判断角色不再用权限反推角色scheduling/actions.ts 移除末尾 re-export data-access4 个页面改为从 data-access 直接导入P1-1 已修复:所有跨模块直查已改为通过对方 data-access 接口homework/grades/parent/diagnostic/elective/proctoring/notifications/scheduling/classes 模块P0-2 已修复shared/lib ↔ auth 循环依赖已解决,新增 shared/lib/session.ts 单一入口P1-6 已修复http-utils.ts 统一 IP/UA 提取P0-1/P0-2/P0-3/P0-4/P0-5/P0-7/P0-8 已修复P1-2 已修复actions 层 DB 操作下沉到 data-accessP2-2/P2-3/P2-12/P2-20 已修复"
},
"architectureOverview": {
"layers": [