11 KiB
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 命名空间收敛与历史兼容
- 统一班牌命名空间:
- 纠正历史版本中混杂的
system:board:*,在 R.2B 中全量收敛为train:board:list/add/query/edit/remove/export。
- 纠正历史版本中混杂的
- 严守已正式冻结的 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 |
严防普通用户提权 |