Files
railwaysystem/doc/RailwaySystem 智慧培训系统一期 PRD V0.9.md
T

23 KiB
Raw Blame History

RailwaySystem 智慧培训系统一期 PRD V0.9

产品名称: RailwaySystem 智慧培训系统
版本: V0.9
文档状态: 一期内部开发基线
适用阶段: PRD评审 → 业务模型设计 → 数据库V2 → API/页面设计 → Issue拆分
最终状态: 待现场验证后升级 V1.0

需求依据:

  1. 《学员管理系统相关需求.md》
  2. 《学员管理系统功能分析_20260831.md》
  3. 《学员管理系统数据表设计_20260907_1_.md》
  4. 当前项目组形成的《一期需求分析与业务基线》
  5. 《一期默认开发决策与需求假设》

需求状态说明

本 PRD 使用以下三类标识:

【确认】:现有一期需求已经明确要求。

【默认】:甲方暂未明确,为保证开发推进,由项目组采用的默认方案。

【扩展】:一期暂不完整实现,但底层设计需要避免阻塞未来扩展。


1. 产品背景

RailwaySystem 一期用于培训基地对培训活动进行全过程管理。

一期不是单纯开发若干独立管理页面,而是围绕:

“一次培训从准备、开班、人员组织、报到、住宿、培训实施,到成绩统计和学员画像的完整生命周期。”

开展建设。

原始一期需求已经明确包括课程管理、开班计划、报到、宿舍门禁、电子班牌签到、成绩、外部学习系统数据、学习时长及学员画像等能力。


2. 产品目标

2.1 一期核心目标

一期系统必须能够完整跑通以下培训闭环:

flowchart TD
    A[维护教师 / 学员 / 课程]
    --> B[创建开班计划]

    B --> C[确定参训人员]
    B --> D[安排课程表 / 课次]
    B --> E[安排宿舍等资源]

    C --> F[学员报到]
    D --> F
    E --> F

    F --> G[展示宿舍 / 教室 / 实训场地 / 课程表]
    G --> H[宿舍门禁授权]

    H --> I[正式培训]

    I --> J1[电子班牌签到]
    I --> J2[VR / 3D / 实训学习]
    I --> J3[成绩产生]

    J1 --> K[统计分析]
    J2 --> K
    J3 --> K

    K --> L[学员画像]
    L --> M[结业确认]
    M --> N[历史留存 / 本期权限失效]

2.2 一期成功标准

一期至少达到以下效果:

  1. 可以创建一门课程并组织一期培训;
  2. 可以建立本期参训学员名单;
  3. 可以形成课程表;
  4. 可以完成学员报到;
  5. 可以分配住宿并模拟门禁授权;
  6. 可以模拟电子班牌签到;
  7. 可以录入、导入或模拟接收成绩;
  8. 可以模拟接收 VR、3D 等学习记录;
  9. 可以统计签到率、成绩、学习时长;
  10. 可以生成学员画像;
  11. 可以完成一次培训结业处理;
  12. 全流程业务数据真实持久化,而不是仅页面演示。

3. 产品用户与角色

当前需求明确采用用户、角色、权限三级 RBAC,并预置管理员、教师、学员三种基础角色。

3.1 管理员

主要职责:

  • 管理教师;
  • 管理学员;
  • 管理课程;
  • 创建开班计划;
  • 维护参训名单;
  • 安排课程表;
  • 分配宿舍;
  • 处理报到异常;
  • 查看签到;
  • 管理成绩;
  • 查看统计和画像;
  • 处理结业;
  • 配置系统相关业务规则。

3.2 教师

主要职责:

  • 查看本人授课安排;
  • 查看所带培训班学员;
  • 查看或维护课程相关签到;
  • 录入成绩;
  • 导入成绩;
  • 查看本人授课相关统计。

具体数据范围通过权限配置控制。


3.3 学员

【确认】系统权限需求中存在学员角色。

一期主要允许学员查看本人相关信息,例如:

  • 本人课程;
  • 本人培训安排;
  • 本人课程表;
  • 本人住宿安排;
  • 本人成绩;
  • 本人培训记录。

