diff --git a/docs/work_log.md b/docs/work_log.md index 85fd9a8..c516455 100644 --- a/docs/work_log.md +++ b/docs/work_log.md @@ -2,6 +2,61 @@ ## 2026-06-17 +### 解耦路线图执行(P0 全部 + P1 大部分 + P2-2) + +#### 问题背景 +按 `docs/architecture/audit/01_decoupling_roadmap.md` 解耦路线图,修复全部扫描出的过耦合问题。 + +#### 完成工作 + +##### 第一批:P0 严重问题修复(commit 220061d + 62be0b9) + +1. **P0-3 循环依赖修复**:`shared/lib/audit-logger.ts`、`change-logger.ts`、`auth-guard.ts` 将 `import { auth } from "@/auth"` 改为动态 import,消除 shared → auth 反向依赖 +2. **P0-5 messaging 改用 dispatcher**:`messaging/actions.ts` 将 `createNotification` 替换为 `sendNotification`(来自 notifications/dispatcher),支持用户通知偏好和多渠道 +3. **P0-6 统一 classSchedule 写入口**:`scheduling/data-access.ts` 新增 4 个统一写函数(insertClassScheduleItem/updateClassScheduleItemById/deleteClassScheduleItemById/replaceClassSchedule),classes 和 scheduling/actions 改为调用这些函数 +4. **P0-2 homework/data-access.ts 拆分**:1038→596 行,新增 `stats-service.ts`(346 行)承载统计业务逻辑 +5. **P0-4 dashboard 解耦**:204→47 行,`getAdminDashboardData` 改用 `Promise.all` 调用 6 个模块的 `get[Module]DashboardStats()` 函数 +6. **P0-1 classes/data-access.ts 拆分**:2090→656 行,拆分为 4 个新文件(data-access-stats/schedule/students/admin.ts),通过 re-export 保持向后兼容 + +##### 第二批:P1 较严重问题修复(commit 2c8e229) + +7. **P1-6 notifications 反向依赖修复**:`notifications/channels/in-app-channel.ts` 将静态 import messaging 改为动态 import +8. **P1-3 auth.ts 拆分**:293→208 行,拆分出 4 个 shared/lib 文件(role-utils.ts/bcrypt-utils.ts/http-utils.ts/password-security-service.ts) +9. **P1-4 users/import-export.ts 拆分**:拆分出 `user-service.ts`(用户创建+密码哈希)和 `class-registration.ts`(班级注册委托 classes/data-access) + +##### 第三批:P1-2 actions 层 DB 操作下沉(commit 84d6636) + +10. **exams/actions.ts**:移除所有 db 直接操作,新增 7 个 data-access 函数(getExamCreatorId/updateExamWithQuestions/deleteExamById/duplicateExam/getExamPreview/getExamSubjects/getExamGrades)。actions.ts 831→766 行 +11. **homework/actions.ts**:新建 `data-access-write.ts`(285 行)含 10 个函数,actions.ts 387→239 行 +12. **questions/actions.ts**:新增 4 个 data-access 函数(createQuestionWithRelations/updateQuestionById/deleteQuestionByIdRecursive/getKnowledgePointOptions),actions.ts 294→177 行 +13. **announcements/actions.ts**:新增 5 个 data-access 函数(insertAnnouncement/updateAnnouncementById/deleteAnnouncementById/publishAnnouncementById/archiveAnnouncementById),actions.ts 242→231 行 + +##### 第四批:P2-2 ai.ts 拆分(commit 6588f74) + +14. **shared/lib/ai.ts 拆分**:247 行拆分为 `shared/lib/ai/` 目录 6 个文件(payload-parser/api-key-crypto/provider-config/client/errors/index),原 ai.ts 保留为向后兼容重导出 + +##### 第五批:架构文档同步 + 全文档合规检查(commit 0423b2b + 4d659ad) + +15. 同步更新 004/005/007/audit 文档反映所有解耦变更 +16. 全项目 32 个文档合规检查与修正: + - 修正编码规范 Prettier 配置不一致(semi: false, singleQuote: false) + - 修正代码示例中的 any→unknown、缺少返回类型、未用 import type、as 断言 + - 修正 36 处过时文件路径(c:/Users/xiner/ → e:/Desktop/CICD/) + - 修正行数不准确、函数名错误(dispatchNotification→sendNotification 等) + - 同步已修复问题状态标记 + +#### 未修复项 +- **P1-1**:跨模块直接 DB 查询(影响范围大,需逐步替换) +- **P1-5**:proctoring 死代码(用户决定保留) +- **P2-1**:schema.ts 按业务域拆分(需全面回归测试) + +#### 验证 +- `npx tsc --noEmit`:0 错误 +- `npm run lint`:0 错误 +- 所有文件均在行数限制内 + +--- + ### 编码规范适配与配置完善 #### 问题背景