Files
railwaysystem/docs/codebase-audit/04_api_inventory.md

113 lines
11 KiB
Markdown
Raw Permalink 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.
# 培训接口盘点
## 1. 总体结论
在 `RuoYi-Vue/ruoyi-admin/src/main/java/com/ruoyi/web/controller/train/` 找到 14 个 Controller、84 个映射。每个模块严格重复 6 个端点:列表、导出、详情、新增、修改、删除。
未发现培训业务动作接口、统计聚合接口、Excel 导入接口、外部设备/系统接入接口。`report`、`checkin`、`board`、`auth`、`duration`、`score` 的名称具有业务含义,但其 Controller 实现仍只是通用 CRUD。
## 2. 实际接口
| 模块 | Method | URL | Controller 方法 | 权限码 | 当前用途 |
| --- | --- | --- | --- | --- | --- |
| 教师 | GET | `/train/teacher/list` | `TrainTeacherController.list` | `system:teacher:list` | 纯CRUD:分页列表 |
| 教师 | POST | `/train/teacher/export` | `export` | `system:teacher:export` | 纯CRUD:Excel导出 |
| 教师 | GET | `/train/teacher/{tId}` | `getInfo` | `system:teacher:query` | 纯CRUD:详情 |
| 教师 | POST | `/train/teacher` | `add` | `system:teacher:add` | 纯CRUD:新增 |
| 教师 | PUT | `/train/teacher` | `edit` | `system:teacher:edit` | 纯CRUD:修改 |
| 教师 | DELETE | `/train/teacher/{tIds}` | `remove` | `system:teacher:remove` | 纯CRUD:批量物理删除 |
| 学员 | GET | `/train/student/list` | `TrainStudentController.list` | `system:student:list` | 纯CRUD:分页列表 |
| 学员 | POST | `/train/student/export` | `export` | `system:student:export` | 纯CRUD:Excel导出 |
| 学员 | GET | `/train/student/{sId}` | `getInfo` | `system:student:query` | 纯CRUD:详情 |
| 学员 | POST | `/train/student` | `add` | `system:student:add` | 纯CRUD:新增 |
| 学员 | PUT | `/train/student` | `edit` | `system:student:edit` | 纯CRUD:修改 |
| 学员 | DELETE | `/train/student/{sIds}` | `remove` | `system:student:remove` | 纯CRUD:批量物理删除 |
| 课程 | GET | `/train/course/list` | `TrainCourseController.list` | `system:course:list` | 纯CRUD:分页列表 |
| 课程 | POST | `/train/course/export` | `export` | `system:course:export` | 纯CRUD:Excel导出 |
| 课程 | GET | `/train/course/{cId}` | `getInfo` | `system:course:query` | 纯CRUD:详情 |
| 课程 | POST | `/train/course` | `add` | `system:course:add` | 纯CRUD:新增 |
| 课程 | PUT | `/train/course` | `edit` | `system:course:edit` | 纯CRUD:修改 |
| 课程 | DELETE | `/train/course/{cIds}` | `remove` | `system:course:remove` | 纯CRUD:批量物理删除 |
| 开班计划 | GET | `/train/plan/list` | `TrainClassPlanController.list` | `system:plan:list` | 纯CRUD:分页列表 |
| 开班计划 | POST | `/train/plan/export` | `export` | `system:plan:export` | 纯CRUD:Excel导出 |
| 开班计划 | GET | `/train/plan/{planId}` | `getInfo` | `system:plan:query` | 纯CRUD:详情 |
| 开班计划 | POST | `/train/plan` | `add` | `system:plan:add` | 纯CRUD:新增 |
| 开班计划 | PUT | `/train/plan` | `edit` | `system:plan:edit` | 纯CRUD:修改 |
| 开班计划 | DELETE | `/train/plan/{planIds}` | `remove` | `system:plan:remove` | 纯CRUD:批量物理删除 |
| 宿舍 | GET | `/train/dorminfo/list`;别名 `/train/dormitory/list` | `TrainDormitoryInfoController.list` | `system:info:list` | 纯CRUD:分页列表 |
| 宿舍 | POST | `/train/dorminfo/export`;别名 `/train/dormitory/export` | `export` | `system:info:export` | 纯CRUD:Excel导出 |
| 宿舍 | GET | `/train/dorminfo/{dormId}`;别名 `/train/dormitory/{dormId}` | `getInfo` | `system:info:query` | 纯CRUD:详情 |
| 宿舍 | POST | `/train/dorminfo`;别名 `/train/dormitory` | `add` | `system:info:add` | 纯CRUD:新增 |
| 宿舍 | PUT | `/train/dorminfo`;别名 `/train/dormitory` | `edit` | `system:info:edit` | 纯CRUD:修改 |
| 宿舍 | DELETE | `/train/dorminfo/{dormIds}`;别名 `/train/dormitory/{dormIds}` | `remove` | `system:info:remove` | 纯CRUD:批量物理删除 |
| 宿舍权限 | GET | `/train/auth/list` | `TrainDormAuthController.list` | `system:auth:list` | 纯CRUD:分页列表 |
| 宿舍权限 | POST | `/train/auth/export` | `export` | `system:auth:export` | 纯CRUD:Excel导出 |
| 宿舍权限 | GET | `/train/auth/{authId}` | `getInfo` | `system:auth:query` | 纯CRUD:详情 |
| 宿舍权限 | POST | `/train/auth` | `add` | `system:auth:add` | 纯CRUD:新增授权记录;不下发设备 |
| 宿舍权限 | PUT | `/train/auth` | `edit` | `system:auth:edit` | 纯CRUD:修改授权记录 |
| 宿舍权限 | DELETE | `/train/auth/{authIds}` | `remove` | `system:auth:remove` | 纯CRUD:批量物理删除 |
| 教室 | GET | `/train/classroominfo/list`;别名 `/train/classroom/list`、`/train/info/list` | `TrainClassroomInfoController.list` | `system:info:list` | 纯CRUD:分页列表 |
| 教室 | POST | `/train/classroominfo/export`;同前缀别名 | `export` | `system:info:export` | 纯CRUD:Excel导出 |
| 教室 | GET | `/train/classroominfo/{classRoomId}`;同前缀别名 | `getInfo` | `system:info:query` | 纯CRUD:详情 |
| 教室 | POST | `/train/classroominfo`;同前缀别名 | `add` | `system:info:add` | 纯CRUD:新增 |
| 教室 | PUT | `/train/classroominfo`;同前缀别名 | `edit` | `system:info:edit` | 纯CRUD:修改 |
| 教室 | DELETE | `/train/classroominfo/{classRoomIds}`;同前缀别名 | `remove` | `system:info:remove` | 纯CRUD:批量物理删除 |
| 实训场地 | GET | `/train/site/list` | `TrainTrainingSiteController.list` | `system:site:list` | 纯CRUD:分页列表 |
| 实训场地 | POST | `/train/site/export` | `export` | `system:site:export` | 纯CRUD:Excel导出 |
| 实训场地 | GET | `/train/site/{siteId}` | `getInfo` | `system:site:query` | 纯CRUD:详情 |
| 实训场地 | POST | `/train/site` | `add` | `system:site:add` | 纯CRUD:新增 |
| 实训场地 | PUT | `/train/site` | `edit` | `system:site:edit` | 纯CRUD:修改 |
| 实训场地 | DELETE | `/train/site/{siteIds}` | `remove` | `system:site:remove` | 纯CRUD:批量物理删除 |
| 开班报到 | GET | `/train/report/list` | `TrainClassReportController.list` | `system:report:list` | 纯CRUD:分页列表 |
| 开班报到 | POST | `/train/report/export` | `export` | `system:report:export` | 纯CRUD:Excel导出 |
| 开班报到 | GET | `/train/report/{reportId}` | `getInfo` | `system:report:query` | 纯CRUD:详情 |
| 开班报到 | POST | `/train/report` | `add` | `system:report:add` | 纯CRUD:新增报到记录;非设备报到动作 |
| 开班报到 | PUT | `/train/report` | `edit` | `system:report:edit` | 纯CRUD:修改记录 |
| 开班报到 | DELETE | `/train/report/{reportIds}` | `remove` | `system:report:remove` | 纯CRUD:批量物理删除 |
| 电子班牌 | GET | `/train/board/list` | `TrainElectronicBoardController.list` | `system:board:list` | 纯CRUD:分页列表 |
| 电子班牌 | POST | `/train/board/export` | `export` | `system:board:export` | 纯CRUD:Excel导出 |
| 电子班牌 | GET | `/train/board/{boardId}` | `getInfo` | `system:board:query` | 纯CRUD:详情 |
| 电子班牌 | POST | `/train/board` | `add` | `system:board:add` | 纯CRUD:登记设备;非接入接口 |
| 电子班牌 | PUT | `/train/board` | `edit` | `system:board:edit` | 纯CRUD:修改设备记录 |
| 电子班牌 | DELETE | `/train/board/{boardIds}` | `remove` | `system:board:remove` | 纯CRUD:批量物理删除 |
| 学员签到 | GET | `/train/checkin/list` | `TrainStudentCheckinController.list` | `system:checkin:list` | 纯CRUD:分页列表 |
| 学员签到 | POST | `/train/checkin/export` | `export` | `system:checkin:export` | 纯CRUD:Excel导出 |
| 学员签到 | GET | `/train/checkin/{checkinId}` | `getInfo` | `system:checkin:query` | 纯CRUD:详情 |
| 学员签到 | POST | `/train/checkin` | `add` | `system:checkin:add` | 纯CRUD:新增记录;非设备签到协议 |
| 学员签到 | PUT | `/train/checkin` | `edit` | `system:checkin:edit` | 纯CRUD:修改记录 |
| 学员签到 | DELETE | `/train/checkin/{checkinIds}` | `remove` | `system:checkin:remove` | 纯CRUD:批量物理删除 |
| 成绩 | GET | `/train/scoreinfo/list`;别名 `/train/score/list` | `TrainScoreInfoController.list` | `system:info:list` | 纯CRUD:分页列表 |
| 成绩 | POST | `/train/scoreinfo/export`;别名 `/train/score/export` | `export` | `system:info:export` | 纯CRUD:Excel导出 |
| 成绩 | GET | `/train/scoreinfo/{scoreId}`;别名 `/train/score/{scoreId}` | `getInfo` | `system:info:query` | 纯CRUD:详情 |
| 成绩 | POST | `/train/scoreinfo`;别名 `/train/score` | `add` | `system:info:add` | 纯CRUD:新增;非批量导入/外部采集 |
| 成绩 | PUT | `/train/scoreinfo`;别名 `/train/score` | `edit` | `system:info:edit` | 纯CRUD:修改 |
| 成绩 | DELETE | `/train/scoreinfo/{scoreIds}`;别名 `/train/score/{scoreIds}` | `remove` | `system:info:remove` | 纯CRUD:批量物理删除 |
| 学习时长 | GET | `/train/duration/list` | `TrainStudyDurationController.list` | `system:duration:list` | 纯CRUD:分页明细,不是统计聚合 |
| 学习时长 | POST | `/train/duration/export` | `export` | `system:duration:export` | 纯CRUD:Excel导出 |
| 学习时长 | GET | `/train/duration/{durId}` | `getInfo` | `system:duration:query` | 纯CRUD:详情 |
| 学习时长 | POST | `/train/duration` | `add` | `system:duration:add` | 纯CRUD:新增;非外部上报接口 |
| 学习时长 | PUT | `/train/duration` | `edit` | `system:duration:edit` | 纯CRUD:修改 |
| 学习时长 | DELETE | `/train/duration/{durIds}` | `remove` | `system:duration:remove` | 纯CRUD:批量物理删除 |
| 学员画像 | GET | `/train/portrait/list` | `TrainStudentPortraitController.list` | `system:portrait:list` | 纯CRUD:分页列表,不生成画像 |
| 学员画像 | POST | `/train/portrait/export` | `export` | `system:portrait:export` | 纯CRUD:Excel导出 |
| 学员画像 | GET | `/train/portrait/{portraitId}` | `getInfo` | `system:portrait:query` | 纯CRUD:详情 |
| 学员画像 | POST | `/train/portrait` | `add` | `system:portrait:add` | 纯CRUD:手工新增画像记录 |
| 学员画像 | PUT | `/train/portrait` | `edit` | `system:portrait:edit` | 纯CRUD:修改记录 |
| 学员画像 | DELETE | `/train/portrait/{portraitIds}` | `remove` | `system:portrait:remove` | 纯CRUD:批量物理删除 |
## 3. 接口类型统计
| 类型 | 数量 | 结论 |
| --- | ---: | --- |
| 纯 CRUD/导出接口 | 84 | 14 组 × 6 个 |
| 业务动作接口 | 0 | 未发现开班、报到确认、补签审批、成绩发布、画像生成等动作 |
| 外部系统接入接口 | 0 | 未发现设备心跳、签到回调、门锁下发回执、学习记录/成绩采集 |
| 统计接口 | 0 | 前端成绩视图仍调用普通列表;学习时长 Controller 也只返回明细分页 |
| 培训导入接口 | 0 | 只有若依 `SysUserController` 有系统用户导入 |
## 4. 需要注意的映射现状
- 教室、宿舍、成绩 Controller 的多前缀别名属于当前未提交改动。
- 教室页面当前使用 `api/train/info.js`;另有未跟踪 `classroom.js`,形成两个 API 命名入口。
- 前端多数按钮权限使用 `train:*`,后端使用 `system:*`;宿舍、教室、成绩后端甚至共享 `system:info:*`。这会直接影响非超级管理员访问。