具体是否提供独立学员端页面,由后续页面设计确定。


4. 一期范围

4.1 一期包含

flowchart LR
    A[人员管理]
    B[课程管理]
    C[开班管理]
    D[报到管理]
    E[宿舍管理]
    F[签到管理]
    G[成绩管理]
    H[数据接入]
    I[统计分析]
    J[学员画像]
    K[权限审计]

4.2 一期不包含

以下功能属于原始二期范围,本期不开发:

  • 平板端基地控制;
  • 平板人脸签到;
  • 教师通过平板分配实训工位;
  • 帽石系统;
  • 铁科院钢结构监测;
  • 智慧照明控制;
  • 智能工具箱;
  • 数字孪生故障模拟;
  • 电工实训箱;
  • 基地驾驶舱;
  • 摄像机调阅。

新增上述内容必须走需求变更。


5. 核心业务对象

5.1 对象定义

对象 定义
教师 承担培训授课的人员
学员 接受培训的人员
课程 描述“教什么”
开班计划 一次具体培训活动
参训关系 某学员参加某一期培训
课次 一次具体教学安排
教室 普通教学空间
实训场地 VR、3D、实训等培训空间
宿舍 / 床位 培训期间住宿资源
报到 学员针对某次培训完成到场确认
门禁授权 某学员在培训期间获得宿舍权限
签到 某学员参加具体课次的出勤记录
学习记录 外部学习系统产生的使用记录
成绩 学员培训过程中产生的考核结果
统计 对培训过程数据进行汇总
学员画像 根据统计数据形成综合特征
结业记录 某学员完成某次培训的结果

5.2 核心对象关系

flowchart TD
    T[教师]
    S[学员]
    C[课程]
    P[开班计划]

    PC[开班-课程关系]
    E[参训关系]
    L[课次]

    CL[教室]
    TS[实训场地]

    R[报到]
    ST[住宿安排]
    DA[门禁授权]

    AT[签到]
    LR[学习记录]
    SC[成绩]

    STA[统计]
    POR[画像]
    GR[结业]

    P --> PC
    C --> PC

    S --> E
    P --> E

    P --> L
    C --> L
    T --> L
    CL --> L
    TS --> L

    E --> R
    E --> ST
    ST --> DA

    E --> AT
    L --> AT

    E --> LR
    E --> SC

    AT --> STA
    LR --> STA
    SC --> STA

    STA --> POR
    STA --> GR

6. 默认业务假设

以下内容由于暂时无法与甲方确认,为当前开发默认值。

A-001 开班与课程

【默认】

第一版前端业务按:

一个开班计划选择一门主课程。

【扩展】

底层设计不能完全锁死一班一课,应为未来一班多课保留扩展能力。


A-002 参训名单

【默认】

一期支持:

  • 管理员从学员库加入;
  • Excel 批量导入。

暂不开发完整的学员自主报名流程。


A-003 课次

【默认】

一期正式引入:

Lesson / 课次。

课次作为课程表和签到的主要业务单位。


A-004 宿舍

【默认】

采用:

提前分配 / 推荐 + 管理员确认与调整。

允许存在“不住宿”学员。


A-005 报到期限

【默认】

每个开班计划独立配置:

  • 报到开始时间;
  • 报到截止时间。

不在代码中写死“开班后 X 天”。


A-006 成绩

【默认】

成绩权重允许按课程配置。

不把具体 30%、40%、30% 等比例写死。


A-007 结业

【默认】

采用:

系统计算结业建议 + 管理员最终确认。


7. 功能需求

7.1 人员管理

FR-PER-001 教师信息管理

【确认】

系统应支持教师信息:

  • 查看;
  • 新增;
  • 编辑;
  • 状态管理;
  • 逻辑删除。

教师需求还包括:

  • 授课履历;
  • 资质证书;
  • 证书到期提醒;
  • 操作日志。

验收条件

  • 教师可以创建;
  • 教师历史信息不会因离职被物理删除;
  • 已存在授课历史的教师仍可被查询;
  • 关键修改存在审计记录。

FR-PER-002 学员信息管理

