# RailwaySystem Phase 3:Issue 依赖关系有向无环图 (Dependency DAG) > **设计目标:** 明确各 Issue 之间的前后置依赖关系,清晰识别哪些任务必须串行推进、哪些任务可以无阻塞并行开发,指导团队实现资源利用率最大化。 --- ## 1. Issue 全景依赖拓扑图 (Mermaid DAG) ```mermaid flowchart TB subgraph Wave0["Wave 0:基线支撑 (可立即无前置并行启动)"] I1101["ISSUE-11-01
RBAC权限体系"] I1102["ISSUE-11-02
字典配置方案"] I0601["ISSUE-06-01
外部Adapter SPI与Mock"] end subgraph Wave1["Wave 1:基础主数据与计划立项 (可立即并行启动)"] I0101["ISSUE-01-01
教师主数据"] I0102["ISSUE-01-02
学员主档与脱敏"] I0103["ISSUE-01-03
课程库资料"] I0104["ISSUE-01-04
空间资源:教室与场地"] I0105["ISSUE-01-05
宿舍房间与楼宇"] I0201["ISSUE-02-01
培训计划全生命周期"] end subgraph Wave2["Wave 2:计划配课、参训与排课"] I0202["ISSUE-02-02
本期课程引入"] I0301["ISSUE-03-01
本期参训名单维护"] I0302["ISSUE-03-02
名单Excel批量导入"] I0401["ISSUE-04-01
排课与四维冲突排他锁"] I0402["ISSUE-04-02
完整课表聚合VO"] end subgraph Wave3["Wave 3:住宿、门禁与报到"] I0501["ISSUE-05-01
批量住宿预分配防超卖"] I0502["ISSUE-05-02
调房走读管理"] I0602["ISSUE-06-02
门禁afterCommit解耦同步"] I0503["ISSUE-05-03
学员报到与时限控制"] end subgraph Wave4["Wave 4:课次考勤"] I0701["ISSUE-07-01
课次打卡与INV-01"] I0702["ISSUE-07-02
考勤名单与人工修正"] end subgraph Wave5["Wave 5:成绩与学习记录"] I0801["ISSUE-08-01
成绩项目配置与INV-04"] I0802["ISSUE-08-02
成绩录入台账INV-02/05"] I0901["ISSUE-09-01
学习记录接入与INV-03"] end subgraph Wave6["Wave 6:工作台与成效统计"] I1001["ISSUE-10-01
培训计划综合工作台"] I1002["ISSUE-10-02
计划成效统计概览"] end subgraph Wave7["Wave 7:全链路端到端验收"] I1201["ISSUE-12-01
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` (外部自主学习记录接入) > **特征:** 在学员名单和本期课程确定后即可独立推进,与排课考勤互不干扰。