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

5.2 KiB
Raw Blame 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%