Files
railwaysystem/docs/issues-v1/01_epic_overview.md
T

14 KiB
Raw Blame History

RailwaySystem Phase 3:Epic 架构概览 (Epic Overview)

设计基线: 紧扣 PRD V1.0 业务闭环与 API Contract V1.0,严禁按 21 张数据库表机械建 Epic。 Epic 规划原则: 每一个 Epic 代表一个高内聚、有明确业务价值、对主链路有明确支撑的业务能力域。


1. Epic 汇总视图

系统一期 P0 研发共划分为 12 个核心 Epic,覆盖从基础设施、主数据、开班排课、过程执行、效果评估到端到端验收的完整闭环:

flowchart TB
    subgraph CoreBase["支撑基线与基础数据"]
        E11[EPIC-11 权限/字典/系统基线]
        E01[EPIC-01 基础主数据必要集合]
        E06[EPIC-06 门禁与外部设备Mock]
    end

    subgraph PlanCore["开班与排课核心"]
        E02[EPIC-02 培训计划与本期课程]
        E03[EPIC-03 参训人员管理]
        E04[EPIC-04 排课与课表管理]
    end

    subgraph Execution["过程执行支撑"]
        E05[EPIC-05 住宿与报到管理]
        E07[EPIC-07 课次考勤管理]
        E09[EPIC-09 外部学习记录接入]
    end

    subgraph Assessment["效果评估与结训"]
        E08[EPIC-08 成绩项目与成绩台账]
        E10[EPIC-10 计划统计与综合工作台]
    end

    subgraph Acceptance["端到端验收"]
        E12[EPIC-12 P0端到端业务闭环验收]
    end

    E11 --> E01
    E06 --> E05
    E06 --> E07
    E06 --> E09
    E01 --> E02
    E02 --> E03
    E02 --> E04
    E03 --> E05
    E04 --> E07
    E05 --> E07
    E07 --> E08
    E03 --> E09
    E08 --> E10
    E07 --> E10
    E02 --> E10
    E10 --> E12

    style CoreBase fill:#f5f5f5,stroke:#9e9e9e,stroke-width:1px
    style PlanCore fill:#e8f5e9,stroke:#4caf50,stroke-width:1px
    style Execution fill:#e1f5fe,stroke:#03a9f4,stroke-width:1px
    style Assessment fill:#fff8e1,stroke:#ffc107,stroke-width:1px
    style Acceptance fill:#fce4ec,stroke:#e91e63,stroke-width:2px

2. Epic 详细定义

EPIC-01 基础主数据必要集合 (Base Master Data)

  • Epic ID: EPIC-01
  • 业务目标: 为整个智慧培训业务链路提供最小必需的师资、人员、课程、教室、场地和宿舍主数据底座,支撑后续计划选课、排课冲突校验与住宿分配。
  • 包含 P0 Issue:
    • ISSUE-01-01: 师资主数据管理能力 (Teacher CRUD)
    • ISSUE-01-02: 学员主档建档与安全脱敏管理 (Student Security & Masking)
    • ISSUE-01-03: 课程库基础资料管理 (Course Base CRUD)
    • ISSUE-01-04: 教学空间资源维护(普通教室与实训场地) (Classroom & Site)
    • ISSUE-01-05: 宿舍房间与楼宇基础数据维护 (Dormitory Info & Cascading Options)
  • 对应 P0 API:
    • GET /train/teacher/list, GET /train/teacher/{tId}, POST /train/teacher, PUT /train/teacher/{tId}
    • GET /train/student/list, GET /train/student/{sId}, POST /train/student
    • GET /train/course/list, GET /train/course/{cId}, POST /train/course
    • GET /train/classroom/list, GET /train/classroom/{classRoomId}, POST /train/classroom
    • GET /train/training-site/list, GET /train/training-site/{siteId}, POST /train/training-site
    • GET /train/dormitory/list, GET /train/dormitory/{dormId}, POST /train/dormitory, GET /train/dormitory/options
  • 涉及数据表: train_teacher, train_student, train_course, train_classroom, train_training_site, train_dormitory_info
  • 明确不做什么: 不做教师资质多版本审批、不做学员主档多机构合并、不做课程版本流转、不做独立教学资源管理与班牌注册管理(属于 P1)。

