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

78 lines
5.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`<br>*(或 `/train/enrollments/{enrollmentId}/report`)* | 核验报到时效,写入报到流水 `train_class_report`,联动将参训档案 `enrollment_status` 置为 1 (已报到)。 | `train:report:confirm` |
| **课次签到打卡** | `POST /train/lessons/{lessonId}/attendance/checkin`<br>*(或 `/train/attendance/sign-in`)* | 记录学员课次签到时间戳,校验是否超出允许时段,生成或更新考勤结论。 | `train:attendance:checkin` |
| **课次签退打卡** | `POST /train/attendance/sign-out` | 记录学员法定签退时间戳,结合签到时间自动核算考勤最终结论(正常/早退)。 | `train:attendance:checkin` |
| **教师代签/请假修正**| `POST /train/lessons/{lessonId}/attendance/adjust`<br>*(或 `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)
* API V2 契约总纲:[docs/api-v2/00_readme.md](../api-v2/00_readme.md)
* 全量 DTO/VO 字典:[docs/api-v2/06_dto_vo_catalog.md](../api-v2/06_dto_vo_catalog.md)
* 权限与全量错误码定义:[docs/api-v2/10_permission_and_error_codes.md](../api-v2/10_permission_and_error_codes.md)
* 报到与考勤权限迁移验证:[docs/reports/archive/20260915/release-notes.md](../reports/archive/20260915/release-notes.md)