refactor: P0-1/2/4 解耦修复 - 拆分过耦合文件 + dashboard 解耦
This commit is contained in:
@@ -30,8 +30,8 @@
|
||||
|
||||
| 文件 | 行数 | 问题 |
|
||||
|------|------|------|
|
||||
| `classes/data-access.ts` | 2104 | 混入 homework/scheduling/grades 逻辑 |
|
||||
| `homework/data-access.ts` | 1038 | 混入排名计算业务逻辑 |
|
||||
| ~~`classes/data-access.ts`~~ | ~~2104~~ → 656 | ~~混入 homework/scheduling/grades 逻辑~~ ✅ 已拆分为 5 个文件 |
|
||||
| ~~`homework/data-access.ts`~~ | ~~1038~~ → 596 | ~~混入排名计算业务逻辑~~ ✅ 已拆分 |
|
||||
| `shared/db/schema.ts` | 1111 | 54 张表混合(可接受,但需分节) |
|
||||
|
||||
### 2. 循环依赖
|
||||
@@ -114,8 +114,8 @@ NextAuth 配置 + 密码安全 DB 操作 + 角色规范化 + IP 解析 + 回调
|
||||
## 五、解耦优先级
|
||||
|
||||
### 立即执行(P0)
|
||||
1. 拆分 `classes/data-access.ts`(2104 行 → 按职责拆 3-4 个文件)
|
||||
2. 拆分 `homework/data-access.ts`(1038 行 → 分离排名逻辑)
|
||||
1. ~~拆分 `classes/data-access.ts`(2104 行 → 按职责拆 3-4 个文件)~~ ✅ 已完成(拆为 5 个文件,均 ≤800 行)
|
||||
2. ~~拆分 `homework/data-access.ts`(1038 行 → 分离排名逻辑)~~ ✅ 已完成
|
||||
3. 修复 shared/lib ↔ auth 循环依赖
|
||||
4. dashboard 改为通过各模块 data-access 获取数据
|
||||
5. messaging 写通知改为通过 notifications dispatcher
|
||||
|
||||
@@ -43,7 +43,7 @@ app/ ──▶ modules/ ──▶ shared/
|
||||
|
||||
### P0 严重问题(必须立即修复)
|
||||
|
||||
#### P0-1 `classes/data-access.ts` 2104 行,超硬上限 2.1 倍
|
||||
#### P0-1 `classes/data-access.ts` 2104 行,超硬上限 2.1 倍 ✅ 已修复
|
||||
|
||||
**问题**:
|
||||
- 文件行数 2104,远超 1000 行硬上限
|
||||
@@ -58,18 +58,21 @@ app/ ──▶ modules/ ──▶ shared/
|
||||
**解耦方案**:
|
||||
```
|
||||
src/modules/classes/
|
||||
├── data-access.ts # 班级核心 CRUD(目标 ≤500 行)
|
||||
├── data-access-stats.ts # 班级统计查询(getHomeworkStats 等)
|
||||
├── data-access-schedule.ts # 班级课表查询(getClassSchedule 等)
|
||||
└── data-access-grades.ts # 班级成绩汇总(getClassGradeSummary 等)
|
||||
├── data-access.ts # 班级核心 CRUD(656 行)
|
||||
├── data-access-stats.ts # 班级统计查询(604 行)
|
||||
├── data-access-schedule.ts # 班级课表查询(230 行)
|
||||
├── data-access-students.ts # 学生相关查询(280 行)
|
||||
└── data-access-admin.ts # 管理员班级管理(441 行)
|
||||
```
|
||||
|
||||
**迁移步骤**:
|
||||
1. 创建 3 个新文件,按职责迁移对应函数
|
||||
2. 在 `data-access.ts` 中 re-export 以保持向后兼容
|
||||
1. ~~创建 3 个新文件,按职责迁移对应函数~~ ✅ 已创建 4 个新文件
|
||||
2. ~~在 `data-access.ts` 中 re-export 以保持向后兼容~~ ✅ 已完成
|
||||
3. 逐步更新调用方 import 路径
|
||||
4. 最终移除 re-export,强制使用新路径
|
||||
|
||||
**完成状态**:2026-06-17 已完成拆分,所有文件均 ≤800 行,通过 re-export 保持向后兼容
|
||||
|
||||
---
|
||||
|
||||
#### P0-2 `homework/data-access.ts` 1038 行,混入排名计算
|
||||
@@ -380,9 +383,9 @@ src/shared/lib/ai/
|
||||
| 1 | P0-3 修复循环依赖 | shared/lib + auth.ts | 低 |
|
||||
| 2 | P0-5 messaging 改用 dispatcher | messaging + notifications | 低 |
|
||||
| 3 | P0-6 统一 classSchedule 写入口 | classes + scheduling | 中 |
|
||||
| 4 | P0-2 拆分 homework/data-access | homework | 中 |
|
||||
| 4 | ~~P0-2 拆分 homework/data-access~~ ✅ | homework | 中 |
|
||||
| 5 | P0-4 dashboard 改用模块 data-access | dashboard + 11 个模块 | 高 |
|
||||
| 6 | P0-1 拆分 classes/data-access | classes + 多个调用方 | 高 |
|
||||
| 6 | ~~P0-1 拆分 classes/data-access~~ ✅ | classes + 多个调用方 | 高 |
|
||||
|
||||
### 第二阶段:P1 修复(建议 2-4 周)
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
| 模块 | 行数(最大文件) | 职责单一性 | 耦合度 | 严重度 |
|
||||
|------|----------------|-----------|--------|--------|
|
||||
| school | 325 | ✅ 良好 | ✅ 低 | 🟢 合格 |
|
||||
| classes | **2104** | ❌ 严重违反 | ❌ 严重 | 🔴 严重 |
|
||||
| classes | ~~2104~~ → 656 | ✅ 已修复 | ❌ 严重 | 🟡 需改进 |
|
||||
| scheduling | 310(算法)/ 302(actions) | ✅ 算法独立 | ⚠️ 中 | 🟡 需改进 |
|
||||
| attendance | 271 | ✅ 良好 | ⚠️ 中 | 🟢 合格 |
|
||||
| users | 291(import-export) | ❌ 违反 | ❌ 高 | 🟠 较严重 |
|
||||
@@ -21,7 +21,7 @@
|
||||
| announcements | 242 | ⚠️ 部分违反 | ✅ 低 | 🟡 需改进 |
|
||||
|
||||
**核心结论**:
|
||||
1. `classes` 模块是全项目耦合最严重的模块,单文件 2104 行远超 1000 行硬性上限,混入了 schedule、homework、grades 三个业务领域的逻辑。
|
||||
1. ~~`classes` 模块是全项目耦合最严重的模块,单文件 2104 行远超 1000 行硬性上限,混入了 schedule、homework、grades 三个业务领域的逻辑。~~ ✅ 已修复(2026-06-17 拆分为 5 个文件,均 ≤800 行)
|
||||
2. `users/import-export.ts` 违反单一职责,同时处理导入、导出、用户创建、班级注册四类逻辑。
|
||||
3. `scheduling/auto-scheduler.ts` 是算法独立化的**优秀范例**,纯函数、无 DB 访问、可独立测试。
|
||||
4. `announcements` 和 `audit` 模块的 data-access 层不完整,写操作或导出逻辑泄漏到 actions 层。
|
||||
@@ -49,11 +49,11 @@
|
||||
|
||||
---
|
||||
|
||||
### 2.2 classes 模块 — 🔴 严重
|
||||
### 2.2 classes 模块 — 🟡 需改进(文件拆分已修复,跨模块耦合仍存在)
|
||||
|
||||
**文件清单**:actions.ts (765 行) / data-access.ts (**2104 行**) / types.ts (201 行)
|
||||
**文件清单**:actions.ts (765 行) / data-access.ts (656 行) / data-access-stats.ts (604 行) / data-access-schedule.ts (230 行) / data-access-students.ts (280 行) / data-access-admin.ts (441 行) / types.ts (201 行)
|
||||
|
||||
> ⚠️ `data-access.ts` 达 2104 行,**超出 1000 行硬性上限 2 倍**,违反项目代码质量规则。
|
||||
> ✅ `data-access.ts` 已于 2026-06-17 拆分为 5 个文件,所有文件均 ≤800 行,通过 re-export 保持向后兼容。
|
||||
|
||||
#### 2.2.1 职责混乱 — 混入三个外部业务领域
|
||||
|
||||
|
||||
Reference in New Issue
Block a user