EPIC-02 培训计划与本期课程 (Plan & Plan-Course)

  • Epic ID: EPIC-02
  • 业务目标: 实现培训班级项目的立项、编辑、周期维护与结训归档,并支撑本期教学课程的选定与课时引入。
  • 包含 P0 Issue:
    • ISSUE-02-01: 培训计划全生命周期创建与管理 (Plan Lifecycle)
    • ISSUE-02-02: 本期培训课程引入与配置 (Plan-Course Mapping)
  • 对应 P0 API:
    • GET /train/plans, POST /train/plans, GET /train/plans/{planId}, PUT /train/plans/{planId}, POST /train/plans/{planId}/complete
    • GET /train/plans/{planId}/courses, POST /train/plans/{planId}/courses
  • 涉及数据表: train_class_plan, train_plan_course
  • 明确不做什么: 不做多级立项审批流;一期结训不设考核不及格阻断结业的强制卡点(Review Round 1 明确剔除)。

EPIC-03 参训人员管理 (Enrollment Lifecycle)

  • Epic ID: EPIC-03
  • 业务目标: 建立特定培训计划与学员的强业务绑定关系(形成 enrollment_id),支持单名录入与 Excel 批量解析导入,提供参训全景档案查询。
  • 包含 P0 Issue:
    • ISSUE-03-01: 本期参训名单维护与单条录入 (Enrollment Core & Detail)
    • ISSUE-03-02: 参训人员 Excel 批量导入与防重校验 (Batch Enrollment Import)
  • 对应 P0 API:
    • GET /train/plans/{planId}/enrollments, POST /train/plans/{planId}/enrollments, GET /train/enrollments/{enrollmentId}
    • POST /train/plans/{planId}/enrollments/batch
  • 涉及数据表: train_enrollment, train_student
  • 明确不做什么: 不做复杂的退宿连带手续审批(仅做参训状态变更);批量导入错误行不引入异步消息通知,直接返回同步解析结果列表。

EPIC-04 排课与课表管理 (Scheduling & Timetable)

  • Epic ID: EPIC-04
  • 业务目标: 支撑培训班课程的教学时段排定,实现教师、普通教室、实训场地、班级时段四维冲突检测与数据库行级排他锁保护,聚合生成本班完整课程表。
  • 包含 P0 Issue:
    • ISSUE-04-01: 课次编排与多维度排课并发冲突检测 (Lesson Scheduling & Conflict Lock)
    • ISSUE-04-02: 培训计划完整课程表聚合展示 (Plan Timetable Aggregation)
  • 对应 P0 API:
    • POST /train/plans/{planId}/lessons, PUT /train/lessons/{lessonId}, POST /train/lessons/check-conflict
    • GET /train/plans/{planId}/timetable
  • 涉及数据表: train_lesson, train_plan_course, train_teacher, train_classroom, train_training_site
  • 明确不做什么: 不做遗传算法自动智能排课;不做复杂的周循环与双周排课规则;教师个人课表属于 P1。

