Files
railwaysystem/doc/RailwaySystem 一期 P0 需求确认表 V0.1.md
T

16 KiB
Raw Blame History

RailwaySystem 一期 P0 需求确认表 V0.1

用途: 内部评审 / 与老师或甲方进行需求确认 适用阶段: 需求分析完成后、PRD 和数据库正式设计前 确认原则:

  • 当前已有明确要求的,不重复推翻;
  • 原需求没有明确的,不由开发人员自行决定;
  • 每个问题先给出当前情况,再给出推荐方案;
  • “推荐方案”属于项目组设计建议,不代表甲方已经确认;
  • P0 问题确认完成后,再冻结业务基线 V1.0。

一、P0 问题总览

编号 核心问题 是否影响数据库结构 优先级
P0-01 一个开班计划是一门课程还是多门课程? 极高 必须首先确认
P0-02 学员如何进入一个培训班? 极高 必须确认
P0-03 课程表如何形成,是否存在“课次”? 极高 必须确认
P0-04 宿舍什么时候、通过什么方式分配? 高 必须确认
P0-05 开班后 X 日未报到中的 X 是多少? 中 必须确认规则
P0-06 综合成绩如何计算? 高 必须确认
P0-07 什么条件算“完成培训 / 结业”? 高 必须确认

建议确认顺序:

flowchart LR
    A[P0-01 开班与课程关系]
    --> B[P0-02 参训名单形成]
    --> C[P0-03 课程表与课次]
    --> D[P0-04 宿舍分配]
    --> E[P0-05 报到时限]
    --> F[P0-06 成绩规则]
    --> G[P0-07 结业规则]

其中前三项会直接决定后续核心数据模型。


二、P0-01 一个开班计划究竟是一门课程还是多门课程?

1. 当前需求情况

现有需求表述为:

创建开班计划时设置“所属课程”。

当前数据表中,一个 train_class_plan 也只保存一个 c_id。

因此现有材料实际上更接近:

flowchart LR
    A[课程:钢结构检测]
    --> B[钢结构检测第一期]

    A --> C[钢结构检测第二期]

也就是:

一个开班计划对应一门课程。


2. 但现实业务可能存在另一种模式

例如一次铁路综合培训:

flowchart TD
    A[铁路综合培训第一期]

    A --> B[安全理论]
    A --> C[钢结构检测]
    A --> D[VR巡检]
    A --> E[实操考核]

这种情况下:

一个培训班包含多门课程。


3. 两种方案差异

对比项 方案A:一班一课 方案B:一班多课
业务简单度 简单 更符合综合培训
当前文档匹配度 高 当前文档未明确
数据库复杂度 低 高
课表设计 相对简单 必须设计班级-课程关系
成绩 一期对应一门课程成绩 一期会有多门课程成绩
签到 围绕该课程 需要区分不同课程
后续扩展性 一般 更强

4. 项目组推荐

推荐优先确认真实业务,再决定

如果培训基地现实中通常是:

“开一个培训班,里面安排若干课程。”

则建议采用:

一个培训班包含多门课程。

如果真实业务实际上就是:

“某一门课程开一期培训。”

则保持当前:

一班一课。

当前建议倾向

从“报到后查看课程表”“不同教师、不同场地、实训”等需求来看,多课程培训班在业务上更自然。

但这一点不能直接由开发组拍板。


5. 需要老师 / 甲方确认

请明确:

一个开班计划是否允许配置多门课程?

确认项:

  • 只能关联一门课程
  • 可以关联多门课程
  • 当前一期先一门课程,后续再支持多门课程

最终确认结果

待填写:


三、P0-02 学员如何进入一个培训班?

1. 当前需求情况

现有需求中已经出现:

招生人数
报名条件
报名人数
开班报到

但没有明确:

一个学员是通过什么业务动作成为“本期参训人员”的。


2. 可能存在的方式

flowchart TD
    A[学员进入某一期培训]

    A --> B[管理员手动添加]
    A --> C[Excel批量导入]
    A --> D[学员自行报名]
    A --> E[报名后管理员审核]
    A --> F[外部系统下发名单]

3. 为什么这是核心问题

如果不解决这一点,系统只能知道:

张三这个人存在。

却无法明确知道:

张三是否属于钢结构检测第一期。

而后续:

flowchart LR
    A[参训资格]
    --> B[报到]
    --> C[住宿]
    --> D[签到]
    --> E[成绩]

全部依赖这层关系。


4. 项目组推荐

一期建议至少支持:

管理员手动加入 + Excel 批量导入。

理由:

  • 实现简单;
  • 适合培训基地集中组织人员;
  • 不需要先开发复杂报名门户;
  • 后续可以扩展学员自主报名或外部系统同步。

推荐一期流程:

flowchart LR
    A[学员库]
    --> B[管理员选择 / Excel导入]
    --> C[形成参训名单]
    --> D[等待报到]

5. 需要老师 / 甲方确认

请确认参训名单来源:

  • 管理员手动添加
  • Excel 批量导入
  • 学员自行报名
  • 学员报名 + 管理员审核
  • 外部系统同步
  • 多种方式同时支持