【确认】

系统支持:

  • 查看;
  • 新增;
  • 编辑;
  • Excel 批量导入;
  • 人脸数据维护;
  • 敏感字段保护;
  • 学习轨迹查看。

开发修正

现有数据库中的:

学号
院系
专业
班级

等大学场景字段不能直接作为最终模型依据。

具体字段应在数据库 V2 阶段根据培训基地人员模型重新调整。


7.2 课程管理

FR-COURSE-001 课程基本信息

【确认】

管理员或教师可以创建、编辑、删除、查看课程。

课程至少包含:

  • 课程编码;
  • 名称;
  • 类型;
  • 时长;
  • 教学目标;
  • 教学内容;
  • 文档;
  • 视频;
  • 模型;
  • 实训场景资源。

FR-COURSE-002 课程状态

【确认】

课程状态:

stateDiagram-v2
    [*] --> 草稿
    草稿 --> 待审核
    待审核 --> 已发布
    待审核 --> 草稿 : 审核退回
    已发布 --> 已归档

发布后的课程可以用于开班。


FR-COURSE-003 课程资源

【确认】

课程可以关联:

  • 文档;
  • 视频;
  • 3D设备拆解模型;
  • 实训场景;
  • 其他链接型资源。

一期负责资源关联和展示,不重新开发 VR、3D 等外部教学系统。


7.3 开班计划管理

FR-PLAN-001 创建开班计划

【确认】

至少包括:

  • 开班名称;
  • 所属课程;
  • 开始时间;
  • 结束时间;
  • 培训地点;
  • 授课教师;
  • 招生人数;
  • 报名条件。

【默认】

增加:

  • 报到开始时间;
  • 报到截止时间。

FR-PLAN-002 开班状态

【确认】

未开始
报名中
进行中
已结束
已取消

现有数据库缺少“报名中”,数据库 V2 需要修正。


FR-PLAN-003 开班复制

【确认】

可以复制已有开班计划快速创建下一期。

复制后:

  • 生成新的开班计划;
  • 时间允许重新填写;
  • 不默认复制历史签到、成绩、报到等结果数据。

FR-PLAN-004 教师冲突检测

【确认】

同一教师在时间重叠情况下应产生冲突告警。

【默认】

一期默认:

告警,但管理员确认后允许保存。

该规则后续现场验证。


7.4 参训人员管理

FR-ENROLL-001 加入参训学员

【默认】

支持:

  1. 从学员库选择;
  2. Excel 批量导入。

形成:

学员 + 开班计划 = 参训关系。


FR-ENROLL-002 防重复

同一学员不得重复加入同一开班计划。


FR-ENROLL-003 参训来源

建议记录:

MANUAL
EXCEL
SELF_APPLY
EXTERNAL

一期实际启用:

MANUAL
EXCEL

FR-ENROLL-004 招生人数

【确认】

系统显示当前参训人数。

达到计划招生人数 90% 时产生提醒。

【默认】

超过招生人数时:

先告警,不直接硬性阻断。


7.5 课次 / 课程表管理

FR-LESSON-001 创建课次

【默认】

管理员为开班计划配置课次。

课次至少包含:

  • 开班计划;
  • 课程;
  • 教师;
  • 开始时间;
  • 结束时间;
  • 教室或实训场地。

FR-LESSON-002 课程表

一个开班计划的所有课次组合为课程表。

flowchart TD
    A[开班计划]
    --> B[课次1]
    --> B1[时间 / 教师 / 地点]

    A --> C[课次2]
    --> C1[时间 / 教师 / 地点]

    A --> D[课次3]
    --> D1[时间 / 教师 / 地点]

FR-LESSON-003 冲突检测

系统应能够检测:

  • 同教师时间冲突;
  • 同教室时间冲突;
  • 同实训场地时间冲突。

第一版以告警为主。


7.6 报到管理

FR-REPORT-001 身份识别

【确认】

信息查询一体机支持:

  • 身份证;
  • 人脸识别。

FR-REPORT-002 报到资格检查