EPIC-05 住宿与报到管理 (Accommodation & Report)

  • Epic ID: EPIC-05
  • 业务目标: 管理学员参训期间的生活保障与入班核验,包含批量智能预分房(严格按性别隔离与行锁防超卖)、单人调房、走读设定,以及学员现场报到与生命周期时限告警控制。
  • 包含 P0 Issue:
    • ISSUE-05-01: 批量住宿智能预分配与防超卖控制 (Batch Accommodation Allocation)
    • ISSUE-05-02: 住宿人工调房、走读设置与住宿安排查看 (Accommodation Adjustment & Roster)
    • ISSUE-05-03: 学员报到确认与生命周期时限控制 (Student Report & Lifecycle Policy)
  • 对应 P0 API:
    • POST /train/plans/{planId}/accommodations/preallocate
    • PUT /train/enrollments/{enrollmentId}/accommodation, PUT /train/enrollments/{enrollmentId}/accommodation/day-student, GET /train/plans/{planId}/accommodations
    • POST /train/enrollments/{enrollmentId}/report
  • 涉及数据表: train_accommodation, train_report_record, train_dormitory_info, train_enrollment
  • 明确不做什么: 不做水电费计量结算;房态实时网格看板属于 P1;报到逾期不做硬阻断数据库约束,采用弹性时限告警策略。

EPIC-06 门禁与外部设备Mock (Device Integration & Mock)

  • Epic ID: EPIC-06
  • 业务目标: 建立防腐适配器体系 (SPI),提供电子班牌人脸考勤、智能门禁授权、外部 VR/3D 学习记录对接的 Mock 实现与测试桩,并通过事务提交后(afterCommit)轻量解耦触发门禁同步,支持失败重试。
  • 包含 P0 Issue:
    • ISSUE-06-01: 外部设备适配器 SPI 体系与 Mock 桩实现 (Adapter SPI & Mocks)
    • ISSUE-06-02: 门禁授权事务后解耦下发与失败手工重试 (Door Auth After-Commit & Manual Retry)
  • 对应 P0 API:
    • POST /train/accommodations/{accommodationId}/auth/sync
  • 涉及数据表: train_dorm_auth, train_accommodation, train_student
  • 明确不做什么: 严禁对接真实厂家硬件私有协议;严禁引入 MQ、Kafka、RabbitMQ、Outbox 等重型中间件;门禁授权下发流水查询属于 P1。

EPIC-07 课次考勤管理 (Lesson Attendance)

  • Epic ID: EPIC-07
  • 业务目标: 围绕具体课次 (lesson_id) 与参训档案 (enrollment_id) 开展出勤管理,支撑班牌刷脸打卡签到/签退、任课教师实时查看课次考勤明细,以及异常出勤的人工修正与留痕。
  • 包含 P0 Issue:
    • ISSUE-07-01: 课次班牌打卡签到签退与跨班不变量防护 (Check-in/Check-out & Invariant INV-01)
    • ISSUE-07-02: 课次考勤名单查看与人工考勤状态修正 (Lesson Attendance Roster & Manual Rectification)
  • 对应 P0 API:
    • POST /train/attendance/sign-in, POST /train/attendance/sign-out
    • GET /train/lessons/{lessonId}/attendance, PUT /train/attendance/{checkinId}
  • 涉及数据表: train_attendance_record, train_lesson, train_enrollment
  • 明确不做什么: 不做基于 GPS 地理围栏的移动端打卡;人工补录未打卡记录属于 P1;不变量 INV-01(课次所属班级 == 学员参训班级)在此强制阻断。

EPIC-08 成绩项目与成绩台账 (Score Management)

  • Epic ID: EPIC-08
  • 业务目标: 实现培训班成绩考核科目与百分制权重配置,支持教师对单学员或批量录入成绩,强校验满分上限与跨班归属,生成全班加权综合得分台账大表与单人成绩单。
  • 包含 P0 Issue:
    • ISSUE-08-01: 本期成绩考核项与权重配置 (Score Items & Weight Config, Invariant INV-04)
    • ISSUE-08-02: 学员成绩录入、上限校验与全班成绩台账大表 (Score Entry, Matrix VO, Invariant INV-02 & INV-05)
  • 对应 P0 API:
    • GET /train/plans/{planId}/score-items, POST /train/plans/{planId}/score-items
    • POST /train/scores/entry, GET /train/plans/{planId}/scores/matrix, GET /train/enrollments/{enrollmentId}/scores
  • 涉及数据表: train_score_item, train_student_score, train_enrollment
  • 明确不做什么: 不做成绩发布审批流程;Excel 批量导入成绩属于 P1;严禁硬编码及格线与不合格阻断(仅计算 weightedTotalScore)。

