6.0 KiB
6.0 KiB
RailwaySystem Phase 3:Issue 依赖关系有向无环图 (Dependency DAG)
设计目标: 明确各 Issue 之间的前后置依赖关系,清晰识别哪些任务必须串行推进、哪些任务可以无阻塞并行开发,指导团队实现资源利用率最大化。
1. Issue 全景依赖拓扑图 (Mermaid DAG)
flowchart TB
subgraph Wave0["Wave 0:基线支撑 (可立即无前置并行启动)"]
I1101["ISSUE-11-01<br/>RBAC权限体系"]
I1102["ISSUE-11-02<br/>字典配置方案"]
I0601["ISSUE-06-01<br/>外部Adapter SPI与Mock"]
end
subgraph Wave1["Wave 1:基础主数据与计划立项 (可立即并行启动)"]
I0101["ISSUE-01-01<br/>教师主数据"]
I0102["ISSUE-01-02<br/>学员主档与脱敏"]
I0103["ISSUE-01-03<br/>课程库资料"]
I0104["ISSUE-01-04<br/>空间资源:教室与场地"]
I0105["ISSUE-01-05<br/>宿舍房间与楼宇"]
I0201["ISSUE-02-01<br/>培训计划全生命周期"]
end
subgraph Wave2["Wave 2:计划配课、参训与排课"]
I0202["ISSUE-02-02<br/>本期课程引入"]
I0301["ISSUE-03-01<br/>本期参训名单维护"]
I0302["ISSUE-03-02<br/>名单Excel批量导入"]
I0401["ISSUE-04-01<br/>排课与四维冲突排他锁"]
I0402["ISSUE-04-02<br/>完整课表聚合VO"]
end
subgraph Wave3["Wave 3:住宿、门禁与报到"]
I0501["ISSUE-05-01<br/>批量住宿预分配防超卖"]
I0502["ISSUE-05-02<br/>调房走读管理"]
I0602["ISSUE-06-02<br/>门禁afterCommit解耦同步"]
I0503["ISSUE-05-03<br/>学员报到与时限控制"]
end
subgraph Wave4["Wave 4:课次考勤"]
I0701["ISSUE-07-01<br/>课次打卡与INV-01"]
I0702["ISSUE-07-02<br/>考勤名单与人工修正"]
end
subgraph Wave5["Wave 5:成绩与学习记录"]
I0801["ISSUE-08-01<br/>成绩项目配置与INV-04"]
I0802["ISSUE-08-02<br/>成绩录入台账INV-02/05"]
I0901["ISSUE-09-01<br/>学习记录接入与INV-03"]
end
subgraph Wave6["Wave 6:工作台与成效统计"]
I1001["ISSUE-10-01<br/>培训计划综合工作台"]
I1002["ISSUE-10-02<br/>计划成效统计概览"]
end
subgraph Wave7["Wave 7:全链路端到端验收"]
I1201["ISSUE-12-01<br/>P0主链路端到端集成验收"]
end
%% 跨模块依赖连线
I0103 --> I0202
I0201 --> I0202
I0102 --> I0301
I0201 --> I0301
I0301 --> I0302
I0202 --> I0401
I0101 --> I0401
I0104 --> I0401
I0401 --> I0402
I0301 --> I0501
I0105 --> I0501
I0501 --> I0502
I0501 --> I0602
I0601 --> I0602
I0301 --> I0503
I0401 --> I0701
I0301 --> I0701
I0503 --> I0701
I0701 --> I0702
I0202 --> I0801
I0801 --> I0802
I0301 --> I0802
I0301 --> I0901
I0202 --> I0901
I0601 --> I0901
I0201 --> I1001
I0301 --> I1001
I0401 --> I1001
I0503 --> I1001
I0503 --> I1002
I0701 --> I1002
I0802 --> I1002
I0901 --> I1002
I1001 --> I1201
I1002 --> I1201
I0702 --> I1201
I0502 --> I1201
I0602 --> I1201
style Wave0 fill:#f1f8e9,stroke:#8bc34a,stroke-width:1px
style Wave1 fill:#e0f7fa,stroke:#00bcd4,stroke-width:1px
style Wave2 fill:#e8eaf6,stroke:#3f51b5,stroke-width:1px
style Wave3 fill:#fce4ec,stroke:#e91e63,stroke-width:1px
style Wave4 fill:#fff3e0,stroke:#ff9800,stroke-width:1px
style Wave5 fill:#ede7f6,stroke:#673ab7,stroke-width:1px
style Wave6 fill:#f3e5f5,stroke:#9c27b0,stroke-width:1px
style Wave7 fill:#ffebee,stroke:#f44336,stroke-width:2px
2. 串行依赖关键路径 (Critical Path)
系统的最短端到端主链路关键路径(耗时最长、环环相扣的核心串行线)如下:
$$\begin{aligned} \text{ISSUE-01-03 (课程库)} &\longrightarrow \text{ISSUE-02-01 (创建计划)} \ &\longrightarrow \text{ISSUE-02-02 (配置本期课程)} \ &\longrightarrow \text{ISSUE-04-01 (课次排课与冲突锁)} \ &\longrightarrow \text{ISSUE-07-01 (课次考勤打卡)} \ &\longrightarrow \text{ISSUE-10-02 (计划综合统计)} \ &\longrightarrow \text{ISSUE-12-01 (端到端验收)} \end{aligned}$$
同时并行的辅关键路径为参训与住宿线:
\text{ISSUE-01-02 (学员)} \longrightarrow \text{ISSUE-03-01 (名单)} \longrightarrow \text{ISSUE-05-01 (住宿)} \longrightarrow \text{ISSUE-05-03 (报到)} \longrightarrow \text{ISSUE-07-01 (考勤)}
3. 并行开发泳道分析
通过上述 DAG,可以清晰划分出以下 4 条高并发研发泳道:
泳道 A:基础设施与主数据泳道 (可完全自由推进)
ISSUE-11-01(RBAC权限)ISSUE-11-02(字典配置方案)ISSUE-06-01(外部 Adapter SPI & Mock)ISSUE-01-01(教师主数据)ISSUE-01-02(学员主档与脱敏)ISSUE-01-03(课程库)ISSUE-01-04(教学空间资源)ISSUE-01-05(宿舍基础房间)
特征: 相互之间完全解耦,可由多位开发者或 Gemini Flash 代理人并行同时开工,0 依赖等待。
泳道 B:排课教学线 (依赖课程与计划)
ISSUE-02-01(计划立项)ISSUE-02-02(本期课程)ISSUE-04-01(排课与排他锁)ISSUE-04-02(完整课表聚合)
特征: 教师与教室准备完毕后,沿开班排课主干顺畅推进。
泳道 C:学员生活与报到线 (依赖名单与宿舍)
ISSUE-03-01(名单与档案)ISSUE-03-02(Excel批量导入)ISSUE-05-01(住宿智能预分配)ISSUE-05-02(调房与走读)ISSUE-06-02(门禁异步下发重试)ISSUE-05-03(学员报到确认)
特征: 围绕
enrollment_id展开,不依赖具体课次,主要管理学员个人生活保障。
泳道 D:成效考核与外部数据接入线
ISSUE-08-01(成绩科目与权重)ISSUE-08-02(成绩录入与台账矩阵大表)ISSUE-09-01(外部自主学习记录接入)
特征: 在学员名单和本期课程确定后即可独立推进,与排课考勤互不干扰。