Files
railwaysystem/docs/handbook/06-api-and-permission-overview.md
T

5.8 KiB
Raw Blame History

06. RailwaySystem API 与权限体系总览

文档定位:面向前端开发、集成团队及安全审计人员,系统梳理核心业务 API 契约、专用写操作(Write Actions)及 RBAC 权限体系。 当前基线:Final Candidate 5a49b2e2988bf23ca2a70568264c05b24dfda1b6 (origin/feat/cicd-pipeline)


1. 核心业务 API 端点分组

系统提供遵循 RESTful 规范的标准化 API 接口体系,统一由 ruoyi-admin 暴露,业务逻辑封装于 ruoyi-train。各业务域核心端点如下:

1.1 基础教务资源接口

  • 教师管理:GET /train/teacher/list, POST /train/teacher, PUT /train/teacher, DELETE /train/teacher/{ids}
  • 学员主档:GET /train/student/list, POST /train/student, PUT /train/student, GET /train/student/{id} (敏感信息脱敏)
  • 课程资源:GET /train/course/list, POST /train/course, PUT /train/course
  • 教学空间:GET /train/classroom/list, POST /train/classroom, GET /train/training-site/list, POST /train/training-site
  • 宿舍生活:GET /train/dormitory/list, POST /train/dormitory, GET /train/dormitory/{id}/occupants (住户查询)
  • 电子班牌:GET /train/board/list, POST /train/board, PUT /train/board, DELETE /train/board/{id} (后端 API 路径为 /train/board,对应前端页面路由为 /equip/board)

1.2 开班计划与排课编排接口

  • 开班计划:
    • POST /train/plans —— 创建开班计划(状态置为 0:草稿)
    • GET /train/plans/{id} —— 查询开班计划详情
    • POST /train/plans/{id}/complete —— 一键结训强事务操作(计划状态更新为 2,联动更新在读学员参训状态为 4)
  • 本期课程:POST /train/plans/{id}/courses, GET /train/plans/{id}/courses
  • 学员报名:POST /train/plans/{id}/enrollments (名单录入), PUT /train/enrollments/{id}/status (状态调整)
  • 课次编排:
    • POST /train/lessons/check-conflict —— 四维排课冲突实时预检(失焦调用,返回 LessonConflictVO)
    • POST /train/plans/{id}/lessons —— 新增课次(标准 POST 保存,严格禁止 force / ignoreConflict / overrideConflict 旁路参数;排课流程中 Lesson detail GET: NOT CALLED)
    • GET /train/plans/{id}/timetable —— 培训班可视化课表视图

1.3 系统管理与在线接口工具

  • 系统接口 (Swagger UI):
    • 真实系统入口:系统工具 → 系统接口
    • 接口健康状况:Swagger UI 正常渲染,v3/api-docs = 200,swagger-resources = 200,无 502 坏网关,无死链
  • 系统工具其他可见项:表单构建、代码生成正常可见可用

2. 专用写操作 (Core Write Actions)

针对现场高频、高安全核验的业务场景,系统设计了专用的写操作端点:

业务动作 HTTP 动词与 URL 路径 核心业务行为与事务约束 所需安全权限
开班现场报到 POST /train/plans/{planId}/enrollments/{enrollmentId}/report
(或 /train/enrollments/{enrollmentId}/report)
核验报到时效,写入报到流水 train_class_report,联动将参训档案 enrollment_status 置为 1 (已报到)。 train:report:confirm
课次签到打卡 POST /train/lessons/{lessonId}/attendance/checkin
(或 /train/attendance/sign-in)
记录学员课次签到时间戳,校验是否超出允许时段,生成或更新考勤结论。 train:attendance:checkin
课次签退打卡 POST /train/attendance/sign-out 记录学员法定签退时间戳,结合签到时间自动核算考勤最终结论(正常/早退)。 train:attendance:checkin
教师代签/请假修正 POST /train/lessons/{lessonId}/attendance/adjust
(或 PUT /train/attendance/{checkinId})
教师或管理员人工修正考勤结论(0~4),强制将 manual_flag 置为 1 留痕存盘。 train:attendance:edit

3. RBAC 权限体系与菜单治理

系统全面对齐若依标准的“用户—角色—菜单”基于角色的访问控制(RBAC)架构:

3.1 核心业务权限标识符

  • 报到模块:train:report:list (查询), train:report:export (导出), train:report:confirm (现场确认)
  • 考勤模块:train:attendance:list (查询), train:attendance:export (导出), train:attendance:checkin (打卡), train:attendance:edit (代签调整)
  • 学时分析:train:learning:list, train:learning:export
  • 学员画像:train:portrait:query, train:portrait:export

3.2 发布增量 003 权限补齐机制

在最新的数据库迁移脚本 003_report_attendance_action_permissions.sql 中:

  1. 菜单项创建:脚本自动向 public.sys_menu 表中注入了 train:report:confirm (ID: 2181)、train:attendance:checkin (ID: 2182) 与 train:attendance:edit (ID: 2183) 三项按钮级权限记录;
  2. 角色绑定规范说明:
    • 003 脚本只负责在数据库中安全声明这三项可授权的原子能力项;
    • 角色与菜单的绑定(sys_role_menu)属于环境运行时配置(ENVIRONMENT_CONFIGURATION),管理员可根据各局各院校的实际管理制度,在前端【系统管理 -> 角色管理】中将上述权限灵活分配给“班主任”、“任课教师”或“考勤监督员”等业务角色。

4. 技术参考链接 (Technical References)