Files
railwaysystem/docs/development/rbac-r2/07_e2e_r2_acceptance_plan.md
T

85 lines
5.2 KiB
Markdown
Raw Normal View History

# RailwaySystem 三角色端到端验收方案设计 (E2E-R2 Acceptance Plan)
- **设计版本**: R.2A Design Freeze
- **设计日期**: 2026-09-15
- **核心目标**: 全面规划未来在 R.2B 实现落地后,用于终审验收的三角色(Admin, Teacher, Student)全链路端到端自动化与人工验收方案。
---
## 1. 验收环境与前置准备
- **部署环境**: 生产环境或预发布环境(KingbaseES V009R003C018 数据库已执行 `004_...sql` 与 `005_...sql`)。
- **统一访问入口**: `http://192.168.139.230:8082/login`。
- **命名空间约定**: 验收专用账号统一带有前缀 `R2_`(如 `R2_admin`, `R2_teacher_wang`, `R2_student_zhang`)。
---
## 2. 五阶段端到端全流程验收矩阵 (Stages A ~ E)
### 2.1 Stage A: 管理员建档与账号分配 (Admin Operations)
- **用例编号**: `E2E-R2-A01` ~ `A04`
- **执行角色**: `train_admin` (培训管理员) 或超级管理员
- **操作步骤**:
1. 登录系统,进入【师资队伍管理】,新增教师 `R2_王老师`,勾选【同时开通登录账号】,设置账号 `r2_teacher`,初始密码 `Railway@2026`。
2. 进入【学员档案管理】,新增学员 `R2_张三` 与 `R2_李四`,分别开通账号 `r2_student_01` 与 `r2_student_02`。
3. 创建培训计划《R2_高速铁路综合运维实训班》,完成课程绑定与批量分班入班。
4. 编排课次并分配 `R2_王老师` 担任授课教师。
- **验收断言**:
- `train_teacher.user_id` 与 `train_student.user_id` 成功写入,非 NULL。
- `sys_user_role` 正确关联 `train_teacher` (role_id=4) 与 `train_student` (role_id=5)。
### 2.2 Stage B: 教师独立工作台与数据隔离 (Teacher Experience)
- **用例编号**: `E2E-R2-B01` ~ `B05`
- **执行角色**: `r2_teacher` (教师身份)
- **操作步骤**:
1. 使用 `r2_teacher` 登录统一登录页。
2. 验证动态 Landing:自动重定向至教师工作台 `/train/teacher/dashboard`。
3. 查验侧边栏:仅包含【教师工作台】、【我的授课日程】、【任教班级学员】,**绝无**任何系统管理、全量计划维护、场地配置等管理菜单。
4. 查验日历看板:仅显示本人被排课的课次,不显示其他教师课次。
5. 查验学员花名册:仅显示自己所带班级的学员名单,且身份证号自动脱敏(后四位)。
6. **安全渗透测试 (IDOR 越权拦截)**:
- 尝试直接访问管理端接口 `GET /train/student/list` -> 预期返回 `403 Forbidden`。
- 尝试访问他人课次详情 `GET /train/timetable/lesson/999` -> 预期返回 `403/404` 拒止。
- **验收判定**: 教师功能闭环完整,菜单受限严格,横向越权拦截率 100%。
### 2.3 Stage C: 学员个人中心与隐私隔离 (Student Experience)
- **用例编号**: `E2E-R2-C01` ~ `C06`
- **执行角色**: `r2_student_01` (学员张三)
- **操作步骤**:
1. 使用 `r2_student_01` 登录系统。
2. 验证动态 Landing:自动重定向至学员个人培训中心 `/train/student/portal`。
3. 查验侧边栏:仅出现【我的培训】、【我的课表】、【我的报到】、【我的考勤打卡】。
4. 查验个人信息:显示张三本人档案,状态为 `待报到 (0)`。
5. 查验课表:仅显示张三所在班级的课程日程。
6. **安全渗透测试 (IDOR 越权拦截)**:
- 尝试在 DevTools 中将查询参数篡改为李四的 ID:`GET /train/student/{lisi_id}` -> 预期返回 `403 Forbidden`。
- 尝试提交带有他人 ID 的打卡请求 -> 预期后端强制校验登录人身份,返回 `403/400` 拒止。
- 查验个人画像与学时:完全只加载张三本人的成长数据。
- **验收判定**: 学员视角清晰,个人隐私高度受保护,无法读取或篡改其他学员信息。
### 2.4 Stage D: 注册入口安全受控策略核验 (Registration Policy)
- **用例编号**: `E2E-R2-D01` ~ `D02`
- **执行角色**: 匿名外部访客
- **操作步骤**:
1. 浏览器打开 `/login` 登录页,肉眼核验页面**无任何“立即注册”链接或按钮**。
2. 核验登录卡片下方是否清晰呈现受控提示:“*账号由培训管理部门统一创建与授权维护*”。
3. 自动化发起网络探测请求 `POST /register`:
- 预期返回状态码 `200`,业务响应 `{"code": 500, "msg": "当前系统没有开启注册功能!"}`。
- **验收判定**: 注册入口彻底隐藏,受控拦截坚固有效。
### 2.5 Stage E: 管理端全流程业务无损回归 (Admin Regression)
- **用例编号**: `E2E-R2-E01` ~ `E30`
- **执行角色**: `admin` / `train_admin`
- **操作步骤**:
- 全量重新执行 E2E-R1 的 30 个标准业务用例(师资、学员、课程、场地、计划、双课次 Soft Warning 确认保存、硬阻断、报到、打卡、签退时间冻结、人工修正迟到、状态联动归档、操作日志)。
- **验收判定**: 30 个核心管理端用例全部 100% 通过,无任何功能损伤或回归缺陷。
---
## 3. 验收通过标准 (Exit Criteria)
1. `TOTAL_R2_CASES = 48`
2. `PASSED_R2_CASES = 48 (100%)`
3. `FAILED_CASES = 0`
4. `IDOR_LEAK_COUNT = 0 (全站零越权数据泄露)`
5. `ADMIN_REGRESSION_PASS_RATE = 100%`