另外确认:

是否存在“报名审核”这个业务步骤?

  • 有
  • 无

最终确认结果

待填写:


四、P0-03 课程表到底如何形成?

1. 当前需求情况

需求明确要求:

学员报到后能够查看课程表。

当前签到表中也存在:

本节课程开始时间
本节课程结束时间

说明业务实际上已经存在:

某个具体时间真正发生的一次教学活动。


2. 建议定义“课次”

例如:

9月20日 09:00-11:00
钢结构检测理论
王老师
201教室

这一条就可以称为:

一次课次 / Lesson。


3. 推荐业务关系

flowchart TD
    A[开班计划]
    --> B[课次1]
    A --> C[课次2]
    A --> D[课次3]

    B --> B1[课程]
    B --> B2[教师]
    B --> B3[时间]
    B --> B4[教室 / 场地]

签到也因此变成:

flowchart LR
    A[学员]
    --> B[某次课次]
    --> C[签到记录]

而不是只记录:

张三签到过“钢结构检测”。


4. 项目组推荐

建议正式引入:

课次 / 教学安排 Lesson

每条课次至少包含:

所属培训班
所属课程
授课教师
开始时间
结束时间
教室 / 实训场地

这样:

  • 课程表可以生成;
  • 签到有准确对象;
  • 教师冲突可以判断;
  • 教室冲突可以判断;
  • 后续课程统计也更加清晰。

5. 需要老师 / 甲方确认

请确认:

一个培训班是否会多次上课?

  • 是
  • 否

每次教学是否需要独立配置:

  • 日期
  • 开始时间
  • 结束时间
  • 课程
  • 教师
  • 教室
  • 实训场地

是否同意以“课次”作为课程表基本单位?

  • 同意
  • 不同意
  • 需要其他形式

最终确认结果

待填写:


五、P0-04 宿舍什么时候分配?

1. 当前需求情况

需求确定:

报到后可以获取所分配宿舍。

但是没有明确宿舍到底什么时候被分好。


2. 可能的三种流程

方案A:报到前预分配

flowchart LR
    A[确定参训名单]
    --> B[提前分配宿舍]
    --> C[学员到场]
    --> D[报到]
    --> E[直接展示宿舍]

方案B:报到时自动分配

flowchart LR
    A[学员报到]
    --> B[系统检查可用床位]
    --> C[自动匹配]
    --> D[分配成功]
    --> E[下发门禁]

方案C:管理员现场分配

flowchart LR
    A[学员报到]
    --> B[管理员选择宿舍]
    --> C[确认入住]
    --> D[下发门禁]

3. 项目组推荐

一期建议采用:

报到前可预分配 + 管理员可调整。

系统可以根据:

性别
培训班
剩余床位

提供自动推荐。

但是一期不一定必须做到完全无人值守自动分床。

推荐流程:

flowchart LR
    A[参训名单]
    --> B[系统推荐宿舍]
    --> C[管理员确认 / 调整]
    --> D[形成住宿安排]
    --> E[报到展示]
    --> F[下发门禁]

这样风险最低。


4. 另外必须确认

是否所有培训学员都需要住宿?

可能存在:

住宿学员
不住宿学员

因此住宿不能默认是所有人强制产生。


5. 需要老师 / 甲方确认

宿舍分配方式:

  • 报到前预分配
  • 报到时自动分配
  • 报到时管理员分配
  • 支持预分配,同时允许现场调整

是否所有人必须住宿:

  • 是
  • 否

如果不住宿:

是否仍然允许正常报到和参加培训?

  • 是
  • 否

最终确认结果

待填写:


六、P0-05 开班后 X 日未报到中的 X 是多少?

1. 当前需求情况

当前功能分析明确提出:

开班后 X 日内未报到
→ 自动取消资格
→ 释放宿舍资源

但 X 没有确定。


2. 需要注意的问题

这其实不只是一个数字。

还需要确定:

flowchart TD
    A[超过报到期限]

    A --> B{是否请假?}

    B -->|否| C[取消参训资格]
    C --> D[释放宿舍]

    B -->|是| E[是否允许延期报到?]

3. 项目组推荐

不建议把“X天”直接写死在程序中。

建议做成:

开班计划可配置的报到截止时间 / 报到有效期。

例如:

开班时间:
9月20日 09:00

报到截止:
9月21日 18:00

比固定:

开班后 1 天

更灵活。


4. 需要老师 / 甲方确认

规则采用:

  • 固定 X 天
  • 每个开班计划独立设置报到截止时间

如果固定:

X = ______ 天

另外确认:

请假学员超过期限是否取消资格?

  • 是
  • 否
  • 管理员人工决定

超期取消以后是否自动释放宿舍?

  • 是
  • 否

最终确认结果

待填写:


七、P0-06 综合成绩如何计算?

1. 当前需求情况

现有成绩包括:

课程成绩
实训成绩
考核成绩

同时需求要求:

支持按权重自动计算综合成绩。

但是没有说明权重。


2. 可能的计算方式

例如:

