Files
railwaysystem/docs/development/rbac-r2/02_role_permission_matrix.md
T

11 KiB

RailwaySystem 角色体系与权限矩阵设计 (Role & Permission Matrix)

  • 设计版本: R.2A Design Freeze
  • 设计日期: 2026-09-15
  • 核心目标: 建立三角色(Admin, Teacher, Student)标准化角色定义,冻结权限命名空间,输出全量权限比对矩阵、角色菜单矩阵与角色操作权限矩阵。

1. 预置业务角色模型设计 (Role Model)

针对一期业务闭环与后续演进,系统正式规划 3 个预置业务角色(写入 sys_role):

角色标识 (role_key) 角色名称 (role_name) 角色排序 (role_sort) 数据范围 (data_scope) 状态 (status) 职责与业务定义
train_admin 培训管理员 3 1 (全部数据权限) 0 (正常) 负责全局师资、学员、计划、排课、报到、考勤、场地等业务的集中调度与管理。
train_teacher 培训教师 4 2 (自定义业务推导) 0 (正常) 仅能查看与本人授课相关的课程、课表、培训班及学员,具备课次考勤查看与合规操作权限。
train_student 培训学员 5 2 (本人私有推导) 0 (正常) 仅能查看本人的参训班级、课程日程、个人报到状态、个人考勤、学时累计与个人画像。

注:超级管理员 admin (role_id=1) 仍保留在系统最顶层,作为系统底层运维、字典与安全审计兜底。


2. 权限命名空间统一冻结方案 (FINAL_PERMISSION_NAMESPACE_PROPOSAL)

2.1 规范原则

所有业务领域权限字符串必须严格遵循标准三段式格式:

train:<domain>:<action>
  • <domain>: 业务领域名称,全部小写单数或固定模块名(如 teacher, student, course, classroom, site, plan, lesson, enrollment, report, attendance, board, duration, portrait)。
  • <action>: 具体操作谓词,标准化定义:
    • 查询类:list (列表分页), query (详情单查), export (报表导出)
    • 变更类:add (新增), edit (编辑修改), remove (删除/作废)
    • 核心状态机动作类:confirm (确认), checkin (打卡), complete (归档完成)

2.2 命名空间收敛与历史兼容

  1. 统一班牌命名空间:
    • 纠正历史版本中混杂的 system:board:*,在 R.2B 中全量收敛为 train:board:list/add/query/edit/remove/export。
  2. 严守已正式冻结的 Action 契约:
    • train:report:confirm (报到确认) —— 严格保留
    • train:attendance:checkin (课次签到打卡) —— 严格保留
    • train:attendance:edit (考勤人工修正) —— 严格保留
    • train:plan:complete (结束培训计划) —— 严格保留

3. 全量权限字符串审计与对齐矩阵 (PERMISSION_MISMATCH_MATRIX)

本矩阵排查了当前代码库中所有业务模块的权限字符串匹配状态:

业务模块 (Module) 前端权限 (Frontend Perm) 后端权限 (Backend Perm) 数据库 sys_menu.perms 现状评定 (Status) R.2 规范与整改方案
教师管理 train:teacher:add/edit train:teacher:list/query/add/edit 缺失按钮行 MISSING 在 005_...sql 中为 sys_menu 补全对应按钮权限行
学员管理 train:student:add/query train:student:list/query/add 缺失按钮行 MISSING 补齐 train:student:list/add/edit/query/export
课程管理 train:course:add/edit train:course:list/query/add/edit 缺失按钮行 MISSING 补齐 train:course:list/query/add/edit
教室资源 train:classroom:edit train:classroom:list/edit 缺失按钮行 MISSING 补齐 train:classroom:list/edit
实训场地 train:site:edit train:site:list/edit 缺失按钮行 MISSING 补齐 train:site:list/edit
培训计划 train:plan:add/edit/query/complete train:plan:list/query/add/edit/complete 缺失按钮行 MISSING 补齐 train:plan:* 按钮行
入班分班 train:enrollment:add/edit/remove/query/list/import train:enrollment:list/query/add/edit/remove/import 缺失按钮行 MISSING 补齐 train:enrollment:* 按钮行
排课编排 train:lesson:add/edit/remove train:lesson:query/add/edit/remove 缺失按钮行 MISSING 补齐 train:lesson:* 按钮行
现场报到 train:report:confirm/export train:report:list/confirm/export train:report:list/confirm/export MATCH 完全合规,无需调整
考勤管理 train:attendance:export train:attendance:list/checkin/edit/export train:attendance:list/checkin/edit/export MATCH 前端增加操作按钮权限控制
电子班牌 system:board:add/edit/remove/export system:board:list/query/add/edit/remove/export 缺失/未归入train MISMATCH 前后端与 SQL 统一切换为 train:board:*
学习时长 train:learning:export train:learning:list/export train:learning:list/export MATCH 完全合规
学员画像 train:portrait:export train:portrait:query/export train:portrait:query/export MATCH 完全合规
宿舍管理 train:dormitory:list/edit train:dormitory:list/edit 缺失按钮行 MISSING 补齐 train:dormitory:list/edit
废弃遗留 train:auth:*, train:role:* 无对应控制器 无 LEGACY 清理废弃未使用的历史遗留权限标签