系统识别学员后检查:

  1. 是否存在该学员;
  2. 是否属于当前开班;
  3. 是否已经报到;
  4. 是否超过报到期限;
  5. 是否存在特殊状态。

FR-REPORT-003 人脸失败人工核验

【确认】

人脸识别失败时进入管理员人工核验。


FR-REPORT-004 报到结果

【确认】

成功后向学员展示:

  • 宿舍;
  • 教室;
  • 实训场地;
  • 课程表。

FR-REPORT-005 报到状态

【确认】

未报到
已报到
请假
放弃

现有数据库缺少“放弃”,数据库 V2 必须修正。


FR-REPORT-006 超期处理

【确认】

需求提出超期未报到需要取消资格并释放宿舍。

【默认】

第一版采用:

超过截止时间
→ 标记超期
→ 通知管理员
→ 管理员确认取消

后续可以配置成自动取消。


7.7 宿舍管理

FR-DORM-001 宿舍资源

【确认】

宿舍需要支持:

楼栋
→ 楼层
→ 房间
→ 床位

状态包括:

空置
部分入住
已满
维修中

现有数据表结构不足,需要数据库 V2 调整。


FR-DORM-002 住宿安排

【默认】

系统可以根据:

  • 性别;
  • 培训班;
  • 可用床位;

提供住宿推荐。

管理员最终确认。


FR-DORM-003 不住宿

【默认】

参训学员允许设置:

不住宿。

不住宿不得影响正常参训和报到。


7.8 宿舍门禁

FR-ACCESS-001 自动授权

【确认】

住宿安排确认后,根据宿舍结果向对应智能门锁下发人脸数据。


FR-ACCESS-002 下发结果

必须记录:

  • 下发时间;
  • 下发结果;
  • 成功;
  • 失败;
  • 重试情况。

FR-ACCESS-003 权限期限

门禁权限与本次培训时间相关。

培训结束 / 结业后,该次培训对应权限应失效。


FR-ACCESS-004 Mock

【默认】

一期开发阶段如果没有真实智能锁接口:

住宿安排
→ 创建门禁下发任务
→ Mock设备返回
→ 保存成功 / 失败

业务状态必须真实保存。


7.9 签到管理

FR-ATT-001 自动签到

【确认】

电子班牌支持:

  • 人脸;
  • 二维码。

签到自动进入系统。


FR-ATT-002 签到关联

【默认】

签到应主要关联:

参训学员
+
课次

而不是单纯:

学员
+
课程名称

FR-ATT-003 人工维护

【确认】

管理员 / 教师可以人工:

  • 新增;
  • 修正;
  • 补签;
  • 查看签到。

FR-ATT-004 重复签到

【确认】

同一学员同一教学活动一分钟内重复记录,只保留第一条有效记录。


FR-ATT-005 签到状态

一期至少支持:

正常
迟到
早退
缺勤

“请假如何进入签到率”仍作为现场验证事项。


7.10 成绩管理

FR-SCORE-001 成绩录入

【确认】

支持:

  • 管理员录入;
  • 教师录入;
  • Excel 导入;
  • 外部系统采集。

FR-SCORE-002 成绩类型

当前主要包括:

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

【扩展】

底层设计应避免只能永久支持三类成绩。


FR-SCORE-003 成绩状态

【确认】

stateDiagram-v2
    [*] --> 草稿
    草稿 --> 已提交
    已提交 --> 已发布
    已提交 --> 草稿 : 退回
    已发布 --> 修改审批
    修改审批 --> 已发布

FR-SCORE-004 发布锁定

【确认】

成绩发布以后不能直接修改。


FR-SCORE-005 修改历史

【确认】

记录成绩每次修改历史。


FR-SCORE-006 综合成绩

【默认】

成绩权重按课程配置。

例如演示数据可以采用:

理论 30%
实训 40%
考核 30%

但演示值不得作为硬编码业务规则。


7.11 外部数据接入

FR-INTEGRATION-001 学习系统

【确认】

对接对象包括:

  • 电子阅览室;
  • 听书机;
  • VR;
  • 3D拆解;
  • 3D巡检;
  • 实操系统。

FR-INTEGRATION-002 学习记录

