23 KiB
RailwaySystem 智慧培训系统一期 PRD V0.9
产品名称: RailwaySystem 智慧培训系统
版本: V0.9
文档状态: 一期内部开发基线
适用阶段: PRD评审 → 业务模型设计 → 数据库V2 → API/页面设计 → Issue拆分
最终状态: 待现场验证后升级 V1.0需求依据:
- 《学员管理系统相关需求.md》
- 《学员管理系统功能分析_20260831.md》
- 《学员管理系统数据表设计_20260907_1_.md》
- 当前项目组形成的《一期需求分析与业务基线》
- 《一期默认开发决策与需求假设》
需求状态说明
本 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 一期成功标准
一期至少达到以下效果:
- 可以创建一门课程并组织一期培训;
- 可以建立本期参训学员名单;
- 可以形成课程表;
- 可以完成学员报到;
- 可以分配住宿并模拟门禁授权;
- 可以模拟电子班牌签到;
- 可以录入、导入或模拟接收成绩;
- 可以模拟接收 VR、3D 等学习记录;
- 可以统计签到率、成绩、学习时长;
- 可以生成学员画像;
- 可以完成一次培训结业处理;
- 全流程业务数据真实持久化,而不是仅页面演示。
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 加入参训学员
【默认】
支持:
- 从学员库选择;
- 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 报到资格检查
系统识别学员后检查:
- 是否存在该学员;
- 是否属于当前开班;
- 是否已经报到;
- 是否超过报到期限;
- 是否存在特殊状态。
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 与实际业务存在重大矛盾,应先提出设计问题,不直接自行修改业务模型。