EPIC-09 外部学习记录接入 (External Learning Records)

  • Epic ID: EPIC-09
  • 业务目标: 对接高铁驾驶模拟舱、VR 实训室、3D 拆装等外部专业设备推送的学习学时流水,提供防重复推送的唯一幂等处理与三态响应。
  • 包含 P0 Issue:
    • ISSUE-09-01: 外部实训系统自主学习流水幂等接入 (Learning Record Ingestion & Invariant INV-03)
  • 对应 P0 API:
    • POST /train/study-records/receive
  • 涉及数据表: train_study_duration, train_enrollment, train_plan_course
  • 明确不做什么: 不对接大文件视频播放断点与心跳上报;自主学习记录分页检索与单人流水详情属于 P1。

EPIC-10 计划统计与综合工作台 (Plan Workbench & Statistics)

  • Epic ID: EPIC-10
  • 业务目标: 为培训管理人员提供开班期间的“一站式计划综合工作台”与结训阶段的“计划综合统计概览”,聚合展示报到率、出勤率、课表进度、成绩分布与自主学时。
  • 包含 P0 Issue:
    • ISSUE-10-01: 培训计划综合工作台聚合服务 (Plan Workbench Aggregation)
    • ISSUE-10-02: 培训计划综合成效统计概览 (Plan Statistics Aggregation)
  • 对应 P0 API:
    • GET /train/plans/{planId}/workbench
    • GET /train/plans/{planId}/statistics/overview
  • 涉及数据表: 跨表只读聚合查询(train_class_plan, train_enrollment, train_lesson, train_attendance_record, train_student_score, train_study_duration)
  • 明确不做什么: 不做复杂的多维 OLAP 钻取报表;不引入 Elasticsearch / ClickHouse 等外部大数据分析引擎;多维度成绩下钻图表属于 P2。

EPIC-11 权限字典与系统基线支撑 (RBAC, Dict & System Baseline)

  • Epic ID: EPIC-11
  • 业务目标: 夯实系统运行底座,全面统一以 train:* 为前缀的 RBAC 菜单与按钮授权体系,规范化分类梳理 16 组培训业务字典,消除旧系统权限混乱扩散。
  • 包含 P0 Issue:
    • ISSUE-11-01: RuoYi RBAC 权限体系与按钮授权集成 (RBAC Migration & Train Permissions)
    • ISSUE-11-02: 培训业务数据字典与参数配置初始化方案 (Dictionary & SysConfig Strategy)
  • 对应 P0 API:
    • 支撑全部 53 个 P0 API 的鉴权拦截与前端按钮 v-hasPermi 显隐控制。
  • 涉及数据表: sys_menu, sys_role_menu, sys_dict_type, sys_dict_data, sys_config
  • 明确不做什么: 本轮严禁执行 007_dicts.sql 物理入库;不做动态自定义数据权限过滤规则(一期采用基于角色的标准 RBAC)。

EPIC-12 P0端到端业务闭环验收 (End-to-End Acceptance)

  • Epic ID: EPIC-12
  • 业务目标: 串联 17 个 P0 核心用例(UC-01 ~ UC-29),构建完整的端到端自动化测试链路与基线集成回归用例,确保最小业务闭环能够流畅无缝运转。
  • 包含 P0 Issue:
    • ISSUE-12-01: 智慧培训全生命周期主链路端到端集成测试与验收 (End-to-End Acceptance Suite)
  • 对应 P0 API:
    • 贯穿覆盖全部 53 个 P0 API 的链路式调用与数据验证。
  • 业务价值: 彻底杜绝“各个单接口测试通过,连起来无法走通完整培训班”的集成陷阱,作为 Phase 3 研发交付的最终质量闸门。