4. 角色-菜单矩阵 (ROLE_MENU_MATRIX)

本矩阵定义了不同身份用户登录系统后,前端侧边栏动态加载的菜单可见性:

菜单项 / 业务模块 路由路径 (Path) 管理员 (Admin) 教师 (Teacher) 学员 (Student) 交互与展示说明
系统控制台首页 /index VISIBLE HIDDEN HIDDEN 管理员全局概览
教师工作台首页 /train/teacher/dashboard HIDDEN VISIBLE HIDDEN 教师专属 Landing 页 (我的课表/班级)
学员培训中心首页 /train/student/portal HIDDEN HIDDEN VISIBLE 学员专属 Landing 页 (报到/课表/考勤)
师资队伍管理 /business/teacher VISIBLE HIDDEN HIDDEN 教师仅能由管理员维护
学员档案管理 /business/student VISIBLE HIDDEN HIDDEN 学员全量档案仅管理员可见
课程标准化管理 /business/course VISIBLE HIDDEN HIDDEN 课程全量字典与学时标准
教学场地/设施 /business/classroom, /business/site VISIBLE HIDDEN HIDDEN 物理教学资源管理
培训计划管理 /business/training-plan VISIBLE HIDDEN HIDDEN 全局立项与归档操作
课表编排日历 /business/timetable/lesson VISIBLE HIDDEN HIDDEN 全局智能排课与冲突消解
我的授课日程 /train/teacher/timetable HIDDEN VISIBLE HIDDEN 教师专有:仅呈现本人授课课次
我的培训课表 /train/student/timetable HIDDEN HIDDEN VISIBLE 学员专有:仅呈现本人参训课表
我的教学班级 /train/teacher/classes HIDDEN VISIBLE HIDDEN 教师专有:所授课班级及学员花名册
现场报到管理 /business/training-report VISIBLE HIDDEN HIDDEN 管理端集中报到审核核销
我的报到信息 /train/student/report HIDDEN HIDDEN VISIBLE 学员专有:个人报到凭证与状态核对
课次考勤管理 /business/attendance VISIBLE HIDDEN HIDDEN 管理端全局考勤大盘与异常处理
班级授课考勤 /train/teacher/attendance HIDDEN CONDITIONAL HIDDEN 仅支持教师查看本人课次考勤流水
我的考勤打卡 /train/student/attendance HIDDEN HIDDEN VISIBLE 学员专有:仅查阅本人签到签退流水
智慧电子班牌 /business/board VISIBLE HIDDEN HIDDEN 终端物理状态与大屏绑定
学员学习时长 /business/duration VISIBLE HIDDEN HIDDEN 全局学时统计
我的学时档案 /train/student/duration HIDDEN HIDDEN VISIBLE 学员个人有效学时汇算明细
学员画像大盘 /business/portrait VISIBLE HIDDEN HIDDEN 全员综合评价分析
我的个人画像 /train/student/portrait HIDDEN HIDDEN VISIBLE 学员本人的雷达评价与成长轨迹
系统与操作日志 /system/log/operlog VISIBLE HIDDEN HIDDEN 安全审计人员专属
系统用户/角色管理 /system/user, /system/role VISIBLE HIDDEN HIDDEN 基础用户权限分配

5. 角色-操作权限矩阵 (ROLE_ACTION_MATRIX)

本矩阵明确在各业务功能的操作点上,不同角色的允许状态(ALLOW / DENY / CONDITIONAL):

业务操作动作 (Action) 管理员 (Admin) 教师 (Teacher) 学员 (Student) 业务安全规则与执行逻辑
创建/编辑教师主体 ALLOW DENY DENY 仅教务管理员具备师资建档权限
创建/编辑学员档案 ALLOW DENY DENY 仅教务管理员具备学员建档与身份证录入权限
开通/绑定登录账号 ALLOW DENY DENY 管理员受控统一分配账号
创建/修改培训计划 ALLOW DENY DENY 培训计划属于全局业务管理资源
执行编排排课 ALLOW DENY DENY 智能排课引擎与冲突消解仅限管理端
确认 Soft Warning 排课 ALLOW DENY DENY 普通保存流程仅限教务操作员确认
学员批量分配入班 ALLOW DENY DENY 计划学员编组仅限管理员操作
现场报到确认 ALLOW DENY DENY 线下现场审核证件并核销报到
课次签到打卡 CONDITIONAL DENY ALLOW 学员本人通过终端打卡;管理员受控补签
课次签退打卡 CONDITIONAL DENY ALLOW 学员离场打卡;签退时间严格冻结防篡改
考勤人工修正 (迟到等) ALLOW CONDITIONAL DENY 管理员全权修正;教师经授权可提交修正申请
结束计划与联动归档 ALLOW DENY DENY 仅管理员可终结培训计划全生命周期
查看他人敏感信息 ALLOW DENY DENY 教师/学员严禁读取未授权的他人身份证与隐私
导出业务分析报表 ALLOW CONDITIONAL DENY 教师仅能导出所带班级名册;学员无导出权
用户与系统权限维护 ALLOW DENY DENY 严防普通用户提权