Files
railwaysystem/docs/issues-v1/03_dependency_graph.md
T

6.0 KiB
Raw Blame History

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 (外部自主学习记录接入)

特征: 在学员名单和本期课程确定后即可独立推进,与排课考勤互不干扰。