至少记录:

  • 学员;
  • 来源系统;
  • 开始时间;
  • 结束时间;
  • 学习时长;
  • 同步时间。

FR-INTEGRATION-003 异常学习记录

【确认】

单次学习时长超过课程总时长 2 倍时标记异常并通知管理员。

【默认】

异常记录:

不删除原始数据。

采用:

正常
异常待审核
审核通过
审核驳回

FR-INTEGRATION-004 接口适配

【扩展】

业务层不直接耦合具体 VR / 3D 厂商。

采用:

flowchart LR
    A[外部设备 / 系统]
    --> B[设备适配层]
    --> C[统一平台数据模型]
    --> D[RailwaySystem业务]

开发阶段使用 Mock Adapter。

现场获取真实接口以后替换 Adapter。


7.12 统计分析

FR-STAT-001 学员统计

【确认】

支持:

  • 学习总时长;
  • 课程签到情况;
  • 课程成绩情况。

FR-STAT-002 课程统计

支持:

  • 课程参训人数;
  • 成绩分布;
  • 平均成绩;
  • 出勤情况。

FR-STAT-003 时间筛选

【确认】

支持:

日
周
月
自定义时间范围

FR-STAT-004 导出与下钻

【确认】

支持:

  • 数据导出;
  • 图表下钻;
  • 同比;
  • 环比。

7.13 学员画像

FR-PORTRAIT-001 画像数据来源

画像至少来源于:

考勤
理论成绩
实操成绩
学习时长

FR-PORTRAIT-002 标签

【确认】

支持动态规则标签。

例如:

签到率 > 90%
→ 勤勉学员

FR-PORTRAIT-003 雷达图

【确认】

至少展示:

  • 考勤;
  • 理论;
  • 实操;
  • 学习投入。

FR-PORTRAIT-004 快照

【确认】

支持历史画像快照。


FR-PORTRAIT-005 推荐

【确认】

可以根据画像标签生成定向学习资料推荐清单。

一期默认:

先在系统内展示推荐结果。

暂不开发短信、微信等外部推送渠道。


7.14 结业管理

FR-GRAD-001 结业判断

【默认】

系统根据:

  • 签到率;
  • 综合成绩;
  • 学习时长;

计算是否满足结业条件。


FR-GRAD-002 人工确认

管理员最终确认是否结业。

flowchart LR
    A[培训结束]
    --> B[统计]
    --> C[系统建议]
    --> D[管理员确认]
    --> E[结业]

FR-GRAD-003 结业作用对象

结业作用于:

某个学员的某次参训记录。

不能简单把学员个人全局状态永久设置为“结业”。


FR-GRAD-004 权限处理

正式结业后:

  • 当前培训对应宿舍权限失效;
  • 当前培训历史记录保留;
  • 不影响学员未来参加其他培训。

8. 核心状态模型

8.1 开班计划

stateDiagram-v2
    [*] --> 未开始
    未开始 --> 报名中
    报名中 --> 进行中
    进行中 --> 已结束

    未开始 --> 已取消
    报名中 --> 已取消

    已结束 --> [*]
    已取消 --> [*]

8.2 报到

stateDiagram-v2
    [*] --> 未报到

    未报到 --> 已报到
    未报到 --> 请假
    未报到 --> 放弃

    请假 --> 已报到

    已报到 --> [*]
    放弃 --> [*]

8.3 成绩

stateDiagram-v2
    [*] --> 草稿
    草稿 --> 已提交
    已提交 --> 已发布
    已提交 --> 草稿 : 退回

    已发布 --> 修改审批
    修改审批 --> 已发布

9. 页面结构建议

本节属于产品结构建议,不代表最终 UI。

培训管理
├── 教师管理
├── 学员管理
├── 课程管理
│
├── 开班管理
│   ├── 开班计划
│   ├── 参训学员
│   ├── 课程表
│   └── 报到
│
├── 宿舍管理
│   ├── 宿舍资源
│   ├── 住宿安排
│   └── 门禁授权
│
├── 签到管理
│   ├── 签到记录
│   └── 异常 / 人工补签
│
├── 成绩管理
│   ├── 成绩录入
│   ├── Excel导入
│   └── 成绩发布
│
├── 数据接入
│   ├── 学习记录
│   ├── 外部成绩
│   └── 异常数据
│
├── 统计分析
│
└── 学员画像

