8.4 KiB
8.4 KiB
RailwaySystem Phase 3:P0 Epic / Issue 任务拆分总纲
阶段状态: Phase 3 任务分解完成稿 (正式基线) 业务最高基线: 一期 PRD V1.0 数据库基线:
db-v2-migration-passed-20260914(21张表 KingbaseES 物理迁移验证通过) 代码生成器基线:generator-v2-ready-20260914(Kingbase 只读验证通过) API 契约基线:api-v2-contract-v1.0.1(89 个物理 API 端点,P0: 53, P1: 34, P2: 2) 审查基线:docs/issues-v1/09_issue_review_round1.md(Review Round 1 Final = A) 实施策略: 严格以 PRD V1.0 业务闭环为主线,以 Database V2 为持久化底座,聚焦 P0 最小闭环。
1. 拆分目标与核心原则
本阶段旨在将 api-v2-contract-v1.0.1 中的 53 个 P0 API 以及支撑业务运转的核心基础设施,转化为可独立开发、可代码审查 (Review)、可自动化测试、可业务验收的 Epic 与 Issue。
本阶段严禁编写任何业务代码,所有拆解严格以 api-v2-contract-v1.0(commit 67543e04)及 V1.0.1 修订为基线展开。
1.1 核心原则与硬约束
- 业务能力驱动,拒绝单表 CRUD: 严禁以数据库物理表为单位拆分 Issue(如禁止设立“开发 train_lesson CRUD”),必须按“可独立交付与验收的业务动作/能力”进行拆分(如“实现课次排课与三类资源冲突检测”);
- 只拆 P0,严格范围控制:
- 锁定 53 个 P0 API 作为本轮研发唯一核心目标;
- 34 个 P1 辅助 API 与 2 个 P2 远期 API 仅在
07_p1_p2_backlog.md中登记备查,不计入开发排期。
- 主数据最小必要集合原则:
- 基础主数据不作为全量阻塞项,仅建设支撑主业务链路所必需的最小集合(Teacher, Student, Course, Classroom, TrainingSite, Dormitory)。
- 不变量与并发控制强行绑定:
- 5 大跨表业务硬不变量(INV-01 ~ INV-05)与 1 项报到生命周期策略,责任落实到唯一的责任 Issue;
- 排课并发冲突(教师/教室/场地/班级)与宿舍分配防超卖(行锁
SELECT FOR UPDATE+ 性别隔离),必须在 Issue 中明确 SQL 与锁策略。
- 外部对接 Mock 优先与事务轻量解耦:
- 外部硬件系统(班牌、门禁、VR/3D)一期一律采用 SPI + Mock 桩实现,严禁引入 MQ、Kafka、RabbitMQ、Outbox 等重型中间件;
- 外部调用一律置于数据库本地事务之外,通过事务提交后(
afterCommit)轻量解耦触发,外部失败绝不回滚已提交的业务数据,支持手动重试。
2. 主链路业务开发优先级
系统的所有 Issue 依赖与开发批次(Wave),均严格围绕以下最短业务闭环主链路展开推进:
flowchart TD
M1[基础数据: 教师 / 学员 / 课程 / 空间] --> M2[创建培训计划 Plan]
M2 --> M3[配置本期课程 PlanCourse]
M3 --> M4[添加参训名单 Enrollment]
M4 --> M5[课次排课与冲突检测 Lesson]
M5 --> M6[聚合生成完整课表 Timetable]
M4 --> M7[住宿批量预分配 Accommodation]
M7 --> M8[学员报到确认 Report]
M5 --> M9[电子班牌打卡考勤 Attendance]
M8 --> M9
M9 --> M10[成绩项目与打分台账 Score]
M4 --> M11[外部实训记录接入 StudyRecord]
M10 --> M12[培训综合统计与工作台 Statistics/Workbench]
M11 --> M12
M12 --> M13[结束培训计划 Complete Plan]
style M1 fill:#e1f5fe,stroke:#0288d1,stroke-width:2px
style M2 fill:#e8f5e9,stroke:#388e3c,stroke-width:2px
style M4 fill:#fff3e0,stroke:#f57c00,stroke-width:2px
style M5 fill:#f3e5f5,stroke:#7b1fa2,stroke-width:2px
style M7 fill:#e0f2f1,stroke:#00796b,stroke-width:2px
style M9 fill:#fbe9e7,stroke:#d84315,stroke-width:2px
style M10 fill:#fffde7,stroke:#fbc02d,stroke-width:2px
style M13 fill:#ede7f6,stroke:#512da8,stroke-width:2px
3. 全局核心统计指标
经严密分解与审查,Phase 3 输出的核心统计指标如下:
| 统计维度 | 指标数值 | 备注说明 |
|---|---|---|
| Epic 总数 | 12 个 | 覆盖主数据、核心计划、排课、住宿、门禁、考勤、成绩、学习、统计、权限字典与端到端验收 |
| P0 Issue 总数 | 26 个 | 每个 Issue 为 0.5~2 个开发日的独立可验收业务能力 |
| P0 API 覆盖率 | 53 / 53 (100%) | 契约逐条提取 53 个 P0 API 全量映射闭环,无遗漏无多余 |
| Contract Gap 状态 | CG-01: RESOLVED CG-02: RESOLVED |
CG-01 采纳 53 个逐 API 正式口径;CG-02 扩展 VO 回显字段闭环 |
| 开发 Wave 数量 | 8 个 | Wave 0 (准备) ~ Wave 7 (验收),层层递进 |
| 首批可立即开发 Issue | 8 个 | Wave 0 (3个) + Wave 1 中不依赖 Plan 的基础数据 (5个) |
| 必须等待 Module B 的 Issue | 13 个 | 涵盖排课、住宿分配、报到、考勤、成绩配置/录入、学习记录、工作台与端到端验收 |
| Generator 策略分布 | YES: 4, PARTIAL: 11, NO: 11 | 机器校验:4 + 11 + 11 = 26 (符合 P0 Issue 总数 26) |
| Recommended Agent 分工 | Gemini: 11, Codex: 15 | Gemini 负责基础 CRUD/VO/权限字典;Codex 负责高并发锁/复杂事务/不变量/端到端 |
4. 契约偏差审查与裁决落地 (Contract Gap Analysis)
在对齐 api-v2-contract-v1.0 与 Issue 拆分过程中登记的 2 项契约偏差,技术负责人已作出正式裁决并全部闭环:
4.1 CG-01:Module A P0 统计数字与逐 API 标注矛盾【状态:RESOLVED】
- 裁决结论: 详细 API 标记优先于错误摘要统计;P0 正式集合以 53 个逐 API 标记为准。
- 落地执行:
- 宿舍 4 个基础维护 API(列表、详情、新增、选项)属于一期 P0,因为 Accommodation 住宿主流程强依赖可维护的宿舍房间基础资源、核定容量与性别隔离属性;
- Module A P0 确认为 20 个,全局 P0 集合确定为 53 个(Module A: 20, Module B: 17, Module C: 9, Module D: 7);
- 由
ISSUE-01-05完整承揽,P0 覆盖率正式达成 53/53 (100%)。
4.2 CG-02:课次编辑所需字段与单查接口缺失【状态:RESOLVED】
- 裁决结论: 通过扩展 TimetableLessonItemVO 解决;不新增 Lesson 详情 API。
- 落地执行:
- 严禁在 Issue 阶段或契约中新增
GET /train/lessons/{lessonId}端点,保持 API Contract 接口数量稳定; - 在
docs/api-v2/06_dto_vo_catalog.md中补齐TimetableLessonItemVO的关键外键关联字段(planCourseId、tId、venueType、classRoomId、classRoomName、siteId、siteName、remark); - 前端通过完整课表
PlanTimetableVO直接回显 Lesson 编辑表单,随后调用既有的PUT /train/lessons/{lessonId},流程完全自洽闭环。
- 严禁在 Issue 阶段或契约中新增
5. 文档索引导航 (docs/issues-v1/)
本套 Issue 任务分解规范包含以下 10 篇文档:
| 序号 | 文档名称 | 核心内容 |
|---|---|---|
| 00 | 00_readme.md |
阶段总纲、最高原则、主链路、统计总览、Contract Gap 分析与文档索引 |
| 01 | 01_epic_overview.md |
12 个业务 Epic 概览、目标、业务边界与包含的 Issue 对应清单 |
| 02 | 02_p0_issue_backlog.md |
26 个 P0 Issue 详细技术卡片(严格包含 22 项技术定义与 Given/When/Then 验收准则) |
| 03 | 03_dependency_graph.md |
Mermaid DAG 依赖图,清晰展示串行依赖与并行泳道 |
| 04 | 04_wave_plan.md |
Wave 0 ~ Wave 7 开发推进批次计划、进入条件、产出目标与退出准则 |
| 05 | 05_agent_assignment.md |
Gemini Flash 与 Codex 研发分工建议及 Generator (YES/PARTIAL/NO) 执行策略 |
| 06 | 06_acceptance_matrix.md |
全链路追踪矩阵 (UC → API → Issue → Test) 及 5 大 Invariant / 1 项生命周期策略归属矩阵 |
| 07 | 07_p1_p2_backlog.md |
34 个 P1 辅助 API 与 2 个 P2 远期 API 的统一登记与后续演进规划 |
| 08 | 08_risk_register.md |
技术风险登记册、稳定资源锁策略、外部 Mock 隔离与 CG-01 裁决辅助表 |
| 09 | 09_issue_review_round1.md |
Phase 3 Issue Review Round 1 审查整改记录与结论报告 |