510 lines
18 KiB
Markdown
510 lines
18 KiB
Markdown
# 培训业务模块与 14 组 CRUD 盘点
|
||||
|
|
|
|||
|
|
## 1. 审计口径
|
|||
|
|
|
|||
|
|
本文件来自对以下实际目录的逐项比对:
|
|||
|
|
|
|||
|
|
- Controller:`RuoYi-Vue/ruoyi-admin/src/main/java/com/ruoyi/web/controller/train/`
|
|||
|
|
- Domain:`RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/domain/`
|
|||
|
|
- Mapper:`RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/mapper/`
|
|||
|
|
- Service:`RuoYi-Vue/ruoyi-train/src/main/java/com/ruoyi/train/service/`
|
|||
|
|
- XML:`RuoYi-Vue/ruoyi-train/src/main/resources/mapper/train/`
|
|||
|
|
- 前端:`build_ui/src/views/train/`、`build_ui/src/api/train/`
|
|||
|
|
- 表设计:`doc/学员管理系统数据表设计_20260907_1_.docx`
|
|||
|
|
|
|||
|
|
14 组后端均为同一生成式结构:分页列表、Excel 导出、详情、新增、修改、物理批量删除。未发现培训专用 DTO/VO;Controller 直接接收并返回 Domain。ServiceImpl 基本为 Mapper 委托,没有领域校验、跨表编排、事务流程或外部系统调用。
|
|||
|
|
|
|||
|
|
## 2. 模块逐项盘点
|
|||
|
|
|
|||
|
|
### 2.1 教师信息
|
|||
|
|
|
|||
|
|
**模块名称:** 教师信息(`train_teacher`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainTeacherController`
|
|||
|
|
- Service:`ITrainTeacherService`
|
|||
|
|
- ServiceImpl:`TrainTeacherServiceImpl`
|
|||
|
|
- Mapper:`TrainTeacherMapper`
|
|||
|
|
- XML:`TrainTeacherMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainTeacher`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/teacher/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/teacher.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_teacher`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 教师条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. 基于 `@Excel` 字段注解的导出。
|
|||
|
|
3. 字段覆盖工号、姓名、性别、出生日期、院系、职称、电话、邮箱及公共审计字段。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有教师与 `sys_user` 的账号关联。
|
|||
|
|
2. 没有资质/证书、状态、可授课程、授课范围及教师数据权限。
|
|||
|
|
3. 删除为物理删除;无导入接口、查重与跨表引用校验。
|
|||
|
|
|
|||
|
|
### 2.2 学员信息
|
|||
|
|
|
|||
|
|
**模块名称:** 学员信息(`train_student`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainStudentController`
|
|||
|
|
- Service:`ITrainStudentService`
|
|||
|
|
- ServiceImpl:`TrainStudentServiceImpl`
|
|||
|
|
- Mapper:`TrainStudentMapper`
|
|||
|
|
- XML:`TrainStudentMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainStudent`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/student/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/student.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_student`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 学员条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存学号、姓名、性别、出生日期、院系、专业、班级、电话。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有学员与 `sys_user` 的账号关联,也没有身份证/人脸等报到和门禁所需身份数据。
|
|||
|
|
2. 没有参训/报名关系、学员在某期培训中的状态。
|
|||
|
|
3. 删除为物理删除;无培训学员导入接口和重复校验。
|
|||
|
|
|
|||
|
|
### 2.3 课程信息
|
|||
|
|
|
|||
|
|
**模块名称:** 课程信息(`train_course`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainCourseController`
|
|||
|
|
- Service:`ITrainCourseService`
|
|||
|
|
- ServiceImpl:`TrainCourseServiceImpl`
|
|||
|
|
- Mapper:`TrainCourseMapper`
|
|||
|
|
- XML:`TrainCourseMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainCourse`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/course/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/course.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_course`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 课程条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 文档、视频、模型链接和模型资源 ID 以文本字段保存。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有课程版本、章节、课次、课表、资源实体及资源关系。
|
|||
|
|
2. 附件和多资源使用逗号分隔/文本 URL,没有与已有上传能力形成业务关系。
|
|||
|
|
3. 无课程发布、审核、上下架等动作。
|
|||
|
|
|
|||
|
|
### 2.4 开班计划
|
|||
|
|
|
|||
|
|
**模块名称:** 开班计划(`train_class_plan`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainClassPlanController`
|
|||
|
|
- Service:`ITrainClassPlanService`
|
|||
|
|
- ServiceImpl:`TrainClassPlanServiceImpl`
|
|||
|
|
- Mapper:`TrainClassPlanMapper`
|
|||
|
|
- XML:`TrainClassPlanMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainClassPlan`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/plan/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/plan.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_class_plan`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 计划条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存单个 `c_id`、单个 `t_id`、起止时间、地点、招生人数、报名条件、状态。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 一个计划只有一个课程与一个教师,不能表达一班多课、多教师、逐课次安排。
|
|||
|
|
2. 没有参训名单、报名审核、开班/结班等状态动作。
|
|||
|
|
3. 没有教室、实训场地、课程时间冲突校验。
|
|||
|
|
|
|||
|
|
### 2.5 宿舍信息
|
|||
|
|
|
|||
|
|
**模块名称:** 宿舍信息(`train_dormitory_info`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainDormitoryInfoController`
|
|||
|
|
- Service:`ITrainDormitoryInfoService`
|
|||
|
|
- ServiceImpl:`TrainDormitoryInfoServiceImpl`
|
|||
|
|
- Mapper:`TrainDormitoryInfoMapper`
|
|||
|
|
- XML:`TrainDormitoryInfoMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainDormitoryInfo`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/dormitory/index.vue`(有未提交修改)
|
|||
|
|
- api:`build_ui/src/api/train/dormitory.js`(未跟踪)
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_dormitory_info`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 当前工作树页面与 API 支持宿舍列表、详情、新增、修改、删除。
|
|||
|
|
2. 保存楼栋、房间号、床位总数/已用数、门锁序列号、状态。
|
|||
|
|
3. Controller 同时接受 `/train/dorminfo` 与 `/train/dormitory`,该别名改动尚未提交。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 当前页面没有导出按钮和 `v-hasPermi` 按钮权限控制;后端仍有导出接口。
|
|||
|
|
2. 没有独立床位实体、床位占用唯一性或容量一致性校验。
|
|||
|
|
3. 无楼栋/楼层层级和住宿状态流转。
|
|||
|
|
|
|||
|
|
### 2.6 宿舍权限分配
|
|||
|
|
|
|||
|
|
**模块名称:** 宿舍权限分配(`train_dorm_auth`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainDormAuthController`
|
|||
|
|
- Service:`ITrainDormAuthService`
|
|||
|
|
- ServiceImpl:`TrainDormAuthServiceImpl`
|
|||
|
|
- Mapper:`TrainDormAuthMapper`
|
|||
|
|
- XML:`TrainDormAuthMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainDormAuth`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/auth/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/auth.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_dorm_auth`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 权限记录条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存学员、计划、宿舍、床号、授权起止时间和人脸下发状态。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有实际门锁下发接口、回调、重试、错误详情或操作流水。
|
|||
|
|
2. 住宿分配与设备授权耦合在一张表,没有独立住宿分配状态。
|
|||
|
|
3. 没有床位冲突、时段重叠、人员/计划/房间存在性校验。
|
|||
|
|
|
|||
|
|
### 2.7 教室信息
|
|||
|
|
|
|||
|
|
**模块名称:** 教室信息(`train_classroom_info`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainClassroomInfoController`
|
|||
|
|
- Service:`ITrainClassroomInfoService`
|
|||
|
|
- ServiceImpl:`TrainClassroomInfoServiceImpl`
|
|||
|
|
- Mapper:`TrainClassroomInfoMapper`
|
|||
|
|
- XML:`TrainClassroomInfoMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainClassroomInfo`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/classroom/index.vue`
|
|||
|
|
- api:页面实际导入 `build_ui/src/api/train/info.js`;另有未跟踪的 `classroom.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_classroom_info`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 教室列表、详情、新增、修改、删除与导出。
|
|||
|
|
2. 保存名称、位置、容量、状态。
|
|||
|
|
3. 当前 Controller 接受 `/train/classroominfo`、`/train/classroom`、`/train/info` 三个前缀,属于未提交兼容改动。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 前后端权限分别为 `train:info:*` 和 `system:info:*`,不一致。
|
|||
|
|
2. 多个 API 文件/别名并存,规范入口尚未收敛。
|
|||
|
|
3. 无排课占用、时间冲突与容量校验。
|
|||
|
|
|
|||
|
|
### 2.8 实训场地
|
|||
|
|
|
|||
|
|
**模块名称:** 实训场地(`train_training_site`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainTrainingSiteController`
|
|||
|
|
- Service:`ITrainTrainingSiteService`
|
|||
|
|
- ServiceImpl:`TrainTrainingSiteServiceImpl`
|
|||
|
|
- Mapper:`TrainTrainingSiteMapper`
|
|||
|
|
- XML:`TrainTrainingSiteMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainTrainingSite`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/site/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/site.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_training_site`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 场地条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存名称、位置、容量、配套设备文本、状态。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 配套设备仅为文本字段,没有设备资产关系。
|
|||
|
|
2. 无场地排期、占用、冲突和容量校验。
|
|||
|
|
3. 无场地类型、设备可用状态的独立管理。
|
|||
|
|
|
|||
|
|
### 2.9 开班报到
|
|||
|
|
|
|||
|
|
**模块名称:** 开班报到(`train_class_report`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainClassReportController`
|
|||
|
|
- Service:`ITrainClassReportService`
|
|||
|
|
- ServiceImpl:`TrainClassReportServiceImpl`
|
|||
|
|
- Mapper:`TrainClassReportMapper`
|
|||
|
|
- XML:`TrainClassReportMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainClassReport`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/report/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/report.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_class_report`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 报到记录条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存报到方式、设备号、时间、状态,以及宿舍/教室/场地分配 ID。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 页面是人工维护 CRUD,没有身份证/人脸设备接入或回调接口。
|
|||
|
|
2. 没有参训名单作为报到资格来源,也没有防重复报到与状态流转。
|
|||
|
|
3. 报到事件与三类资源分配耦合,未见原子事务和容量/冲突校验。
|
|||
|
|
|
|||
|
|
### 2.10 电子班牌
|
|||
|
|
|
|||
|
|
**模块名称:** 电子班牌设备(`train_electronic_board`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainElectronicBoardController`
|
|||
|
|
- Service:`ITrainElectronicBoardService`
|
|||
|
|
- ServiceImpl:`TrainElectronicBoardServiceImpl`
|
|||
|
|
- Mapper:`TrainElectronicBoardMapper`
|
|||
|
|
- XML:`TrainElectronicBoardMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainElectronicBoard`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/board/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/board.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_electronic_board`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 班牌设备条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存序列号、绑定教室/计划、IP、显示内容、播放模式、签到类型、在线状态、最后心跳。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有心跳上报、内容发布、设备命令、签到回调等外部接入接口。
|
|||
|
|
2. 没有设备认证、签名、幂等和离线判定任务。
|
|||
|
|
3. `board_playmode` 的设计注释与 `board_status` 都使用“离线/在线”语义,字段边界不清。
|
|||
|
|
|
|||
|
|
### 2.11 学员签到
|
|||
|
|
|
|||
|
|
**模块名称:** 学员签到(`train_student_checkin`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainStudentCheckinController`
|
|||
|
|
- Service:`ITrainStudentCheckinService`
|
|||
|
|
- ServiceImpl:`TrainStudentCheckinServiceImpl`
|
|||
|
|
- Mapper:`TrainStudentCheckinMapper`
|
|||
|
|
- XML:`TrainStudentCheckinMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainStudentCheckin`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/checkin/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/checkin.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_student_checkin`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 签到记录条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存计划、课程、学员、班牌、签到方式/状态,以及课次起止时间。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有 `lesson_id`/课次实体;每条签到重复保存课程起止时间。
|
|||
|
|
2. 没有设备签到接入、二维码生成/核验、迟到早退计算或补签审批。
|
|||
|
|
3. 没有同一学员同一课次的唯一约束/幂等证据。
|
|||
|
|
|
|||
|
|
### 2.12 多类型成绩
|
|||
|
|
|
|||
|
|
**模块名称:** 多类型成绩(`train_score_info`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainScoreInfoController`
|
|||
|
|
- Service:`ITrainScoreInfoService`
|
|||
|
|
- ServiceImpl:`TrainScoreInfoServiceImpl`
|
|||
|
|
- Mapper:`TrainScoreInfoMapper`
|
|||
|
|
- XML:`TrainScoreInfoMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainScoreInfo`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/score/index.vue`(未跟踪)
|
|||
|
|
- api:`build_ui/src/api/train/score.js`(未跟踪)
|
|||
|
|
- 只读衍生视图:`student-score/index.vue`、`course-score/index.vue`(均未跟踪)
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_score_info`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 当前工作树有成绩列表、详情、新增、修改、删除页面/API;后端有导出接口。
|
|||
|
|
2. 保存课程成绩、实训成绩、考核成绩、来源类型/系统、导入时间。
|
|||
|
|
3. 学员成绩和课程成绩页面只是调用同一列表接口做筛选;课程成绩页以 `examScore` 在前端计算显示评级。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 成绩页面没有按钮权限指令和导出入口,文件仍未纳入 Git。
|
|||
|
|
2. 没有 Excel 导入接口、外部采集接口、错误反馈、审核/发布/锁定。
|
|||
|
|
3. 没有权重、综合分公式及版本;代码未计算真正综合成绩。
|
|||
|
|
|
|||
|
|
### 2.13 学习时长
|
|||
|
|
|
|||
|
|
**模块名称:** 学习时长统计(`train_study_duration`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainStudyDurationController`
|
|||
|
|
- Service:`ITrainStudyDurationService`
|
|||
|
|
- ServiceImpl:`TrainStudyDurationServiceImpl`
|
|||
|
|
- Mapper:`TrainStudyDurationMapper`
|
|||
|
|
- XML:`TrainStudyDurationMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainStudyDuration`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/duration/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/duration.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_study_duration`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 时长记录条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存设备类型、起止时间、时长秒数和同步时间。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有设备/外部系统上报接口、外部事件 ID、幂等与异常记录。
|
|||
|
|
2. 没有由起止时间校验或计算 `study_seconds` 的业务逻辑。
|
|||
|
|
3. 无汇总统计接口;所谓“统计”当前仍是明细 CRUD。
|
|||
|
|
|
|||
|
|
### 2.14 学员画像
|
|||
|
|
|
|||
|
|
**模块名称:** 学员画像(`train_student_portrait`)
|
|||
|
|
|
|||
|
|
**后端:**
|
|||
|
|
|
|||
|
|
- Controller:`TrainStudentPortraitController`
|
|||
|
|
- Service:`ITrainStudentPortraitService`
|
|||
|
|
- ServiceImpl:`TrainStudentPortraitServiceImpl`
|
|||
|
|
- Mapper:`TrainStudentPortraitMapper`
|
|||
|
|
- XML:`TrainStudentPortraitMapper.xml`
|
|||
|
|
- Domain / Entity:`TrainStudentPortrait`
|
|||
|
|
- DTO / VO:无
|
|||
|
|
|
|||
|
|
**前端:**
|
|||
|
|
|
|||
|
|
- views:`build_ui/src/views/train/portrait/index.vue`
|
|||
|
|
- api:`build_ui/src/api/train/portrait.js`
|
|||
|
|
|
|||
|
|
**数据库:** 涉及表 `train_student_portrait`
|
|||
|
|
|
|||
|
|
**当前已有功能:**
|
|||
|
|
|
|||
|
|
1. 画像记录条件列表、详情、新增、修改、批量删除。
|
|||
|
|
2. Excel 导出。
|
|||
|
|
3. 保存总学习时长、平均成绩、签到率、标签和综合描述。
|
|||
|
|
|
|||
|
|
**明显缺失:**
|
|||
|
|
|
|||
|
|
1. 没有从签到、成绩、学习时长聚合生成画像的服务。
|
|||
|
|
2. 没有指标/标签规则、版本、快照历史或生成时间。
|
|||
|
|
3. 前端只是表格 CRUD,没有雷达图、趋势或画像工作台。
|
|||
|
|
|
|||
|
|
## 3. 14 组 CRUD 完整度
|
|||
|
|
|
|||
|
|
| 模块 | 数据表 | Entity | Mapper | Service | Controller | 前端 API | 前端页面 | CRUD 完整度 |
|
|||
|
|
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|||
|
|
| 教师 | `train_teacher` | `TrainTeacher` | 接口+XML | 接口+Impl | `TrainTeacherController` | `teacher.js` | `teacher/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 学员 | `train_student` | `TrainStudent` | 接口+XML | 接口+Impl | `TrainStudentController` | `student.js` | `student/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 课程 | `train_course` | `TrainCourse` | 接口+XML | 接口+Impl | `TrainCourseController` | `course.js` | `course/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 开班计划 | `train_class_plan` | `TrainClassPlan` | 接口+XML | 接口+Impl | `TrainClassPlanController` | `plan.js` | `plan/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 宿舍 | `train_dormitory_info` | `TrainDormitoryInfo` | 接口+XML | 接口+Impl | `TrainDormitoryInfoController` | `dormitory.js`(未跟踪) | `dormitory/index.vue`(已修改) | 疑似生成但未接通 |
|
|||
|
|
| 宿舍权限 | `train_dorm_auth` | `TrainDormAuth` | 接口+XML | 接口+Impl | `TrainDormAuthController` | `auth.js` | `auth/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 教室 | `train_classroom_info` | `TrainClassroomInfo` | 接口+XML | 接口+Impl | `TrainClassroomInfoController`(已修改) | `info.js`(已修改) | `classroom/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 实训场地 | `train_training_site` | `TrainTrainingSite` | 接口+XML | 接口+Impl | `TrainTrainingSiteController` | `site.js` | `site/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 开班报到 | `train_class_report` | `TrainClassReport` | 接口+XML | 接口+Impl | `TrainClassReportController` | `report.js` | `report/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 电子班牌 | `train_electronic_board` | `TrainElectronicBoard` | 接口+XML | 接口+Impl | `TrainElectronicBoardController` | `board.js` | `board/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 学员签到 | `train_student_checkin` | `TrainStudentCheckin` | 接口+XML | 接口+Impl | `TrainStudentCheckinController` | `checkin.js` | `checkin/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 多类型成绩 | `train_score_info` | `TrainScoreInfo` | 接口+XML | 接口+Impl | `TrainScoreInfoController`(已修改) | `score.js`(未跟踪) | `score/index.vue`(未跟踪) | 疑似生成但未接通 |
|
|||
|
|
| 学习时长 | `train_study_duration` | `TrainStudyDuration` | 接口+XML | 接口+Impl | `TrainStudyDurationController` | `duration.js` | `duration/index.vue` | 疑似生成但未接通 |
|
|||
|
|
| 学员画像 | `train_student_portrait` | `TrainStudentPortrait` | 接口+XML | 接口+Impl | `TrainStudentPortraitController` | `portrait.js` | `portrait/index.vue` | 疑似生成但未接通 |
|
|||
|
|
|
|||
|
|
### 判断说明
|
|||
|
|
|
|||
|
|
这里的“疑似生成但未接通”不是说缺少 CRUD 文件。相反,14 组的六类后端构件和对应前端页面/API在当前工作树都存在。采用该结论是因为:
|
|||
|
|
|
|||
|
|
1. 仓库没有培训表 DDL或迁移,无法证明运行数据库有表。
|
|||
|
|
2. 仓库没有培训 `sys_menu`/权限初始化 SQL,前后端权限字符串还普遍不一致。
|
|||
|
|
3. 成绩、宿舍 API及部分页面/Controller适配尚未提交。
|
|||
|
|
4. 没有端到端测试、接口测试或当前启动验证证据。
|
|||
|
|
|
|||
|
|
若只按“是否具有生成器产出的 CRUD 文件”衡量,14 组均为代码层齐全;若按“用户可从菜单登录并完成 CRUD”衡量,目前没有一组可以由仓库证据确认“完整”。
|