flowchart TD
    A[课程成绩 30%] --> D[综合成绩]
    B[实训成绩 40%] --> D
    C[考核成绩 30%] --> D

则:

综合成绩
=
课程成绩 × 30%
+
实训成绩 × 40%
+
考核成绩 × 30%

3. 关键问题

不仅要确认比例,还要确认:

所有课程是否使用同一套比例?

例如:

理论课程

课程成绩 60%
考试成绩 40%

实训课程

理论 20%
实训 60%
考核 20%

显然可能不同。


4. 项目组推荐

建议:

权重可配置,不在代码中固定。

推荐层级:

flowchart LR
    A[课程]
    --> B[成绩规则]

    B --> C[理论权重]
    B --> D[实训权重]
    B --> E[考核权重]

一期至少支持课程级配置。


5. 需要老师 / 甲方确认

综合成绩:

  • 所有课程统一权重
  • 每门课程独立配置权重

若统一:

课程成绩:____ %
实训成绩:____ %
考核成绩:____ %

总计必须为:

100%

另外:

缺少某一类成绩时怎么办?

例如某课程没有实训。

  • 权重重新计算
  • 该项按 0 分
  • 每门课程自己配置成绩组成

最终确认结果

待填写:


八、P0-07 什么叫“培训完成 / 结业”?

1. 当前需求情况

当前需求已经出现:

结业后宿舍门禁权限自动失效。

但是没有定义:

什么条件才叫结业。


2. 可能的规则

flowchart TD
    A[培训结束]

    A --> B{是否满足结业条件}

    B -->|是| C[结业]
    B -->|否| D[未结业 / 待处理]

    C --> E[保存培训历史]
    C --> F[失效宿舍门禁]
    C --> G[形成最终统计]

结业条件可能涉及:

签到率
成绩
学习时长
必修课程完成情况
管理员确认

3. 几种典型方案

方案A:时间结束即结业

开班结束
=
所有学员自动结业

优点:

简单。

缺点:

即使长期缺勤或者没成绩,也会结业。


方案B:满足条件自动结业

例如:

签到率 ≥ 80%
综合成绩 ≥ 60

满足后系统自动结业。


方案C:系统判断 + 管理员确认

系统给出:

建议结业
不满足条件

最后管理员确认。


4. 项目组推荐

一期推荐:

系统计算是否满足条件 + 管理员最终确认结业。

这样既可以自动化,又能处理特殊情况。

推荐流程:

flowchart LR
    A[培训结束]
    --> B[系统统计]
    --> C[判断结业条件]
    --> D[管理员确认]
    --> E[正式结业]
    --> F[失效对应培训权限]

5. 特别需要注意

结业应该针对:

某一次参训

而不是直接把:

张三这个人的全局状态改成“结业”。

因为张三未来还可能参加其他培训。


6. 需要老师 / 甲方确认

结业方式:

  • 开班结束自动结业
  • 满足条件自动结业
  • 系统判断 + 管理员确认

如果需要条件,请确认:

签到率要求

≥ ______ %

综合成绩要求

≥ ______ 分

学习时长是否有要求

  • 有:________
  • 无

是否允许管理员特殊处理

  • 是
  • 否

最终确认结果

待填写:


九、推荐的一期默认方案

如果当前必须先做一版原型,而甲方暂时无法全部确认,项目组可以暂时按下面方案设计。

注意:以下全部属于项目组推荐默认值,不代表已确认需求。

问题 推荐默认方案
开班与课程 暂按一个开班对应一门课程,确认后再决定是否升级一班多课
学员进入培训 管理员添加 + Excel批量导入
课程表 引入独立课次 Lesson
宿舍分配 提前预分配 + 管理员可调整
报到截止 每期开班单独配置截止时间
综合成绩 课程级可配置权重
结业 系统判断 + 管理员最终确认

十、7 个 P0 问题之间的关系

这七个问题不是互相独立的。

flowchart TD
    A[P0-01 开班与课程关系]
    --> B[P0-03 课程表 / 课次]

    A --> C[P0-02 参训名单]

    C --> D[P0-04 宿舍分配]
    C --> E[P0-05 报到时限]

    B --> F[P0-06 成绩规则]

    D --> G[P0-07 结业规则]
    E --> G
    F --> G

因此建议会议不要随机讨论。

应该按:

P0-01 → P0-02 → P0-03 → P0-04 → P0-05 → P0-06 → P0-07

依次确认。


十一、确认完成后的输出

当 7 个 P0 问题确认完以后,需要把结果回填到:

《RailwaySystem 一期需求分析与业务基线》

并升级为:

V1.0 业务基线

随后才能正式进入:

flowchart LR
    A[P0确认完成]
    --> B[业务基线V1.0]
    --> C[PRD]
    --> D[业务模型]
    --> E[数据库V2]
    --> F[API / 页面]
    --> G[Epic / Issue]
    --> H[开发]

十二、会议最终确认记录

编号 最终结论 确认人 日期
P0-01
P0-02
P0-03
P0-04
P0-05
P0-06
P0-07

当以上七项全部填写后:

一期核心业务模型才可以视为基本冻结。