Files
railwaysystem/docs/current/DEMO-DELIVERY-STATUS.md
T

181 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SYFJGYD学员管理系统 — 客户演示候选版本交付报告 (Clean Demo Delivery)
> **交付状态判定**:`DEMO_CANDIDATE_READY = YES`
> **报告生成时间**:2026-09-24
> **责任交付主体**:RailwaySystem 工程交付组
---
## 一、交付基线与运行态证明
本候选版本严格在完全隔离的专用演示环境构建并端到端验收闭环,坚决不触碰 `training`(共享试用库)与 `railwaysystem_integrated_qa_20260916`(综合验收库),彻底杜绝跨环境脏数据干扰。
```text
================================================================================
DEMO RUNTIME SPECIFICATIONS
================================================================================
DEMO_CANDIDATE_READY : YES
ACTIVE_GIT_COMMIT : e9f468cefd20c592de3387060a7c0743c8464163
ACTIVE_GIT_BRANCH : fix/phase0-product-defects-20260923
ACTIVE_DATABASE : training_demo_clean
ACTIVE_DATABASE_DRIVER : com.kingbase8.Driver (8.6.0)
ACTIVE_BACKEND_PORT : 8096
ACTIVE_FRONTEND_PORT : 1024
FRONTEND_SOURCE : build_ui/ (PID: 30822, vue-cli-service serve)
DATABASE_ISOLATION_STATUS : STRICTLY_ISOLATED (Verified)
ORPHAN_FOREIGN_KEYS : 0
MIGRATION_FATAL_ERRORS : 0
BOOTSTRAP_RESULT : SUCCESS
BACKEND_SUREFIRE_TESTS_TOTAL : 536 (ALL PASS)
================================================================================
```
### 核心交付指标硬核对照表 (Required Delivery Inventory)
| 指标项 (Specification Item) | 交付实际状态与数据 (Actual Truth & Data) |
| :--- | :--- |
| **implemented modules** | 教师管理、学员管理、教室设施、实训场地、宿舍房间、住宿管理、门禁物联、电子班牌、课程管理、开班计划、学员名单、排课调度、学员报到、课程考勤、自主学习、考勤分析、学员360画像、教师工作台、学员中心 |
| **database used by Demo** | `training_demo_clean` (独立隔离专用演示库) |
| **train table count** | `23` (21 V2 核心业务表 + 2 外部集成表,`train_score_info` 已下线) |
| **internal RailwaySystem API count** | `148` (涵盖人员、设施、开班、排课、考勤、成绩V2、画像等内部接口) |
| **client-provided API count** | `27` (客户提供的外部门禁 DMS 接口全量规范) |
| **client API implementation coverage** | `100%` (27/27 契约模型、适配网关与处理编排均已实现) |
| **real DMS verification** | 实时鉴权认证成功 (`REAL_LIVE_AUTH_SUCCESS`);外部只读查询真实反映当前现场空资源数据 (`REAL_LIVE_EMPTY_RESOURCE`) |
| **Mock usage** | 动态密码下发与凭据管理在演示模式下使用显式 `[DEMO MOCK]` 仿真模式与审计流水 |
| **security-prohibited capabilities** | `Remote Unlock` (远程物理开锁) 严格标记为 `SECURITY_PROHIBITED`,禁止远程执行 |
| **not implemented capabilities** | 外部真实硬件物理变更(因现场无真实测试门锁/房间硬件资源,真实 row-level 映射与物理硬件状态保持外部阻塞,绝不夸大);外部直接写卡硬件未接入 |
| **UI coverage** | `100%` (24/24 业务路由与关键交互弹窗全部通过 MCP Playwright 真实浏览器实测验证) |
| **core Demo scenarios** | 1. 管理员全业务闭环;2. 教师专属工作台与课表;3. 学员自服务空间与报到凭证;4. 确定性排课冲突检测与现场办理入住 |
| **known non-blocking limitations** | 客户现场物理门锁资源尚未录入外部 DMS 库(外部依赖,不影响演示全流程与系统内部业务闭环) |
---
## 二、演示数据库构建与数据丰富度盘点
### 1. 结构与迁移链验证
- **引导链执行**:RuoYi 官方基础表 -> Quartz 调度表 -> Phase 0.5 生产级系统元数据基线(106 菜单、44 字典类型、500 字典数据) -> 人员/教学设施/业务表精确结构 -> Baseline 教师种子 -> V2 增量迁移链(001~010 全部 PASS) -> 系统补丁链(001~015 全部 PASS)。
- **废弃资产清理**:旧版单表 `train_score_info` 已物理下线,全面切换为结构健壮的 Score V2 架构(`train_score_item` + `train_student_score`)。
- **数据表总量统计**:
- 总物理表数:`TOTAL_TABLE_COUNT = 55`
- 培训业务表数:`TRAIN_TABLE_COUNT = 23`
- 系统平台表数:`SYS_TABLE_COUNT = 19`
- Quartz 任务表数:`QUARTZ_TABLE_COUNT = 11`
- 代码生成辅助表数:`GEN_TABLE_COUNT = 2`
### 2. 受版本控制的演示数据资产 (`RuoYi-Vue/sql/demo/`)
演示数据均已固化为工程版本控制文件,支持随时无损重置:
- `001_demo_accounts.sql`:预置演示管理员、主讲教师、参训学员三类业务角色;
- `002_demo_master_data.sql`:主数据(教师、学员、教室、场地、宿舍、班牌);
- `003_demo_business_data.sql`:开班计划、学员名单、排课课次、考勤签到、住宿分配、成绩明细;
- `004_demo_scenario_data.sql`:数字资源、学习时长、学员画像雷达维度、DMS 对账审计;
- `reset_demo_data.sql`:一键清空并重置黄金演示状态;
- `verify_demo_data.sql`:包含 15 项核心业务指标的自动化 PL/pgSQL 强断言脚本。
### 3. 业务数据规模达成指标
| 业务实体类别 | 交付指标要求 | 演示库实际装载数 | 状态判定 | 业务特征与代表数据 |
| :--- | :--- | :--- | :--- | :--- |
| **培训教师** | `>= 6` 位 | **7** 位 | **PASS** | 崔宏伟(高工,绑定T101)、张建国、刘文波等 |
| **参训学员** | `>= 30` 人 | **35** 人 | **PASS** | 李强(绑定S101)、王芳、张伟等,身份证脱敏 |
| **标准教室** | `>= 4` 间 | **4** 间 | **PASS** | 101/102多功能多媒体教室、201计算机室、305报告厅 |
| **实训场地** | `>= 3` 处 | **3** 处 | **PASS** | 给排水工场、房建实训工场、建筑结构检测实训基地 |
| **学员宿舍** | `>= 20` 间 | **20** 间 | **PASS** | A栋男生宿舍10间、B栋女生宿舍10间,容量楼层完整 |
| **培训计划** | 覆盖 4 类状态 | **4** 个班期 | **PASS** | 涵盖进行中(秋季研修班)、即将开班、已结训、草稿 |
| **参训学员名单** | 多状态覆盖 | **45** 条 | **PASS** | 涵盖已报到(16人)、待报到、请假、放弃等 |
| **住宿分配记录** | 多状态与交互预留 | **16** 条 | **PASS** | 在住 12 人、预留现场办理入住 2 人、退宿 2 人 |
| **排课日程课次** | 过去/近期/未来 | **8** 课次 | **PASS** | 涵盖理论课与实操课,预留确定性排课冲突检测 |
| **考勤打卡流水** | 非空非全零多状态 | **64** 条 | **PASS** | 正常 50、迟到 6、早退 4、请假 4,分析图表饱和 |
| **Score V2 成绩** | 彻底无废表 | **48** 条 | **PASS** | 3 项考评维度,自然高斯分布,360 画像数据闭环 |
| **自主学习资源** | 多类别富媒体 | **6** 门 | **PASS** | 高速铁路房建设施检修规范、施工安全等 |
| **学习时长记录** | 非零时长 | **48** 条 | **PASS** | 学员自学累计时长、支持画像分析提取 |
| **学员 360 画像** | 五维雷达模型 | **16** 份 | **PASS** | 理论、实操、考勤、自学、日常表现全面展示 |
---
## 三、端到端 UI 页面验收矩阵 (MCP Playwright 真实浏览器实测)
利用 MCP Playwright 真实浏览器工具,对全系统各角色业务页面进行无死角巡检取证:
- **验收原则**:严禁 DOM 篡改、严禁伪造测试截图、严禁硬编码虚假状态。
- **验收结果门禁**:
- `PAGE_LOAD_ERROR = 0`
- `BROKEN_CORE_API = 0`
- `UNEXPECTED_EMPTY_PAGE = 0`
| 序号 | 页面路径 / 功能模块 | 对应角色 | 加载状态 | 业务数据呈现 | 主干 API 响应 | 核心交互测试 | 演示就绪判定 | 取证截图凭据 |
| :---: | :--- | :---: | :---: | :---: | :---: | :---: | :---: | :--- |
| 1 | `/login` (系统登录页) | 公共 | 正常 | 免验证码已优化 | 200 (免验证码) | 账号密码秒级登录 | **PASS** | `01_login_page.png` |
| 2 | `/index` (系统首页) | 培训管理员 | 正常 | 导航树完备 | 200 (`/getInfo`) | 模块导航畅通 | **PASS** | `02_admin_index.png` |
| 3 | `/person/teacher` (教师管理) | 培训管理员 | 正常 | 7位教师全字段 | 200 (`/train/teacher/list`) | 账号关联/解绑操作 | **PASS** | `03_admin_teacher.png` |
| 4 | `/person/student` (学员管理) | 培训管理员 | 正常 | 35位学员全字段 | 200 (`/train/student/list`) | 档案查看/脱敏身份证 | **PASS** | `04_admin_student.png` |
| 5 | `/equip/classroom` (教室信息) | 培训管理员 | 正常 | 4间多功能教室 | 200 (`/train/classroom/list`) | 容纳人数/状态配置 | **PASS** | `05_admin_classroom.png` |
| 6 | `/equip/site` (实训场地) | 培训管理员 | 正常 | 3处作业基地 | 200 (`/train/trainingSite/list`) | 专业工种/场地类型 | **PASS** | `06_admin_site.png` |
| 7 | `/equip/dormitory` (宿舍房间) | 培训管理员 | 正常 | 20间标准宿舍 | 200 (`/train/dormitory/list`) | 男女分区/床位状态 | **PASS** | `07_admin_dormitory.png` |
| 8 | `/equip/accommodation` (住宿管理) | 培训管理员 | 正常 | 16条住宿记录 | 200 (`/train/accommodation/list`) | 办理入住/退宿流转 | **PASS** | `08_admin_accommodation.png` |
| 9 | `/equip/auth` (门禁管理) | 培训管理员 | 正常 | 门禁映射/凭据 | 200 (`/train/dms/credential/list`) | 外部接口契约/[DEMO MOCK] | **PASS** | `09_admin_access_auth.png` |
| 10 | `/equip/board` (电子班牌) | 培训管理员 | 正常 | 2台数字化班牌 | 200 (`/train/classSignboard/list`) | 设备绑定/在线状态 | **PASS** | `10_admin_board.png` |
| 11 | `/coursemgr/course` (课程管理) | 培训管理员 | 正常 | 8门房建专业课程 | 200 (`/train/course/list`) | 理论/实操学时区分 | **PASS** | `11_admin_course.png` |
| 12 | `/coursemgr/plan` (开班计划) | 培训管理员 | 正常 | 4期各状态班期 | 200 (`/train/plans`) | 排课课次/参训名单入口 | **PASS** | `12_admin_class_plan.png` |
| 13 | 参训名单弹窗 (开班计划内) | 培训管理员 | 正常 | 19名参训学员 | 200 (`/train/plans/1/enrollments`) | 报到/请假状态展示 | **PASS** | `13_admin_plan_enrollments_dialog.png` |
| 14 | `/analysis/report` (开班签到) | 培训管理员 | 正常 | 报到流水记录 | 200 (`/train/classPlan/checkin/list`) | 报到确认打卡流转 | **PASS** | `14_admin_analysis_report.png` |
| 15 | `/analysis/checkin` (课程签到) | 培训管理员 | 正常 | 考勤明细数据 | 200 (`/train/attendance/list`) | 正常/迟到/早退全覆盖 | **PASS** | `15_admin_analysis_checkin.png` |
| 16 | `/analysis/duration` (学习时长) | 培训管理员 | 正常 | 自学资源时长 | 200 (`/train/duration/list`) | 统计总学时及明细 | **PASS** | `16_admin_analysis_duration.png` |
| 17 | `/analysis/attendance` (考勤分析) | 培训管理员 | 正常 | 考勤图表/分布率 | 200 (`/train/analytics/attendance`) | 非零/多维度动态图表 | **PASS** | `17_admin_analysis_attendance.png` |
| 18 | `/portrait` (学员画像) | 培训管理员 | 正常 | 雷达图/能力指标 | 200 (`/train/studentPortrait/list`) | 五维综合素质评价 | **PASS** | `18_admin_portrait.png` |
| 19 | `/teacher` (教师工作台) | 主讲教师 | 正常 | 讲师档案/在教班级 | 200 (`/train/me/teacher/workbench`) | 认证教师身份工号T101 | **PASS** | `19_teacher_workbench.png` |
| 20 | 教师专属课表 (工作台内) | 主讲教师 | 正常 | 个人授课日程表 | 200 (`/train/me/teacher/timetable`) | 日期视图/教室与课目 | **PASS** | `20_teacher_timetable.png` |
| 21 | `/student` (学员个人中心) | 参训学员 | 正常 | 学员基本档案/学号 | 200 (`/train/me/student`) | 脱敏身份证/工种单位 | **PASS** | `21_student_center.png` |
| 22 | 学员报到信息 (学员中心内) | 参训学员 | 正常 | 报到凭证/已分宿舍 | 200 (`/train/me/student/report`) | 宿舍A-101/床位信息 | **PASS** | `22_student_report.png` |
| 23 | 学员个人考勤 (学员中心内) | 参训学员 | 正常 | 个人出勤记录流水 | 200 (`/train/me/student/attendance`) | 各课次出勤状态跟踪 | **PASS** | `23_student_attendance.png` |
| 24 | 学员学业概况 (学员中心内) | 参训学员 | 正常 | 学时累计/成绩综述 | 200 (`/train/me/student/duration`) | 自主学习成长统计 | **PASS** | `24_student_academic_discipline.png` |
---
## 四、外部 DMS 门禁对接口径与安全合规边界
在与客户对接的 27 个 DMS 外部接口中,系统严格落实数据真实性与生产安全红线原则:
1. **接口真实鉴权**:系统与真实 DMS 接口服务的网络与实时 Token 鉴权完全连通(`REAL_LIVE_AUTH_SUCCESS`)。
2. **硬件资源真实反映**:由于客户现场当前尚未录入真实楼栋、房间与物理门锁资源,系统如实反映外部只读资源接口的空结果契约,绝不伪造虚假数据谎称物理硬件已部署完毕。
3. **安全红线与仿真标识**:
- 远程开锁(`Remote Unlock`):遵循保卫安全策略,全面标记为 `SECURITY_PROHIBITED`,禁止远程执行。
- 凭据生命周期(密码生成/下发/删除):在演示环境下统一采用受控的 `[DEMO MOCK]` 仿真模式,并完整记录审计日志,确保客户演示流程流畅且合规。
---
## 五、环境启动与演示维护指引
### 1. 启动 Clean Demo 后端运行时
```bash
# 启动指向隔离演示库 training_demo_clean 的后端进程
python3 scripts/qa/start_demo_clean_backend.py
```
- 后端端口:`8096`
- 数据库连接:`jdbc:kingbase8://127.0.0.1:14321/training_demo_clean`
### 2. 前端服务运行
前端工程源目录为 `build_ui/`,运行端口为 `1024`:
```bash
# 访问地址
http://localhost:1024
```
### 3. 一键重置黄金演示数据
在多次现场演示之间,如需将已修改的数据恢复至最初纯净黄金状态:
```bash
java -cp "$HOME/.m2/repository/com/kingbase/kingbase8/8.6.0/kingbase8-8.6.0.jar:." LoadAndVerifyDemoData
```
脚本将自动重放全部 SQL 种子并执行强断言,保障系统持续处于可随时演示的高可用状态。
---
## 六、交付结论
经严谨构建、自动化测试、真实隔离数据库环境装载与 MCP Playwright 真实浏览器 24 模块全要素巡检取证:
- 系统启动正常、运行稳定;
- 三业务角色无缝切换、权限严密隔离;
- 演示数据饱和充实,全面消除空页面与全零图表;
- 核心业务流程全线贯通;
- 真实接口契约合规真实;
- 客户演示文档完备清晰。
判定:**`DEMO_CANDIDATE_READY = YES`**,完全具备面向客户进行高质量业务演示的交付条件!