文档归档:迁移原始材料与历史设计至docs/archive

This commit is contained in:
wangzhibiao committed 2026-09-17 16:47:16 +08:00
1 parent e62904a853
commit f7db7b592c
21 files changed
+129 -62

No files matched your search

View File
Whitespace-only changes.
+93
View File
@@ -0,0 +1,93 @@
# SYFJGYD学员管理系统 — 历史资料归档中心 (Archive)
> **历史归档声明 (HISTORICAL REFERENCE)**:
> 本目录归档存放项目启动与早期研发阶段的**甲方原始资料、早期需求草案、早期技术原型与历史数据库设计稿**。
> 本目录所有内容仅供溯源、审计与沿革参考,**不作为当前系统实现的验收依据**。
>
> - **当前一期正式生效业务基线**:[docs/requirements/一期PRD-V1.0.md](../requirements/一期PRD-V1.0.md)
> - **当前数据库物理结构事实源**:[docs/database-v2/](../database-v2/01_table_inventory.md) 与 `RuoYi-Vue/sql/train/v2/`
> - **当前系统运行与试用现状**:[docs/current/](../current/README.md)
---
## 🧭 历史资料组织架构
```text
docs/archive/
├── README.md # 【本文件】统一历史资料归档入口全景导览
├── raw-materials/ # 甲方原始交付需求、功能分析与初版数据表设计(docx / md 原件)
├── requirements-history/ # 需求演进过程稿(PRD V0.9、V0.1 调研表、业务基线草案)
├── legacy-design/ # 早期技术原型资料(详细开发说明书草案、ELK 拓扑原型)
└── database-history/ # 历史数据库设计资料(Kingbase DDL 规范草稿)
```
---
## 📂 归档子目录职责与清单
### 1. 甲方原始资料:`raw-materials/`
- **定位**:项目启动阶段业务方提供的原始需求文件、功能模块初稿与初始 14 张表设计草案。
- **清单**:
- `学员管理系统相关需求.docx` / `.md`:业务方最初提出的学员、班级、住宿、培训宏观需求与业务设想;
- `学员管理系统功能分析_20260831.docx` / `.md`:培训系统功能模块拆解、业务流梳理与菜单原型规划初稿;
- `学员管理系统数据表设计_20260907_1_.docx` / `.md`:早期数据库 14 张培训业务表设计草案;
- `README.md`:原始交付材料说明与演变提示。
- **演变关系**:所有有效需求已提炼至 [一期PRD-V1.0.md](../requirements/一期PRD-V1.0.md),表结构差异详见 [14_database_code_diff.md](../codebase-audit/14_database_code_diff.md)。
### 2. 早期需求草案:`requirements-history/`
- **定位**:需求演进与讨论过程中的中间草稿,用于追溯决策依据。
- **清单**:
- `RailwaySystem 智慧培训系统一期 PRD V0.9.md`:一期产品需求讨论草案(已升级为 V1.0);
- `RailwaySystem 一期 P0 需求确认表 V0.1.md`:核心功能优先级(P0/P1/P2)研讨与业务确认清单;
- `RailwaySystem 一期需求分析与业务基线 V0.1.md`:面向业务方需求的初步分析与功能点映射草稿;
- `RailwaySystem 一期默认开发决策与需求假设 V0.1.md`:早期针对甲供资料不完备部分制定的默认技术假设;
- `README.md`:历史版本归档清单与核心演进对比。
### 3. 早期技术原型:`legacy-design/`
- **定位**:早期编写的系统设计与前端拓扑可视化原型(HISTORICAL REFERENCE)。
- **清单**:
- `智慧培训系统一期详细开发说明书.md`:早期技术说明草案(基于旧数据表与旧需求);
- `railwaysystem.html`:基于 ELK 布局引擎生成的培训系统架构与业务拓扑可视化原型;
- `elk.bundled.js`:前端拓扑布局引擎打包库;
- `README.md`:早期技术原型归档说明。
### 4. 旧数据库设计:`database-history/`
- **定位**:数据库建模阶段的历史设计冻结稿,供追溯字段设计思路。
- **清单**:
- `RailwaySystem 数据库 V2 字段设计与 Kingbase DDL 规范 V1.0.md`:早期 21 张表字段与 DDL 设计草案;
- `README.md`:明确该文档为历史设计资料,物理事实源已迁移至 `docs/database-v2/`。
---
## 📌 业务与技术演进对照
| 历史资料分类 | 对应历史文档 | 当前生效的正式替代入口 | 核心差异说明 |
| :--- | :--- | :--- | :--- |
| **正式业务需求** | `requirements-history/PRD V0.9` | [**docs/requirements/一期PRD-V1.0.md**](../requirements/一期PRD-V1.0.md) | V1.0 厘清了多对多开班课程、课次、床位与门禁解耦、动态成绩模型等关键规则。 |
| **需求实现跟踪** | `requirements-history/P0确认表` | [**docs/requirements/一期需求实现进度表.md**](../requirements/一期需求实现进度表.md) | 当前进度表具备逐项前后端源码、数据库表与 331 项测试断言证据。 |
| **待确认事项** | `raw-materials/相关需求` | [**docs/requirements/甲方需求确认清单.md**](../requirements/甲方需求确认清单.md) | 当前清单聚焦 P0/P1/P2 精准业务阻塞项,用于与段方对齐。 |
| **数据库物理表** | `database-history/DDL规范` | [**docs/database-v2/01_table_inventory.md**](../database-v2/01_table_inventory.md) | 当前金仓物理表结构及初始化脚本位于 `RuoYi-Vue/sql/train/v2/`。 |
| **系统架构与指南** | `legacy-design/详细开发说明书` | [**docs/handbook/01-project-overview.md**](../handbook/01-project-overview.md) | 当前团队手册完整涵盖项目总览、业务流、架构设计、数据模型与开发规范。 |
---
## 核心业务基线速览(PRD V1.0)
详细业务规范请完整阅读 [一期PRD-V1.0.md](../requirements/一期PRD-V1.0.md),主要核心域包括:
| 业务域 | 涉及核心对象 | 关键业务规则与一期边界 | PRD 对应章节 |
| :--- | :--- | :--- | :--- |
| **基础信息** | 教师、学员、课程 | 学员身份证国密/SM4加密存储与脱敏;课程支持一期基础属性,不做多版本与审批流 | 第 5、6、7 章 |
| **教学资源** | 教室、实训场地、电子班牌 | 支持资源状态流转;电子班牌支持与教室、课次绑定及日程轮播展示 | 第 8、9、10 章 |
| **培训与教务** | 开班计划、开班课程、课次、参训学员 | **开班计划支持多门课程**;排课细化到具体课次;明确独立的班级—学员参训关系 | 第 11、12、13、14 章 |
| **报到与考勤** | 开班报到、课次考勤、学习记录 | 区分班级报到与具体课次考勤;考勤记录精确关联到课次;记录学员自学与实训时长 | 第 15、16、17 章 |
| **生活后勤** | 宿舍楼栋、房间、床位、门禁授权 | **房间与床位拆分**为两级模型;**住宿事实与门禁权限解耦**,支持按床位安排并独立下发门禁授权 | 第 18、19、20 章 |
| **考核与画像** | 成绩科目/权重、学员得分、综合画像 | 彻底摒弃固定三列成绩,支持**动态成绩科目与权重**;多维雷达图与基础能力画像分析 | 第 21、22、23 章 |
---
## 业务与技术文档的对应关系
- **历史资料中心 (`docs/archive/`)**:归档早期交付材料、讨论稿与旧设计。
- **业务需求中心 (`docs/requirements/`)**:定义**系统应该做什么、业务对象是什么、业务规则与输入输出约束**。
- **技术审计中心 (`docs/`)**:技术人员请参阅 [docs/README.md](../README.md) 及 [docs/codebase-audit/](../codebase-audit/),获取当前工程架构、14张历史业务表与PRD差异对比([14_database_code_diff.md](../codebase-audit/14_database_code_diff.md))、KingbaseES 实测兼容性等技术事实。
+24
View File
@@ -0,0 +1,24 @@
# 历史数据库设计资料归档 (database-history)
> **历史归档声明 (HISTORICAL REFERENCE)**:
> 本目录下的 [`RailwaySystem 数据库 V2 字段设计与 Kingbase DDL 规范 V1.0.md`](RailwaySystem%20数据库%20V2%20字段设计与%20Kingbase%20DDL%20规范%20V1.0.md) 是数据库建模阶段的历史设计资料,仅供追溯设计演变与字段初衷参考。
> **不得作为当前数据库物理结构与迁移的判定依据**。
---
## 🗄️ 当前真实数据库事实源
如需查阅当前系统正在使用的真实国产人大金仓(KingbaseES)物理表结构、字段定义、外键约束、索引以及 DDL 脚本,请务必以以下两处为唯一权威事实源:
1. **结构设计与字段字典**:[**docs/database-v2/01_table_inventory.md**](../../database-v2/01_table_inventory.md)
(包含 21 张物理表字段清单、类型映射规范与索引说明);
2. **可执行 DDL 生产脚本**:[`RuoYi-Vue/sql/train/v2/`](../../../RuoYi-Vue/sql/train/v2/)
(包含当前集成验收库与共享试用库所执行的最终物理表结构初始化 SQL)。
---
## 📋 包含的历史设计文件
| 文档名称 | 原始版本 | 性质说明 |
| :--- | :--- | :--- |
| [`RailwaySystem 数据库 V2 字段设计与 Kingbase DDL 规范 V1.0.md`](RailwaySystem%20数据库%20V2%20字段设计与%20Kingbase%20DDL%20规范%20V1.0.md) | V1.0 (冻结设计稿) | 早期 21 张培训业务表字段设计草案与 Kingbase DDL 理论规范 |
+16
View File
@@ -0,0 +1,16 @@
# 早期技术与原型设计资料归档 (legacy-design)
> **历史归档声明 (HISTORICAL REFERENCE)**:
> 本目录归档存放王杏月师姐早期编写的系统设计与前端拓扑可视化原型资料。
> **仅供技术演进与历史设计参考,不作为系统一期正式业务与实现基线**。
> 一期最新最高业务基线请参见:[docs/requirements/一期PRD-V1.0.md](../../requirements/一期PRD-V1.0.md)。
---
## 目录文件清单
| 文件名 | 类型 | 说明 |
| :--- | :--- | :--- |
| `智慧培训系统一期详细开发说明书.md` | 技术文档 | 早期详细开发说明草案(基于旧数据表与旧需求) |
| `railwaysystem.html` | 前端页面 | 基于 ELK 布局生成的培训系统拓扑与架构图可视化原型 |
| `elk.bundled.js` | JS 库 | 前端拓扑布局引擎 ELK.js 打包文件,供 `railwaysystem.html` 渲染图表使用 |
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
+22
View File
@@ -0,0 +1,22 @@
# 甲方原始交付需求与设计资料(raw-materials)
> **说明**:本目录归档存放项目启动与早期阶段甲方/业务方提供的原始需求、功能分析与初版数据表设计文档(包含原始 docx 及同名导出的 markdown 格式)。
>
> **最高业务基线**:所有原始材料中的要求已全部整合、甄别并提炼至 [一期PRD-V1.0.md](../../requirements/一期PRD-V1.0.md)。在需求冲突时,一律以 **PRD V1.0** 为准。
---
## 原始材料清单
| 文件名 | 原始日期 | 格式 | 核心内容说明 |
| :--- | :--- | :--- | :--- |
| `学员管理系统相关需求.docx` / `.md` | 早期交付 | docx / md | 业务方最初提出的学员、班级、住宿、培训宏观需求与业务设想 |
| `学员管理系统功能分析_20260831.docx` / `.md` | 2026-08-31 | docx / md | 培训系统功能模块拆解、业务流梳理与菜单原型规划初稿 |
| `学员管理系统数据表设计_20260907_1_.docx` / `.md` | 2026-09-07 | docx / md | 早期数据库 14 张培训业务表设计草案(旧表结构初稿) |
---
## 演进与演变提示
1. **表结构演进**:`学员管理系统数据表设计_20260907_1_` 中定义的字段与当前生产 KingbaseES 数据库存在部分类型演进(如主键 identity、timestamp 等),且与 PRD V1.0 要求的开班计划—课程、参训关系、课次对象存在结构化演进,详见技术审计文档 [14_database_code_diff.md](../../codebase-audit/14_database_code_diff.md)。
2. **需求演进**:早期需求中模糊的门禁关联、签到联动与成绩结构,已在 PRD V1.0 中建立严格的业务边界定义。
@@ -0,0 +1,185 @@
学员管理系统功能分析
**一、人员管理**
1、教师信息管理
提供对教师信息的查看、编辑等功能。教师信息包括:个人基本情<span class="mark">况信息、授课信息等;</span>
<span class="mark">(1)支持教师授课履历的时间轴展示(按学期/年份筛选);</span>
<span class="mark">(2)支持设置教师资质证书有效期预警(到期前系统自动提醒);</span>
<span class="mark">(3)支持逻辑删除(离职教师账号冻结但保留历史数据);</span>
<span class="mark">(4)操作日志记录所有编辑行为。</span>
2、学员信息管理
提供对学员信息的查看、编辑等功能。学员信息包括:个人基本情况信息<span class="mark">、人脸数据、课程信息、学习信息等。</span>
<span class="mark">(1)人脸数据支持多底库照片采集(支持1:N识别精度提升);</span>
<span class="mark">(2)支持批量导入学员基础信息(Excel模板下载);</span>
<span class="mark">(3)学员状态支持在读/休学/结业/退学等状态流转,状态变更自动触发关联权限冻结(如宿舍门禁、电子班牌签到权限);</span>
<span class="mark">(4)敏感字段(身份证号)加密存储;</span>
<span class="mark">(5)支持查看学员的全生命周期学习轨迹时间线。</span>
**二、课程管理**
1、课程信息管理
提供对课程的创建、编辑、删除、查看功能。课程信息包括:课程编码(全局唯一业务编码)、课程名称、课程类型、课程时长、教学目标、课程内容、配套资料(如关联3D设备拆解模型、实训场景等文档、视频、链接形式的教学资源)等。
<span class="mark">(1)支持课程版本管理;</span>
<span class="mark">(2)课程状态支持草稿/待审核/已发布/已归档;</span>
<span class="mark">(3)配套资料支持预览与格式校验(限制视频/文档大小及格式);</span>
<span class="mark">(4)支持设置课程标签(如#热门、#初级、#进阶)。</span>
2、课程签到管理
提供对课程签到信息的创建、编辑、删除、查看功能。
**三、学习班管理**
1、开班计划管理
提供对开班计划的创建、编辑、删除、查看功能。开班计划信息包括:开班名称、所属课程、开班时间、结束时间、培训地点、授课教师、招生人数、报名条件等。
<span class="mark">(1)开班计划状态(未开始/报名中/进行中/已结束/已取消);报名人数实时计数器,并支持超额预警(达到招生人数90%时提醒教师);</span>
<span class="mark">(2)支持复制开班计划(快捷生成下期班次);</span>
<span class="mark">(3)开班时间与授课教师自动进行冲突校验(同一时段同一教师冲突告警)。</span>
2、开班报到管理
支持信息查询一体机通过身份证、人脸识别方式进行开班报到,报到后可自动获取所分配宿舍、教室、实训场地、课程表等信息。
(系统同时将人脸识别的<span class="mark">人脸数据同步至学员信息管理模块,宿舍分配结果同步至宿舍管理模块,</span>用于触发人脸权限自动下发。)
<span class="mark">(1)支持报到状态机(未报到/已报到/请假/放弃);</span>
<span class="mark">(2)设置报到时效规则(开班后X日内未报到自动取消资格并释放宿舍资源);</span>
<span class="mark">(3)人脸识别失败时采用人工核验通道(一体机转接至管理员后台确认)。</span>
**四、宿舍管理**
1、宿舍信息管理
(1)提供对宿舍信息的查看、编辑等功能。
<span class="mark">(2)宿舍信息可细化为:楼栋+楼层+房间号+床位号四级编码;</span>
<span class="mark">(3)宿舍状态支持空置/部分入住/已满/维修中;</span>
<span class="mark">(4)支持按性别/培训班维度进行宿舍分配的自动匹配规则配置(优先同班同寝)。</span>
2、宿舍开门权限管理
(1)提供对宿舍开门权限的查看、编辑等功能。
<span class="mark">(2)系统根据宿舍分配结果设定对应宿舍开门权限,并自动下发人脸数据至智能锁;下发记录需包含下发时间、下发结果(成功/失败)及失败重试次数。</span>
<span class="mark">(3)权限时效管理(权限与开班计划结束时间联动,结业后自动过期失效)。</span>
<span class="mark">(4)支持临时授权(允许管理员下发短期开门密码)。</span>
<span class="mark">(5)支持权限审计日志。</span>
**五、成绩管理**
1、成绩信息管理
提供成绩信息的查看、编辑等功能。成绩信息包括:课程成绩、实训成绩、考核成绩等多类型成绩。
<span class="mark">(1)成绩状态(草稿/已提交/已发布);</span>
<span class="mark">(2)成绩发布后自动锁定不可编辑(如需修改需走审批流程);</span>
<span class="mark">(3)支持按权重占比自动计算综合成绩;</span>
<span class="mark">(4)记录每次成绩修改的历史版本(比对修改前后的差值)。</span>
2、成绩信息导入与导出
支持成绩的批量导入与导出(Excel格式)。<span class="mark">导入时支持模板校验(表头、字段格式、学号合法性自动验证,错误数据生成下载反馈报告)。</span>
**六、数据接入**
实现各数据源明细数据的采集与存储。
1、签到数据采集与管理
(1)支持通过电子班牌系统对接,实现人脸识别或二维码签到。提供学员课程签到数据的自动采集与存储。
<span class="mark">(2)自动过滤重复签到流水(同一学员同一课程在1分钟内重复记录只取第一条);</span>
<span class="mark">(3)提供手动补采(对接失败时支持管理员手动拉取最近1小时数据)。</span>
注:本模块负责电子班牌系统的自动化签到数据采集,与“二、课程管理”中的人工录入/编辑功能互为补充,共同构成完整的学员课程签到数据源。
2、学习系统使用数据采集与管理
提供第三方学习系统(电子阅览室一体机、桌面听书机、VR实训、3D拆解、3D巡检等)使用记录的原始数据采集与存储,记录每次使用开始时间、结束时间及关联学员。
3、成绩数据采集与管理
(1)支持VR实训、3D巡检等、实操实训等系统的成绩自动采集,可采用数据汇缴模式,也可以采用数据实时获取的模式。
<span class="mark">(2)异常数据告警(如单次学习时长超过课程总时长2倍时标记“异常”并通知管理员审核)。</span>
注:本模块负责第三方系统的自动化成绩采集,与“五、成绩管理”中的人工录入/编辑功能互为补充,共同构成完整的学员成绩数据源。
**七、学习情况统计分析**
1、基于 “六、数据接入” 模块采集的原始数据,自动统计分析每位学员在各系统中的总学习时长,并支持可视化展示。
2、学员各课程签到情况的自动统计。
3、学员各课程成绩情况的自动统计分析。
4、各课程学员成绩情况的自动统计分析。
<span class="mark">5、所有统计报表支持时间范围筛选(日/周/月/自定义区间)及 “一键导出”;</span>
<span class="mark">6、统计图表支持钻取下钻(点击总时长数字可跳转至明细列表);新增同比环比分析(例如:本月签到率较上月提升/下降百分比);</span>
<span class="mark">7、支持统计任务异步生成(大数据量统计后台执行,完成后消息提醒下载)。</span>
**八、学员画像**
支持学生画像功能,根据学习情况进行学员画像管理等。
<span class="mark">(1)支持动态标签规则引擎(管理员可自定义配置标签规则,如“签到率 \> 90%”自动标记为“勤勉学员”);</span>
<span class="mark">(2)画像支持雷达图可视化展示(多维度:考勤、理论成绩、实操能力、学习时长);</span>
<span class="mark">(3)支持画像定期快照(每月1日自动保存学员画像历史,便于对比成长轨迹);</span>
<span class="mark">(4)支持按画像标签精准筛选推送(如向“待提升学员”生成定向补习资料推荐清单)。</span>
**九、系统权限管理**
<span class="mark">(1)RBAC权限模型</span>
<span class="mark">采用“用户、角色、权限”三层模型,支持创建自定义角色,系统预置管理员、教师、学员三种基础角色。</span>
<span class="mark">(2)细粒度数据权限</span>
<span class="mark">支持数据行权限(例如:授课教师仅能查看所带班级的学员成绩)。</span>
<span class="mark">(3)操作审计日志</span>
<span class="mark">所有核心模块的“增、删、改、导出”操作均需记录详细的审计日志(操作人、操作时间、IP地址、操作内容变更前后的JSON快照)。</span>
<span class="mark">(4)登录安全策略</span>
<span class="mark">支持设置密码复杂度策略、登录失败锁定机制及超时自动登出。</span>
@@ -0,0 +1,228 @@
表 1:train_teacher 教师信息表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| t_id | VARCHAR(20) | 主键 PRIMARY KEY | 教师工号 |
| t_name | VARCHAR(30) | NOT NULL | 教师姓名 |
| t_gender | CHAR(2) | | 性别:男 / 女 |
| t_birth | DATE | | 出生日期 |
| t_department | VARCHAR(50) | NOT NULL | 所属院系 |
| t_title | VARCHAR(30) | | 职称:讲师 / 副教授 / 教授 |
| t_phone | VARCHAR(20) | | 联系电话 |
| t_email | VARCHAR(50) | | 邮箱 |
| create_user | VARCHAR(32) | NOT NULL | 创建人 (管理员 / 教师) |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
表 2:train_student 学生信息表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| s_id | VARCHAR(20) | 主键 PRIMARY KEY | 学生学号 |
| s_name | VARCHAR(30) | NOT NULL | 学生姓名 |
| s_gender | CHAR(2) | | 性别:男 / 女 |
| s_birth | DATE | | 出生日期 |
| s_department | VARCHAR(50) | NOT NULL | 所属院系 |
| s_major | VARCHAR(50) | NOT NULL | 专业 |
| s_class | VARCHAR(30) | | 班级 |
| s_phone | VARCHAR(20) | | 联系电话 |
| create_user | VARCHAR(32) | NOT NULL | 创建人 (管理员 / 教师) |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
##
## Sheet1:train_course_课程信息
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| c_id | VARCHAR(32) | 主键 PRIMARY KEY | 课程编号主键 |
| c_name | VARCHAR(100) | NOT NULL | 课程名称 |
| c_type | VARCHAR(30) | | 课程类型 |
| c_duration | INT | | 课程时长 (分钟) |
| teaching_objective | TEXT | | 教学目标 |
| course_content | TEXT | | 课程内容 |
| attach_doc | TEXT | | 配套文档,多个逗号分隔 |
| attach_video | TEXT | | 配套视频地址 |
| attach_model_link | TEXT | | 配套模型链接 |
| model_resource_ids | TEXT | | 关联 3D 设备拆解模型、实训场景资源 ID,多 ID 逗号分隔 |
| create_user | VARCHAR(32) | NOT NULL | 创建人 (管理员 / 教师) |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
## Sheet2:train_class_plan_开班计划表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| plan_id | VARCHAR(32) | 主键 PRIMARY KEY | 开班计划 ID 主键 |
| plan_name | VARCHAR(100) | NOT NULL | 开班名称 |
| c_id | VARCHAR(32) | NOT NULL,外键 | 所属课程编号,关联 course.c_id |
| start_time | DATETIME | NOT NULL | 开班时间 |
| end_time | DATETIME | NOT NULL | 结束时间 |
| train_address | VARCHAR(100) | | 培训地点 |
| t_id | VARCHAR(32) | NOT NULL,外键 | 授课教师工号,关联 teacher.t_id |
| recruit_num | INT | | 招生人数 |
| apply_condition | TEXT | | 报名条件 |
| plan_status | TINYINT | DEFAULT 0 | 0 未开始 1 进行中 2 已结束 3 已取消 |
| create_user | VARCHAR(32) | NOT NULL | 创建管理员账号 |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
## Sheet3:train_dormitory_info_宿舍信息表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| dorm_id | VARCHAR(32) | 主键 PRIMARY KEY | 宿舍 ID 主键 |
| dorm_building | VARCHAR(50) | | 宿舍楼栋 |
| dorm_room | VARCHAR(30) | NOT NULL | 宿舍房间号 |
| bed_total | INT | | 宿舍总床位 |
| bed_used | INT | DEFAULT 0 | 已占用床位 |
| lock_device_sn | VARCHAR(64) | | 宿舍人脸智能锁设备序列号,对接智能锁 |
| dorm_status | TINYINT | DEFAULT 1 | 0 禁用 1 可用 |
| create_user | VARCHAR(32) | NOT NULL | 创建管理员账号 |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
## Sheet4:train_dorm_auth_宿舍权限分配表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| auth_id | INT | 主键、自增 AUTO_INCREMENT | 权限分配 ID |
| student_id | VARCHAR(32) | NOT NULL,外键 | 学员学号,关联 student.s_id |
| plan_id | VARCHAR(32) | NOT NULL,外键 | 所属开班计划 ID,class_plan.plan_id |
| dorm_id | VARCHAR(32) | NOT NULL,外键 | 分配宿舍 ID,dormitory_info.dorm_id |
| bed_no | VARCHAR(20) | | 床位号 |
| face_sync_status | TINYINT | DEFAULT 0 | 0 未下发人脸 1 已下发人脸至智能锁 2 下发失败 |
| auth_start | DATETIME | | 权限生效时间 |
| auth_end | DATETIME | | 权限失效时间 (开班结束自动失效) |
| create_user | VARCHAR(32) | NOT NULL | 创建管理员账号 |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
## Sheet5:train_classroom_info_教室信息表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| class_room_id | VARCHAR(32) | 主键 PRIMARY KEY | 教室 ID 主键 |
| room_name | VARCHAR(60) | NOT NULL | 教室名称 |
| room_location | VARCHAR(100) | | 教室位置 |
| capacity | INT | | 容纳人数 |
| room_status | TINYINT | DEFAULT 1 | 0 正在使用 1 可用,空闲 2 其他 |
| create_user | VARCHAR(32) | NOT NULL | 创建管理员账号 |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
## Sheet6:train_training_site_实训场地表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| site_id | VARCHAR(32) | 主键 PRIMARY KEY | 实训场地 ID 主键 |
| site_name | VARCHAR(80) | NOT NULL | 实训场地名称 |
| site_location | VARCHAR(100) | | 场地位置 |
| capacity | INT | | 最大容纳人数 |
| site_device | TEXT | | 场地配套设备:VR、3D 拆解、3D 巡检设备 |
| site_status | TINYINT | DEFAULT 1 | 0 停用 1 可用 |
| create_user | VARCHAR(32) | NOT NULL | 创建管理员账号 |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
## Sheet7:train_class_report_开班报到表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| report_id | INT | 主键、自增 AUTO_INCREMENT | 报到主键 ID |
| plan_id | VARCHAR(32) | NOT NULL,外键 | 开班计划 ID class_plan.plan_id |
| student_id | VARCHAR(32) | NOT NULL,外键 | 学员学号 student.s_id |
| report_way | TINYINT | | 报到方式:1 身份证刷卡 2 人脸识别 |
| report_device_sn | VARCHAR(64) | | 报到一体机设备编号 |
| report_time | DATETIME | | 实际报到时间 |
| report_status | TINYINT | DEFAULT 0 | 0 未报到 1 已报到 2 请假未到 |
| alloc_dorm_id | VARCHAR(32) | 外键 | 分配宿舍 ID dormitory_info.dorm_id |
| alloc_classroom_id | VARCHAR(32) | 外键 | 分配教室 ID classroom_info.class_room_id |
| alloc_site_id | VARCHAR(32) | 外键 | 分配实训场地 ID training_site.site_id |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
## Sheet8:train_electronic_board_电子班牌设备表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| board_id | VARCHAR(32) | 主键 PRIMARY KEY | 电子班牌设备 ID |
| board_sn | VARCHAR(64) | NOT NULL | 设备硬件序列号 |
| bind_classroom_id | VARCHAR(32) | 外键 | 绑定教室 ID classroom_info.class_room_id |
| bind_plan_id | VARCHAR(32) | 外键 | 绑定开班计划 class_plan.plan_id |
| board_ip | VARCHAR(50) | | 设备 IP 地址 |
| board_content | VARCHAR(500) | | 电子班牌显示内容 |
| board_playmode | TINYINT | DEFAULT 1 | 0 离线 1 在线正常 |
| support_checkin_type | VARCHAR(30) | | 支持签到:人脸,二维码 |
| board_status | TINYINT | DEFAULT 1 | 0 离线 1 在线正常 |
| last_heartbeat | DATETIME | | 最后心跳时间 |
| create_user | VARCHAR(32) | NOT NULL | 创建管理员账号 |
| create_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 创建时间 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
| remark | VARCHAR(200) | | 备注 |
## Sheet9:train_student_checkin_学生签到表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| checkin_id | INT | 主键、自增 AUTO_INCREMENT | 签到记录 ID |
| plan_id | VARCHAR(32) | NOT NULL,外键 | 开班计划 ID |
| c_id | VARCHAR(32) | NOT NULL,外键 | 课程 ID |
| student_id | VARCHAR(32) | NOT NULL,外键 | 学员学号 |
| board_id | VARCHAR(32) | 外键 | 签到电子班牌设备 ID electronic_board.board_id |
| checkin_way | TINYINT | | 1 人脸签到 2 二维码签到 3 后台手动补签 |
| checkin_time | DATETIME | | 签到时间 |
| checkin_status | TINYINT | | 1 正常签到 2 迟到 3 早退 4 缺勤 |
| lesson_start_time | DATETIME | | 本节课程上课时间 |
| lesson_end_time | DATETIME | | 本节课程下课时间 |
## Sheet10:train_score_info_多类型成绩表(是否需要分开?按什么统计算归为一期,加权规则是什么)
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| score_id | INT | 主键、自增 AUTO_INCREMENT | 成绩 ID |
| plan_id | VARCHAR(32) | 外键 | 开班计划 ID |
| c_id | VARCHAR(32) | 外键 | 课程 ID |
| student_id | VARCHAR(32) | 外键 | 学员学号 |
| course_score | DECIMAL(5,2) | | 课程成绩 |
| train_score | DECIMAL(5,2) | | 实训成绩 |
| exam_score | DECIMAL(5,2) | | 考核成绩 |
| source_type | TINYINT | | 1 后台手动录入 2Excel 批量导入 3 外部接口自动采集 |
| source_system | VARCHAR(50) | | 来源系统名称,VR/3D 巡检 / 实操系统 |
| import_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 导入时间 |
## Sheet11:train_study_duration_学习时长统计表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| dur_id | INT | 主键、自增 AUTO_INCREMENT | 记录 ID |
| student_id | VARCHAR(32) | 外键 | 学员学号 |
| plan_id | VARCHAR(32) | 外键 | 开班计划 ID |
| c_id | VARCHAR(32) | 外键 | 课程 ID |
| device_type | VARCHAR(50) | | 设备类型:阅览室一体机 / 听书机 / VR 实训 / 3D 拆解 / 3D 巡检 |
| start_time | DATETIME | | 开始学习时间 |
| end_time | DATETIME | | 结束学习时间 |
| study_seconds | INT | | 学习时长,单位秒 |
| sync_time | DATETIME | DEFAULT CURRENT_TIMESTAMP | 数据同步入库时间 |
## Sheet12:train_student_portrait_学员画像表
| **字段名** | **数据类型** | **约束** | **注释说明** |
|:---|:---|:---|:---|
| portrait_id | INT | 主键、自增 AUTO_INCREMENT | 画像 ID |
| student_id | VARCHAR(32) | NOT NULL,外键 | 学员学号 |
| plan_id | VARCHAR(32) | NOT NULL,外键 | 开班计划 ID |
| total_study_hour | DECIMAL(8,2) | | 累计学习总时长 |
| avg_score | DECIMAL(5,2) | | 平均成绩 |
| checkin_rate | DECIMAL(5,2) | | 签到率 |
| label_tag | TEXT | | 画像标签,逗号分割,例如:动手能力强,理论薄弱 |
| portrait_content | TEXT | | 画像综合描述 |
| update_time | DATETIME | DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP | 更新时间 |
@@ -0,0 +1,51 @@
**培训基地软件平台一期内容**
(1)支持管理员/教师创建、编辑、删除课程,可设置课程名称、课程类型、课程时长、教学目标、课程内容、配套资料(文档、视频、模型链接)等信息;
(2)课程可关联3D设备拆解模型、实训场景等教学资源,支持课程与开班计划绑定,实现课程与学员学习的精准匹配;
(3)支持管理员创建开班计划,可设置开班名称、所属课程、开班时间、结束时间、培训地点、授课教师、招生人数、报名条件等参数;
(4)支持信息查询一体机通过身份证、人脸识别等方式进行开班报到,报到后可自动获取所分配宿舍、教室、实训场地、课程表等信息;
(5)可根据宿舍安排,自动下发人脸数据到宿舍房间人脸识别智能锁,自动获取对应宿舍开门权限;
(6)支持通过电子班牌系统对接,实现让开的人脸识别或二维码签到,自动统计学员各课程的签到情况;
(7)支持管理员/教师手动录入学员成绩、批量导入成绩(Excel格式),可录入课程成绩、实训成绩、考核成绩等多类型成绩,提供数据对接接口,实现VR实训、3D巡检等、实操实训等系统的成绩自动采集;
(8)可对接电子阅览室内一体机触控显示屏、桌面听书机、VR实训、3D拆解、3D巡检等系统自动统计记录学习时长
(9)支持学生画像功能,根据学习情况进行学员画像管理等。
**培训基地软件平台二期内容**
1.基于平板电脑开发基地控制系统,后台和平板电脑交互实现如下内容:
(1)学员可以通过平板电脑进行人脸识别签到
(2)教师可以在平板电脑上选择学员、分配实训工位、录入成绩
(3)平板可以对接一期内容进行各类信息查询
(4)对接帽石系统实现对帽石考核的设置,成绩录入
(5)对接铁科院钢结构监测系统数据,并能在数字孪生模型展示监测数据
(6)控制基地智慧照明,对各个照明区进行控制
(7)对接智能工具箱系统,获取取送工具数据,实现自动考评
(8)对接钢结构教学模型,实现对模型物理量的设置,模拟钢结构故障,并能在数字孪生模型上展示
(9)对接电工实训箱智能设备,可设置开始自动考评,并获取逻辑考评结果、工艺考评结果,和绝缘考评结果。
2.基于大屏的基地驾驶舱开发,根据一期二期内容,实现如下功能:
(1)根据一期二期内容,设计数据统计和分析页面,包括培训数据汇总、课程体系、教学数据、成绩数据、学员画像
(2)提供平板控制大屏驾驶舱,实现虚实结合的实训区实训教学观摩,可按实训室实训科目分类调阅
(3)帽石和钢结构模型数字孪生的实时展示
(4)各个实训区摄像机的调取和预览
@@ -0,0 +1,27 @@
# 需求演进过程稿与历史版本归档 (requirements-history)
> **状态说明**:本目录归档存放项目需求梳理与演化过程中的历史中间稿、前期调研确认表及技术假设分析文档。
>
> **最高业务基线**:当前系统一期唯一正式生效的业务基线为 [一期PRD-V1.0.md](../../requirements/一期PRD-V1.0.md)。本目录下的历史文档已全部被 V1.0 覆盖,仅供版本追溯和决策沿革查询。
---
## 历史版本归档清单
| 归档文档名称 | 版本号 | 生成阶段 | 历史作用说明 |
| :--- | :--- | :--- | :--- |
| `RailwaySystem 智慧培训系统一期 PRD V0.9.md` | V0.9 | 2026-09 上旬 | 一期产品需求初稿(已在 V1.0 中全面升华与补充边界规则) |
| `RailwaySystem 一期 P0 需求确认表 V0.1.md` | V0.1 | 早期调研 | 核心功能优先级(P0/P1/P2)研讨与业务确认清单 |
| `RailwaySystem 一期需求分析与业务基线 V0.1.md` | V0.1 | 早期分析 | 面向业务方需求的初步分析与功能点映射草稿 |
| `RailwaySystem 一期默认开发决策与需求假设 V0.1.md` | V0.1 | 早期设计 | 针对甲供资料不完备部分所制定的默认技术假设与边界推演 |
---
## 核心演进对比
- **从 V0.1 到 V0.9**:完成了甲供分散需求到结构化系统模块的归集,明确了 6 大核心模块与 14 张业务表的对应关系。
- **从 V0.9 到 V1.0**:
1. 彻底厘清了“开班计划与课程多对多”、“课次排课”、“参训学员关联关系”三大领域核心对象;
2. 彻底解耦了“宿舍床位安排”与“门禁设备授权”,界定了物理住宿事实与设备状态的边界;
3. 规范了由“固定三列成绩”转向“成绩科目/权重 + 学员得分”的动态考核模型;
4. 明确了一期不做的功能边界(如课程多版本审批、复杂画像算法引擎等),确保一期范围收敛可控。
@@ -0,0 +1,976 @@
# 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 | 什么条件算“完成培训 / 结业”? | 高 | 必须确认 |
建议确认顺序:
```mermaid
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`。
因此现有材料实际上更接近:
```mermaid
flowchart LR
A[课程:钢结构检测]
--> B[钢结构检测第一期]
A --> C[钢结构检测第二期]
```
也就是:
> **一个开班计划对应一门课程。**
---
## 2. 但现实业务可能存在另一种模式
例如一次铁路综合培训:
```mermaid
flowchart TD
A[铁路综合培训第一期]
A --> B[安全理论]
A --> C[钢结构检测]
A --> D[VR巡检]
A --> E[实操考核]
```
这种情况下:
> 一个培训班包含多门课程。
---
## 3. 两种方案差异
| 对比项 | 方案A:一班一课 | 方案B:一班多课 |
| ------- | ---------- | ----------- |
| 业务简单度 | 简单 | 更符合综合培训 |
| 当前文档匹配度 | 高 | 当前文档未明确 |
| 数据库复杂度 | 低 | 高 |
| 课表设计 | 相对简单 | 必须设计班级-课程关系 |
| 成绩 | 一期对应一门课程成绩 | 一期会有多门课程成绩 |
| 签到 | 围绕该课程 | 需要区分不同课程 |
| 后续扩展性 | 一般 | 更强 |
---
## 4. 项目组推荐
### 推荐优先确认真实业务,再决定
如果培训基地现实中通常是:
> “开一个培训班,里面安排若干课程。”
则建议采用:
> **一个培训班包含多门课程。**
如果真实业务实际上就是:
> “某一门课程开一期培训。”
则保持当前:
> **一班一课。**
### 当前建议倾向
从“报到后查看课程表”“不同教师、不同场地、实训”等需求来看,**多课程培训班在业务上更自然**。
但这一点不能直接由开发组拍板。
---
## 5. 需要老师 / 甲方确认
请明确:
> **一个开班计划是否允许配置多门课程?**
确认项:
* [ ] 只能关联一门课程
* [ ] 可以关联多门课程
* [ ] 当前一期先一门课程,后续再支持多门课程
### 最终确认结果
> 待填写:
---
# 三、P0-02 学员如何进入一个培训班?
## 1. 当前需求情况
现有需求中已经出现:
```text
招生人数
报名条件
报名人数
开班报到
```
但没有明确:
> 一个学员是通过什么业务动作成为“本期参训人员”的。
---
## 2. 可能存在的方式
```mermaid
flowchart TD
A[学员进入某一期培训]
A --> B[管理员手动添加]
A --> C[Excel批量导入]
A --> D[学员自行报名]
A --> E[报名后管理员审核]
A --> F[外部系统下发名单]
```
---
## 3. 为什么这是核心问题
如果不解决这一点,系统只能知道:
> 张三这个人存在。
却无法明确知道:
> 张三是否属于钢结构检测第一期。
而后续:
```mermaid
flowchart LR
A[参训资格]
--> B[报到]
--> C[住宿]
--> D[签到]
--> E[成绩]
```
全部依赖这层关系。
---
## 4. 项目组推荐
一期建议至少支持:
> **管理员手动加入 + Excel 批量导入。**
理由:
* 实现简单;
* 适合培训基地集中组织人员;
* 不需要先开发复杂报名门户;
* 后续可以扩展学员自主报名或外部系统同步。
推荐一期流程:
```mermaid
flowchart LR
A[学员库]
--> B[管理员选择 / Excel导入]
--> C[形成参训名单]
--> D[等待报到]
```
---
## 5. 需要老师 / 甲方确认
请确认参训名单来源:
* [ ] 管理员手动添加
* [ ] Excel 批量导入
* [ ] 学员自行报名
* [ ] 学员报名 + 管理员审核
* [ ] 外部系统同步
* [ ] 多种方式同时支持
另外确认:
> 是否存在“报名审核”这个业务步骤?
* [ ] 有
* [ ] 无
### 最终确认结果
> 待填写:
---
# 四、P0-03 课程表到底如何形成?
## 1. 当前需求情况
需求明确要求:
> 学员报到后能够查看课程表。
当前签到表中也存在:
```text
本节课程开始时间
本节课程结束时间
```
说明业务实际上已经存在:
> 某个具体时间真正发生的一次教学活动。
---
## 2. 建议定义“课次”
例如:
```text
9月20日 09:00-11:00
钢结构检测理论
王老师
201教室
```
这一条就可以称为:
> 一次课次 / Lesson。
---
## 3. 推荐业务关系
```mermaid
flowchart TD
A[开班计划]
--> B[课次1]
A --> C[课次2]
A --> D[课次3]
B --> B1[课程]
B --> B2[教师]
B --> B3[时间]
B --> B4[教室 / 场地]
```
签到也因此变成:
```mermaid
flowchart LR
A[学员]
--> B[某次课次]
--> C[签到记录]
```
而不是只记录:
> 张三签到过“钢结构检测”。
---
## 4. 项目组推荐
建议正式引入:
> **课次 / 教学安排 Lesson**
每条课次至少包含:
```text
所属培训班
所属课程
授课教师
开始时间
结束时间
教室 / 实训场地
```
这样:
* 课程表可以生成;
* 签到有准确对象;
* 教师冲突可以判断;
* 教室冲突可以判断;
* 后续课程统计也更加清晰。
---
## 5. 需要老师 / 甲方确认
请确认:
### 一个培训班是否会多次上课?
* [ ] 是
* [ ] 否
### 每次教学是否需要独立配置:
* [ ] 日期
* [ ] 开始时间
* [ ] 结束时间
* [ ] 课程
* [ ] 教师
* [ ] 教室
* [ ] 实训场地
### 是否同意以“课次”作为课程表基本单位?
* [ ] 同意
* [ ] 不同意
* [ ] 需要其他形式
### 最终确认结果
> 待填写:
---
# 五、P0-04 宿舍什么时候分配?
## 1. 当前需求情况
需求确定:
> 报到后可以获取所分配宿舍。
但是没有明确宿舍到底什么时候被分好。
---
## 2. 可能的三种流程
### 方案A:报到前预分配
```mermaid
flowchart LR
A[确定参训名单]
--> B[提前分配宿舍]
--> C[学员到场]
--> D[报到]
--> E[直接展示宿舍]
```
### 方案B:报到时自动分配
```mermaid
flowchart LR
A[学员报到]
--> B[系统检查可用床位]
--> C[自动匹配]
--> D[分配成功]
--> E[下发门禁]
```
### 方案C:管理员现场分配
```mermaid
flowchart LR
A[学员报到]
--> B[管理员选择宿舍]
--> C[确认入住]
--> D[下发门禁]
```
---
## 3. 项目组推荐
一期建议采用:
> **报到前可预分配 + 管理员可调整。**
系统可以根据:
```text
性别
培训班
剩余床位
```
提供自动推荐。
但是一期不一定必须做到完全无人值守自动分床。
推荐流程:
```mermaid
flowchart LR
A[参训名单]
--> B[系统推荐宿舍]
--> C[管理员确认 / 调整]
--> D[形成住宿安排]
--> E[报到展示]
--> F[下发门禁]
```
这样风险最低。
---
## 4. 另外必须确认
> 是否所有培训学员都需要住宿?
可能存在:
```text
住宿学员
不住宿学员
```
因此住宿不能默认是所有人强制产生。
---
## 5. 需要老师 / 甲方确认
宿舍分配方式:
* [ ] 报到前预分配
* [ ] 报到时自动分配
* [ ] 报到时管理员分配
* [ ] 支持预分配,同时允许现场调整
是否所有人必须住宿:
* [ ] 是
* [ ] 否
如果不住宿:
> 是否仍然允许正常报到和参加培训?
* [ ] 是
* [ ] 否
### 最终确认结果
> 待填写:
---
# 六、P0-05 开班后 X 日未报到中的 X 是多少?
## 1. 当前需求情况
当前功能分析明确提出:
```text
开班后 X 日内未报到
→ 自动取消资格
→ 释放宿舍资源
```
但 X 没有确定。
---
## 2. 需要注意的问题
这其实不只是一个数字。
还需要确定:
```mermaid
flowchart TD
A[超过报到期限]
A --> B{是否请假?}
B -->|否| C[取消参训资格]
C --> D[释放宿舍]
B -->|是| E[是否允许延期报到?]
```
---
## 3. 项目组推荐
不建议把“X天”直接写死在程序中。
建议做成:
> **开班计划可配置的报到截止时间 / 报到有效期。**
例如:
```text
开班时间:
9月20日 09:00
报到截止:
9月21日 18:00
```
比固定:
> 开班后 1 天
更灵活。
---
## 4. 需要老师 / 甲方确认
规则采用:
* [ ] 固定 X 天
* [ ] 每个开班计划独立设置报到截止时间
如果固定:
> X = ______ 天
另外确认:
### 请假学员超过期限是否取消资格?
* [ ] 是
* [ ] 否
* [ ] 管理员人工决定
### 超期取消以后是否自动释放宿舍?
* [ ] 是
* [ ] 否
### 最终确认结果
> 待填写:
---
# 七、P0-06 综合成绩如何计算?
## 1. 当前需求情况
现有成绩包括:
```text
课程成绩
实训成绩
考核成绩
```
同时需求要求:
> 支持按权重自动计算综合成绩。
但是没有说明权重。
---
## 2. 可能的计算方式
例如:
```mermaid
flowchart TD
A[课程成绩 30%] --> D[综合成绩]
B[实训成绩 40%] --> D
C[考核成绩 30%] --> D
```
则:
```text
综合成绩
=
课程成绩 × 30%
+
实训成绩 × 40%
+
考核成绩 × 30%
```
---
## 3. 关键问题
不仅要确认比例,还要确认:
> 所有课程是否使用同一套比例?
例如:
### 理论课程
```text
课程成绩 60%
考试成绩 40%
```
### 实训课程
```text
理论 20%
实训 60%
考核 20%
```
显然可能不同。
---
## 4. 项目组推荐
建议:
> **权重可配置,不在代码中固定。**
推荐层级:
```mermaid
flowchart LR
A[课程]
--> B[成绩规则]
B --> C[理论权重]
B --> D[实训权重]
B --> E[考核权重]
```
一期至少支持课程级配置。
---
## 5. 需要老师 / 甲方确认
综合成绩:
* [ ] 所有课程统一权重
* [ ] 每门课程独立配置权重
若统一:
```text
课程成绩:____ %
实训成绩:____ %
考核成绩:____ %
```
总计必须为:
> 100%
另外:
### 缺少某一类成绩时怎么办?
例如某课程没有实训。
* [ ] 权重重新计算
* [ ] 该项按 0 分
* [ ] 每门课程自己配置成绩组成
### 最终确认结果
> 待填写:
---
# 八、P0-07 什么叫“培训完成 / 结业”?
## 1. 当前需求情况
当前需求已经出现:
> 结业后宿舍门禁权限自动失效。
但是没有定义:
> 什么条件才叫结业。
---
## 2. 可能的规则
```mermaid
flowchart TD
A[培训结束]
A --> B{是否满足结业条件}
B -->|是| C[结业]
B -->|否| D[未结业 / 待处理]
C --> E[保存培训历史]
C --> F[失效宿舍门禁]
C --> G[形成最终统计]
```
结业条件可能涉及:
```text
签到率
成绩
学习时长
必修课程完成情况
管理员确认
```
---
## 3. 几种典型方案
### 方案A:时间结束即结业
```text
开班结束
=
所有学员自动结业
```
优点:
> 简单。
缺点:
> 即使长期缺勤或者没成绩,也会结业。
---
### 方案B:满足条件自动结业
例如:
```text
签到率 ≥ 80%
综合成绩 ≥ 60
```
满足后系统自动结业。
---
### 方案C:系统判断 + 管理员确认
系统给出:
```text
建议结业
不满足条件
```
最后管理员确认。
---
## 4. 项目组推荐
一期推荐:
> **系统计算是否满足条件 + 管理员最终确认结业。**
这样既可以自动化,又能处理特殊情况。
推荐流程:
```mermaid
flowchart LR
A[培训结束]
--> B[系统统计]
--> C[判断结业条件]
--> D[管理员确认]
--> E[正式结业]
--> F[失效对应培训权限]
```
---
## 5. 特别需要注意
结业应该针对:
> **某一次参训**
而不是直接把:
> 张三这个人的全局状态改成“结业”。
因为张三未来还可能参加其他培训。
---
## 6. 需要老师 / 甲方确认
结业方式:
* [ ] 开班结束自动结业
* [ ] 满足条件自动结业
* [ ] 系统判断 + 管理员确认
如果需要条件,请确认:
### 签到率要求
> ≥ ______ %
### 综合成绩要求
> ≥ ______ 分
### 学习时长是否有要求
* [ ] 有:________
* [ ] 无
### 是否允许管理员特殊处理
* [ ] 是
* [ ] 否
### 最终确认结果
> 待填写:
---
# 九、推荐的一期默认方案
如果当前必须先做一版原型,而甲方暂时无法全部确认,项目组可以暂时按下面方案设计。
> **注意:以下全部属于项目组推荐默认值,不代表已确认需求。**
| 问题 | 推荐默认方案 |
| ------ | --------------------------- |
| 开班与课程 | 暂按一个开班对应一门课程,确认后再决定是否升级一班多课 |
| 学员进入培训 | 管理员添加 + Excel批量导入 |
| 课程表 | 引入独立课次 Lesson |
| 宿舍分配 | 提前预分配 + 管理员可调整 |
| 报到截止 | 每期开班单独配置截止时间 |
| 综合成绩 | 课程级可配置权重 |
| 结业 | 系统判断 + 管理员最终确认 |
---
# 十、7 个 P0 问题之间的关系
这七个问题不是互相独立的。
```mermaid
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 业务基线**
随后才能正式进入:
```mermaid
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 | | | |
当以上七项全部填写后:
> **一期核心业务模型才可以视为基本冻结。**