同时建议开班详情提供一个“班次工作台”:

基本信息
参训名单
课程表
报到
住宿
签到
成绩
统计
结业

避免管理员在多个菜单之间频繁跳转。


10. 非功能需求

10.1 数据真实性

演示阶段允许外部系统使用 Mock。

但:

核心业务数据必须真实持久化。

不得只做前端假数据。


10.2 审计

【确认】

核心增、删、改、导出操作应记录:

  • 操作人;
  • 操作时间;
  • 操作内容;
  • 必要的修改前后数据。

10.3 敏感信息

身份证、人脸等数据按敏感信息处理。

其中身份证明确要求加密存储。


10.4 可扩展性

以下内容不得在业务代码中完全写死:

  • 报到期限;
  • 招生人数;
  • 成绩权重;
  • 及格线;
  • 签到率要求;
  • 最低学习时长;
  • 外部系统地址;
  • Mock / Real 接口模式。

11. 一期完整验收场景

一期最终必须能够通过以下完整场景。

场景:钢结构检测培训第一期

Step 1

管理员创建:

教师:王老师
学员:张三、李四……
课程:钢结构检测

Step 2

创建:

钢结构检测培训第一期

Step 3

通过:

管理员选择
或
Excel导入

加入 30 名参训学员。

Step 4

安排:

9月20日上午 理论课
9月20日下午 3D实训
9月21日上午 VR巡检

Step 5

给需要住宿的学员预分配宿舍。

Step 6

张三通过身份证 / 模拟人脸完成报到。

系统显示:

宿舍
教室
实训场地
课程表

Step 7

系统创建宿舍门禁下发任务。

Mock 智能锁返回成功。

Step 8

张三参加课次。

Mock 电子班牌返回签到。

Step 9

Mock VR 系统产生:

学习时长:70分钟
成绩:92

Step 10

教师再录入其他成绩。

Step 11

系统产生:

签到率
总学习时长
综合成绩

Step 12

系统生成学员画像。

Step 13

系统判断结业条件。

管理员确认张三结业。

Step 14

张三本次培训:

  • 保存历史;
  • 门禁权限失效;
  • 不影响其参加下一期培训。

12. 现场验证清单

本 PRD 中以下内容仍属于开发假设,现场必须重点确认:

编号 现场验证事项
A-001 一个培训班实际是一门课程还是多门课程
A-002 学员名单实际来源
A-003 课程表如何安排
A-004 教师、教室、实训场地是否按课次变化
A-005 宿舍实际由谁分配
A-006 是否存在不住宿学员
A-007 实际报到开始和截止规则
A-008 超期未报到如何处理
A-009 成绩实际有哪些组成
A-010 成绩综合计算规则
A-011 请假如何影响签到率
A-012 结业条件
A-013 电子班牌真实接口
A-014 智能锁真实接口
A-015 VR / 3D / 实训系统能够提供的字段

13. PRD 完成后的开发流程

本 PRD 通过内部评审后:

flowchart LR
    A[PRD V0.9]
    --> B[核心业务模型]
    --> C[数据库设计 V2]
    --> D[API设计]
    --> E[页面设计]
    --> F[Epic拆分]
    --> G[Issue拆分]
    --> H[模块Owner分配]
    --> I[开发]
    --> J[联调]
    --> K[内部全流程测试]
    --> L[现场验证]
    --> M[PRD V1.0]

14. PRD 冻结原则

当前 V0.9 可以作为一期开发依据,但必须遵守:

确认需求正常实现。

默认需求按本 PRD 执行,但必须保留需求假设记录。

扩展能力只做必要结构预留,不提前实现大量未来功能。

任何明显超出一期的新增功能,不允许开发人员或 Agent 自行加入。

如果开发过程中发现 PRD 与实际业务存在重大矛盾,应先提出设计问题,不直接自行修改业务模型。