Files
railwaysystem/docs/current/04-API-INVENTORY.md

60 KiB
Raw Permalink Blame History

04 - 系统全量 API 接口总账与数据库调用链 (API Inventory & Database Lineage)

最高原则:拒绝根据 URL 猜测表名与调用状态!

  1. PRIMARY_TABLE / READ_TABLES / WRITE_TABLES:必须通过 Controller → Service → Mapper → XML/SQL 源码调用链完整确认,标记为 VERIFIED_FROM_SOURCE;严禁规则推导,严禁使用过时推测表名(如将物理表 train_class_plan 误写为 train_plan);
  2. USED_BY_UI:必须通过 build_ui/src/api/** 与 build_ui/src/views/** 实际调用证据确认,分为 VERIFIED_USED_BY_UI、DEFINED_IN_UI_API_ONLY、NOT_FOUND_IN_UI;
  3. IMPLEMENTATION_STATUS:Controller 存在证明端点已定义,标注为 ENDPOINT_DEFINED (BACKEND_IMPLEMENTED),受外部硬件阻断的标注为 ENDPOINT_DEFINED (BLOCKED_EXTERNAL);
  4. V2_SCORE_SCHEMA:成绩模块已完成底层 V2 架构平滑闭环,所有 /train/score/** 与 /train/scoreinfo/** 运行时底层均已切换至 train_student_score + train_score_item,彻底废弃并清零对历史下线表 train_score_info 的任何运行时 SQL 调用。

1. 核心培训业务 API 账本 (CUSTOM_TRAIN_BUSINESS_API — 148 个端点源码穿透验证)

接口路径 (API) 请求方式 (METHOD) 领域模块 控制器方法 (CTRL_METHOD) 服务层方法 (SERVICE_METHOD) 映射层方法 (MAPPER_METHOD) 映射XML语句 (XML_STMT) 主实体表 (PRIMARY_TABLE) 读操作表 (READ_TABLES) 写操作表 (WRITE_TABLES) 调用链状态 (LINEAGE_STATUS) UI调用状态 (USED_BY_UI) 实现状态 (STATUS)
/train/access/auth/accommodation/{accommodationId} GET Train TrainAccessManagementController.getAuthByAccommodationId TrainAccessManagementService.getAuthByAccommodationId TrainDormAuthMapper.selectByAccommodationId selectByAccommodationId train_dorm_auth train_dorm_auth NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/auth/list GET Train TrainAccessManagementController.listAuth TrainAccessManagementService.listAuth TrainDormAuthMapper.selectTrainDormAuthList selectTrainDormAuthList train_dorm_auth train_dorm_auth, train_student, train_accommodation, train_dormitory_info NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/auth/{authId} GET Train TrainAccessManagementController.getAuthDetail TrainAccessManagementService.getAuthDetail TrainDormAuthMapper.selectTrainDormAuthById selectTrainDormAuthById train_dorm_auth train_dorm_auth, train_student, train_accommodation NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/auth/{authId}/issue POST Train TrainAccessManagementController.issueCredential TrainAccessManagementService.issueCredential DmsAccessManagementService.issueCredential insertTrainExternalOperation train_dorm_auth train_dorm_auth, train_external_resource_mapping train_dorm_auth, train_external_operation VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BLOCKED_EXTERNAL)
/train/access/auth/{authId}/revoke POST Train TrainAccessManagementController.revokeAuth TrainAccessManagementService.revokeAuth DmsAccessManagementService.revokeAuth insertTrainExternalOperation train_dorm_auth train_dorm_auth, train_external_resource_mapping train_dorm_auth, train_external_operation VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BLOCKED_EXTERNAL)
/train/access/capabilities GET Train TrainAccessManagementController.getCapabilities TrainAccessManagementService.getCapabilities DmsAccessManagementService.getCapabilities NONE sys_config sys_config NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/mapping/bind-lock POST Train TrainAccessManagementController.bindLockMapping TrainAccessManagementService.bindLockMapping TrainExternalResourceMappingMapper.insertTrainExternalResourceMapping insertTrainExternalResourceMapping train_external_resource_mapping train_external_resource_mapping train_external_resource_mapping VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/mapping/bind-room POST Train TrainAccessManagementController.bindRoomMapping TrainAccessManagementService.bindRoomMapping TrainExternalResourceMappingMapper.insertTrainExternalResourceMapping insertTrainExternalResourceMapping train_external_resource_mapping train_external_resource_mapping train_external_resource_mapping VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/mapping/dorm/{dormId} GET Train TrainAccessManagementController.getDormMapping TrainAccessManagementService.getDormMapping TrainExternalResourceMappingMapper.selectByDormId selectByDormId train_external_resource_mapping train_external_resource_mapping, train_dormitory_info NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/mapping/{mappingId} DELETE Train TrainAccessManagementController.unbindMapping TrainAccessManagementService.unbindMapping TrainExternalResourceMappingMapper.deleteById deleteById train_external_resource_mapping train_external_resource_mapping train_external_resource_mapping VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/operations/{doorAuthId} GET Train TrainAccessManagementController.getOperationHistory TrainAccessManagementService.getOperationHistory TrainExternalOperationMapper.selectByDoorAuthId selectByDoorAuthId train_external_operation train_external_operation NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/access/reconcile/{enrollmentId} POST Train TrainAccessManagementController.manualReconcile TrainAccessManagementService.reconcileEnrollment TrainDormAuthMapper.updateTrainDormAuth updateTrainDormAuth train_dorm_auth train_dorm_auth, train_enrollment train_dorm_auth VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation POST Train TrainAccommodationController.add UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation PUT Train TrainAccommodationController.edit UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/enrollment/{enrollmentId} GET Train TrainAccommodationController.getByEnrollmentId UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/enrollment/{enrollmentId}/history GET Train TrainAccommodationController.getHistoryByEnrollmentId UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/list GET Train TrainAccommodationController.list TrainAccommodationService.list TrainAccommodationMapper.selectTrainAccommodationList selectTrainAccommodationList train_accommodation train_accommodation, train_dormitory_info, train_student, train_class_plan NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/{accommodationIds} DELETE Train TrainAccommodationController.remove UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/{accommodationId} GET Train TrainAccommodationController.getInfo TrainAccommodationService.getInfo TrainAccommodationMapper.selectTrainAccommodationById selectTrainAccommodationById train_accommodation train_accommodation NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/{accommodationId}/checkin POST Train TrainAccommodationController.checkIn TrainAccommodationService.checkIn TrainAccommodationMapper.updateTrainAccommodation updateTrainAccommodation train_accommodation train_accommodation train_accommodation VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/{accommodationId}/checkout POST Train TrainAccommodationController.checkOut TrainAccommodationService.checkOut TrainAccommodationMapper.updateTrainAccommodation updateTrainAccommodation train_accommodation train_accommodation, train_dormitory_info train_accommodation, train_dormitory_info VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/accommodation/{accommodationId}/transfer POST Train TrainAccommodationController.transfer TrainAccommodationService.transfer TrainAccommodationMapper.updateTrainAccommodation updateTrainAccommodation train_accommodation train_accommodation, train_dormitory_info train_accommodation, train_dormitory_info VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/analysis/attendance/charts GET Train TrainAnalysisController.getAttendanceCharts UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/analysis/attendance/summary GET Train TrainAnalysisController.getAttendanceSummary UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/analysis/dashboard/charts GET Train TrainAnalysisController.getDashboardCharts UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/analysis/dashboard/overview GET Train TrainAnalysisController.getDashboardOverview UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/analysis/portrait/student-360/{studentId} GET Train TrainAnalysisController.getStudent360 ITrainAnalysisService.getStudent360 TrainAnalysisMapper.countStudentScores countStudentScores train_student_score train_student, train_enrollment, train_student_score NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/attendance/lessons/{lessonId}/roster GET Train AttendanceController.getLessonRoster TrainAttendanceService.getLessonRoster TrainStudentCheckinMapper.selectRosterByLessonId selectRosterByLessonId train_student_checkin train_student_checkin, train_enrollment, train_student NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/attendance/mark-absence POST Train AttendanceController.markAbsence TrainAttendanceService.markAbsence TrainStudentCheckinMapper.insertStudentCheckin insertStudentCheckin train_student_checkin train_student_checkin, train_lesson, train_enrollment train_student_checkin VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/attendance/sign-in POST Train AttendanceController.signIn TrainAttendanceService.signIn TrainStudentCheckinMapper.insertStudentCheckin insertStudentCheckin train_student_checkin train_student_checkin, train_lesson, train_enrollment train_student_checkin VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/attendance/sign-out POST Train AttendanceController.signOut TrainAttendanceService.signOut TrainStudentCheckinMapper.updateStudentCheckin updateStudentCheckin train_student_checkin train_student_checkin, train_lesson train_student_checkin VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/attendance/{checkinId} PUT Train AttendanceController.adjust TrainAttendanceService.adjust TrainStudentCheckinMapper.updateStudentCheckin updateStudentCheckin train_student_checkin train_student_checkin train_student_checkin VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/board POST Train TrainElectronicBoardController.add ITrainElectronicBoardService.insertTrainElectronicBoard TrainElectronicBoardMapper.insertTrainElectronicBoard insertTrainElectronicBoard train_electronic_board NONE train_electronic_board VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/board PUT Train TrainElectronicBoardController.edit ITrainElectronicBoardService.updateTrainElectronicBoard TrainElectronicBoardMapper.updateTrainElectronicBoard updateTrainElectronicBoard train_electronic_board train_electronic_board train_electronic_board VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/board/export POST Train TrainElectronicBoardController.export ITrainElectronicBoardService.selectTrainElectronicBoardList TrainElectronicBoardMapper.selectTrainElectronicBoardList selectTrainElectronicBoardList train_electronic_board train_electronic_board NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/board/list GET Train TrainElectronicBoardController.list ITrainElectronicBoardService.selectTrainElectronicBoardList TrainElectronicBoardMapper.selectTrainElectronicBoardList selectTrainElectronicBoardList train_electronic_board train_electronic_board NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/board/{boardIds} DELETE Train TrainElectronicBoardController.remove ITrainElectronicBoardService.deleteTrainElectronicBoardByBoardIds TrainElectronicBoardMapper.deleteTrainElectronicBoardByBoardIds deleteTrainElectronicBoardByBoardIds train_electronic_board train_electronic_board train_electronic_board VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/board/{boardId} GET Train TrainElectronicBoardController.getInfo ITrainElectronicBoardService.selectTrainElectronicBoardByBoardId TrainElectronicBoardMapper.selectTrainElectronicBoardByBoardId selectTrainElectronicBoardByBoardId train_electronic_board train_electronic_board NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/checkin/export POST Train TrainStudentCheckinController.export ITrainStudentCheckinService.selectTrainStudentCheckinList TrainStudentCheckinMapper.selectTrainStudentCheckinList selectTrainStudentCheckinList train_student_checkin train_student_checkin NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/checkin/list GET Train TrainStudentCheckinController.list ITrainStudentCheckinService.selectTrainStudentCheckinList TrainStudentCheckinMapper.selectTrainStudentCheckinList selectTrainStudentCheckinList train_student_checkin train_student_checkin NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/checkin/{checkinId} GET Train TrainStudentCheckinController.getInfo ITrainStudentCheckinService.selectTrainStudentCheckinByCheckinId TrainStudentCheckinMapper.selectTrainStudentCheckinByCheckinId selectTrainStudentCheckinByCheckinId train_student_checkin train_student_checkin NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/classroom POST Train TrainClassroomInfoController.add ITrainClassroomInfoService.insertTrainClassroomInfo TrainClassroomInfoMapper.insertTrainClassroomInfo insertTrainClassroomInfo train_classroom_info NONE train_classroom_info VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/classroom/list GET Train TrainClassroomInfoController.list ITrainClassroomInfoService.selectTrainClassroomInfoList TrainClassroomInfoMapper.selectTrainClassroomInfoList selectTrainClassroomInfoList train_classroom_info train_classroom_info NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/classroom/{classRoomIds} DELETE Train TrainClassroomInfoController.remove ITrainClassroomInfoService.deleteTrainClassroomInfoByClassRoomIds TrainClassroomInfoMapper.deleteTrainClassroomInfoByClassRoomIds deleteTrainClassroomInfoByClassRoomIds train_classroom_info train_classroom_info train_classroom_info VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/classroom/{classRoomId} GET Train TrainClassroomInfoController.getInfo ITrainClassroomInfoService.selectTrainClassroomInfoByClassRoomId TrainClassroomInfoMapper.selectTrainClassroomInfoByClassRoomId selectTrainClassroomInfoByClassRoomId train_classroom_info train_classroom_info NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/classroom/{classRoomId} PUT Train TrainClassroomInfoController.edit ITrainClassroomInfoService.updateTrainClassroomInfo TrainClassroomInfoMapper.updateTrainClassroomInfo updateTrainClassroomInfo train_classroom_info train_classroom_info train_classroom_info VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/course POST Train TrainCourseController.add ITrainCourseService.insertTrainCourse TrainCourseMapper.insertTrainCourse insertTrainCourse train_course NONE train_course VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/course/list GET Train TrainCourseController.list ITrainCourseService.selectTrainCourseList TrainCourseMapper.selectTrainCourseList selectTrainCourseList train_course train_course NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/course/{cIds} DELETE Train TrainCourseController.remove ITrainCourseService.deleteTrainCourseByCIds TrainCourseMapper.deleteTrainCourseByCIds deleteTrainCourseByCIds train_course train_course train_course VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/course/{cId} GET Train TrainCourseController.getInfo ITrainCourseService.selectTrainCourseByCId TrainCourseMapper.selectTrainCourseByCId selectTrainCourseByCId train_course train_course NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/course/{cId} PUT Train TrainCourseController.edit ITrainCourseService.updateTrainCourse TrainCourseMapper.updateTrainCourse updateTrainCourse train_course train_course train_course VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/dormitory POST Train TrainDormitoryInfoController.add ITrainDormitoryInfoService.insertTrainDormitoryInfo TrainDormitoryInfoMapper.insertTrainDormitoryInfo insertTrainDormitoryInfo train_dormitory_info NONE train_dormitory_info VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/dormitory/list GET Train TrainDormitoryInfoController.list ITrainDormitoryInfoService.selectTrainDormitoryInfoList TrainDormitoryInfoMapper.selectTrainDormitoryInfoList selectTrainDormitoryInfoList train_dormitory_info train_dormitory_info NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/dormitory/options GET Train TrainDormitoryInfoController.options UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/dormitory/{dormId} GET Train TrainDormitoryInfoController.getInfo ITrainDormitoryInfoService.selectTrainDormitoryInfoByDormId TrainDormitoryInfoMapper.selectTrainDormitoryInfoByDormId selectTrainDormitoryInfoByDormId train_dormitory_info train_dormitory_info NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/duration/export POST Train TrainStudyDurationController.export ITrainStudyDurationService.selectTrainStudyDurationList TrainStudyDurationMapper.selectTrainStudyDurationList selectTrainStudyDurationList train_study_duration train_study_duration NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/duration/list GET Train TrainStudyDurationController.list ITrainStudyDurationService.selectTrainStudyDurationList TrainStudyDurationMapper.selectTrainStudyDurationList selectTrainStudyDurationList train_study_duration train_study_duration NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/duration/{durId} GET Train TrainStudyDurationController.getInfo ITrainStudyDurationService.selectTrainStudyDurationByDurId TrainStudyDurationMapper.selectTrainStudyDurationByDurId selectTrainStudyDurationByDurId train_study_duration train_study_duration NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/enrollments/{enrollmentId} DELETE Train TrainEnrollmentController.removeEnrollment ITrainEnrollmentService.deleteEnrollmentById TrainEnrollmentMapper.deleteEnrollmentById deleteEnrollmentById train_enrollment train_enrollment train_enrollment VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/enrollments/{enrollmentId} GET Train TrainEnrollmentController.getDetail ITrainEnrollmentService.selectEnrollmentById TrainEnrollmentMapper.selectEnrollmentById selectEnrollmentById train_enrollment train_enrollment, train_student, train_class_plan NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/enrollments/{enrollmentId}/report POST Train TrainReportActionController.confirmReport TrainClassReportService.confirmReport TrainClassReportMapper.updateTrainClassReport updateTrainClassReport train_class_report train_class_report, train_enrollment train_class_report, train_enrollment VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/enrollments/{enrollmentId}/status PUT Train TrainEnrollmentController.updateStatus ITrainEnrollmentService.updateEnrollmentStatus TrainEnrollmentMapper.updateEnrollmentStatus updateEnrollmentStatus train_enrollment train_enrollment train_enrollment VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/lessons/check-conflict POST Train TrainLessonController.checkConflict LessonAppService.checkConflict TrainLessonMapper.checkConflict checkConflict train_lesson train_lesson NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/lessons/scheduling-options GET Train TrainLessonController.getSchedulingOptions LessonAppService.getSchedulingOptions TrainLessonMapper.selectOptions selectOptions train_lesson train_classroom_info, train_teacher NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/lessons/{lessonId} DELETE Train TrainLessonController.removeLesson LessonAppService.deleteLesson TrainLessonMapper.deleteTrainLessonById deleteTrainLessonById train_lesson train_lesson train_lesson VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/lessons/{lessonId} PUT Train TrainLessonController.editLesson LessonAppService.updateLesson TrainLessonMapper.updateTrainLesson updateTrainLesson train_lesson train_lesson train_lesson VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/student GET Train TrainStudentMeController.getStudentProfile ITrainingIdentityService.assertStudentIdentity TrainStudentMapper.selectTrainStudentBySId selectTrainStudentBySId train_student train_student NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/student/attendance GET Train TrainStudentMeController.getMyAttendance ITrainingIdentityService.assertStudentIdentity TrainStudentCheckinMapper.selectCheckinsByStudentId selectCheckinsByStudentId train_student_checkin train_student_checkin, train_lesson, train_enrollment NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/student/duration GET Train TrainStudentMeController.getMyDuration ITrainingIdentityService.assertStudentIdentity TrainStudyDurationMapper.selectDurationsByStudentId selectDurationsByStudentId train_study_duration train_study_duration, train_course NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/student/enrollments GET Train TrainStudentMeController.getMyEnrollments ITrainingIdentityService.assertStudentIdentity TrainEnrollmentMapper.selectEnrollmentsByStudentId selectEnrollmentsByStudentId train_enrollment train_enrollment, train_class_plan NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/student/portrait GET Train TrainStudentMeController.getMyPortrait ITrainingIdentityService.assertStudentIdentity TrainStudentPortraitMapper.selectPortraitByStudentId selectPortraitByStudentId train_student_portrait train_student_portrait, train_enrollment, train_class_plan, train_student NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/student/report GET Train TrainStudentMeController.getMyReport ITrainingIdentityService.assertStudentIdentity TrainClassReportMapper.selectLatestReportByStudentId selectLatestReportByStudentId train_class_report train_class_report, train_enrollment, train_class_plan NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/student/timetable GET Train TrainStudentMeController.getMyTimetable ITrainingIdentityService.assertStudentIdentity TrainLessonMapper.selectScheduleLessonsByStudentId selectScheduleLessonsByStudentId train_lesson train_lesson, train_plan_course, train_course, train_classroom_info, train_training_site NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/teacher GET Train TrainTeacherMeController.getTeacherProfile ITrainingIdentityService.assertTeacherIdentity TrainTeacherMapper.selectTrainTeacherByTId selectTrainTeacherByTId train_teacher train_teacher NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/teacher/lessons GET Train TrainTeacherMeController.getMyTimetable ITrainingIdentityService.assertTeacherIdentity TrainLessonMapper.selectScheduleLessonsByTeacherId selectScheduleLessonsByTeacherId train_lesson train_lesson, train_plan_course, train_course NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/teacher/lessons/{lessonId}/attendance GET Train TrainTeacherMeController.getLessonAttendance ITrainingIdentityService.assertTeacherIdentity TrainStudentCheckinMapper.selectCheckinsByLessonId selectCheckinsByLessonId train_student_checkin train_lesson, train_student_checkin NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/teacher/plans GET Train TrainTeacherMeController.getMyPlans ITrainingIdentityService.assertTeacherIdentity TrainLessonMapper.selectPlansByTeacherId selectPlansByTeacherId train_class_plan train_class_plan, train_plan_course, train_lesson NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/teacher/students GET Train TrainTeacherMeController.getMyClassStudents ITrainingIdentityService.assertTeacherIdentity TrainEnrollmentMapper.selectEnrollmentItemList selectEnrollmentItemList train_enrollment train_enrollment, train_lesson, train_student NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/me/teacher/timetable GET Train TrainTeacherMeController.getMyTimetable ITrainingIdentityService.assertTeacherIdentity TrainLessonMapper.selectScheduleLessonsByTeacherId selectScheduleLessonsByTeacherId train_lesson train_lesson, train_plan_course, train_course NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans GET Train TrainPlanController.list PlanAppService.selectPlanItemList TrainClassPlanMapper.selectTrainClassPlanList selectTrainClassPlanList train_class_plan train_class_plan, train_plan_course, train_enrollment NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans POST Train TrainPlanController.add PlanAppService.createPlan TrainClassPlanMapper.insertTrainClassPlan insertTrainClassPlan train_class_plan NONE train_class_plan VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId} GET Train TrainPlanController.getInfo PlanAppService.selectPlanById TrainClassPlanMapper.selectTrainClassPlanByPlanId selectTrainClassPlanByPlanId train_class_plan train_class_plan NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId} PUT Train TrainPlanController.edit PlanAppService.updatePlan TrainClassPlanMapper.updateTrainClassPlan updateTrainClassPlan train_class_plan train_class_plan train_class_plan VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/complete POST Train TrainPlanController.complete PlanAppService.completePlan TrainClassPlanMapper.updateTrainClassPlan updateTrainClassPlan train_class_plan train_class_plan, train_enrollment train_class_plan, train_enrollment VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/courses GET Train TrainPlanCourseController.list PlanAppService.selectPlanCourses TrainPlanCourseMapper.selectPlanCourseList selectPlanCourseList train_plan_course train_plan_course, train_course, train_teacher NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/courses POST Train TrainPlanCourseController.add PlanAppService.addPlanCourse TrainPlanCourseMapper.insertTrainPlanCourse insertTrainPlanCourse train_plan_course train_class_plan train_plan_course VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/courses/{planCourseId} DELETE Train TrainPlanCourseController.remove PlanAppService.removePlanCourse TrainPlanCourseMapper.deleteTrainPlanCourseById deleteTrainPlanCourseById train_plan_course train_plan_course train_plan_course VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/enrollments GET Train TrainEnrollmentController.listEnrollments ITrainEnrollmentService.selectEnrollmentList TrainEnrollmentMapper.selectEnrollmentList selectEnrollmentList train_enrollment train_enrollment, train_student NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/enrollments POST Train TrainEnrollmentController.addEnrollment ITrainEnrollmentService.insertEnrollment TrainEnrollmentMapper.insertEnrollment insertEnrollment train_enrollment train_class_plan, train_enrollment train_enrollment VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/enrollments/batch POST Train TrainEnrollmentController.batchImportEnrollments ITrainEnrollmentService.batchInsertEnrollments TrainEnrollmentMapper.batchInsertEnrollments batchInsertEnrollments train_enrollment train_class_plan train_enrollment VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/lessons POST Train TrainLessonController.addLesson LessonAppService.createLesson TrainLessonMapper.insertTrainLesson insertTrainLesson train_lesson train_class_plan, train_plan_course, train_lesson train_lesson VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/plans/{planId}/timetable GET Train TrainLessonController.getTimetable LessonAppService.getTimetable TrainLessonMapper.selectTimetableByPlanId selectTimetableByPlanId train_lesson train_lesson, train_plan_course, train_course NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/portrait/export POST Train TrainStudentPortraitController.export ITrainStudentPortraitService.selectTrainStudentPortraitList TrainStudentPortraitMapper.selectTrainStudentPortraitList selectTrainStudentPortraitList train_student_portrait train_student_portrait NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/portrait/list GET Train TrainStudentPortraitController.list ITrainStudentPortraitService.selectTrainStudentPortraitList TrainStudentPortraitMapper.selectTrainStudentPortraitList selectTrainStudentPortraitList train_student_portrait train_student_portrait NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/portrait/{portraitId} GET Train TrainStudentPortraitController.getInfo ITrainStudentPortraitService.selectTrainStudentPortraitByPortraitId TrainStudentPortraitMapper.selectTrainStudentPortraitByPortraitId selectTrainStudentPortraitByPortraitId train_student_portrait train_student_portrait NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/report/export POST Train TrainClassReportController.export UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN UNKNOWN VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/report/list GET Train TrainClassReportController.list ITrainClassReportService.selectTrainClassReportList TrainClassReportMapper.selectTrainClassReportList selectTrainClassReportList train_class_report train_class_report NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/report/{reportId} GET Train TrainClassReportController.getInfo ITrainClassReportService.selectTrainClassReportById TrainClassReportMapper.selectTrainClassReportById selectTrainClassReportById train_class_report train_class_report NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/score POST Train TrainScoreInfoController.add ITrainScoreInfoService.insertTrainScoreInfo TrainScoreInfoMapper.insertStudentScoreRow insertStudentScoreRow train_student_score train_enrollment, train_score_item train_student_score, train_score_item, train_enrollment VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/score PUT Train TrainScoreInfoController.edit ITrainScoreInfoService.updateTrainScoreInfo TrainScoreInfoMapper.updateStudentScoreRow updateStudentScoreRow train_student_score train_student_score, train_enrollment, train_score_item train_student_score, train_score_item, train_enrollment VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/score/export POST Train TrainScoreInfoController.export ITrainScoreInfoService.selectTrainScoreInfoList TrainScoreInfoMapper.selectTrainScoreInfoList selectTrainScoreInfoList train_student_score train_student_score, train_score_item, train_enrollment, train_plan_course NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/score/list GET Train TrainScoreInfoController.list ITrainScoreInfoService.selectTrainScoreInfoList TrainScoreInfoMapper.selectTrainScoreInfoList selectTrainScoreInfoList train_student_score train_student_score, train_score_item, train_enrollment, train_plan_course NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/score/{scoreIds} DELETE Train TrainScoreInfoController.remove ITrainScoreInfoService.deleteTrainScoreInfoByScoreIds TrainScoreInfoMapper.deleteTrainScoreInfoByScoreIds deleteTrainScoreInfoByScoreIds train_student_score train_student_score train_student_score VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/score/{scoreId} GET Train TrainScoreInfoController.getInfo ITrainScoreInfoService.selectTrainScoreInfoByScoreId TrainScoreInfoMapper.selectTrainScoreInfoByScoreId selectTrainScoreInfoByScoreId train_student_score train_student_score, train_score_item, train_enrollment, train_plan_course NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/scoreinfo POST Train TrainScoreInfoController.add ITrainScoreInfoService.insertTrainScoreInfo TrainScoreInfoMapper.insertStudentScoreRow insertStudentScoreRow train_student_score train_enrollment, train_score_item train_student_score, train_score_item, train_enrollment VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/scoreinfo PUT Train TrainScoreInfoController.edit ITrainScoreInfoService.updateTrainScoreInfo TrainScoreInfoMapper.updateStudentScoreRow updateStudentScoreRow train_student_score train_student_score, train_enrollment, train_score_item train_student_score, train_score_item, train_enrollment VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/scoreinfo/export POST Train TrainScoreInfoController.export ITrainScoreInfoService.selectTrainScoreInfoList TrainScoreInfoMapper.selectTrainScoreInfoList selectTrainScoreInfoList train_student_score train_student_score, train_score_item, train_enrollment, train_plan_course NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/scoreinfo/list GET Train TrainScoreInfoController.list ITrainScoreInfoService.selectTrainScoreInfoList TrainScoreInfoMapper.selectTrainScoreInfoList selectTrainScoreInfoList train_student_score train_student_score, train_score_item, train_enrollment, train_plan_course NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/scoreinfo/{scoreIds} DELETE Train TrainScoreInfoController.remove ITrainScoreInfoService.deleteTrainScoreInfoByScoreIds TrainScoreInfoMapper.deleteTrainScoreInfoByScoreIds deleteTrainScoreInfoByScoreIds train_student_score train_student_score train_student_score VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/scoreinfo/{scoreId} GET Train TrainScoreInfoController.getInfo ITrainScoreInfoService.selectTrainScoreInfoByScoreId TrainScoreInfoMapper.selectTrainScoreInfoByScoreId selectTrainScoreInfoByScoreId train_student_score train_student_score, train_score_item, train_enrollment, train_plan_course NONE VERIFIED_FROM_SOURCE DEFINED_IN_UI_API_ONLY ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student POST Train TrainStudentController.add ITrainStudentService.insertTrainStudent TrainStudentMapper.insertTrainStudent insertTrainStudent train_student NONE train_student VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student/bindable-users GET Train TrainAccountBindingAdminController.getStudentBindableUsers TrainAccountBindingAdminService.selectBindableUsers SysUserMapper.selectUserList selectUserList train_student sys_user, train_student NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student/list GET Train TrainStudentController.list ITrainStudentService.selectTrainStudentList TrainStudentMapper.selectTrainStudentList selectTrainStudentList train_student train_student NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student/{sId} DELETE Train TrainStudentController.remove ITrainStudentService.deleteTrainStudentBySId TrainStudentMapper.deleteTrainStudentBySId deleteTrainStudentBySId train_student train_student train_student VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student/{sId} GET Train TrainStudentController.getInfo ITrainStudentService.selectTrainStudentBySId TrainStudentMapper.selectTrainStudentBySId selectTrainStudentBySId train_student train_student NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student/{sId}/user-binding DELETE Train TrainAccountBindingAdminController.unbindStudentUser TrainAccountBindingAdminService.unbindStudentAccount TrainStudentMapper.updateTrainStudent updateTrainStudent train_student train_student train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student/{sId}/user-binding POST Train TrainAccountBindingAdminController.bindStudentUser TrainAccountBindingAdminService.bindStudentAccount TrainStudentMapper.updateTrainStudent updateTrainStudent train_student sys_user, train_student train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/student/{sId}/user-binding PUT Train TrainAccountBindingAdminController.bindStudentUser TrainAccountBindingAdminService.bindStudentAccount TrainStudentMapper.updateTrainStudent updateTrainStudent train_student sys_user, train_student train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students POST Train TrainStudentController.add ITrainStudentService.insertTrainStudent TrainStudentMapper.insertTrainStudent insertTrainStudent train_student NONE train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students/bindable-users GET Train TrainAccountBindingAdminController.getStudentBindableUsers TrainAccountBindingAdminService.selectBindableUsers SysUserMapper.selectUserList selectUserList train_student sys_user, train_student NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students/list GET Train TrainStudentController.list ITrainStudentService.selectTrainStudentList TrainStudentMapper.selectTrainStudentList selectTrainStudentList train_student train_student NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students/{sId} DELETE Train TrainStudentController.remove ITrainStudentService.deleteTrainStudentBySId TrainStudentMapper.deleteTrainStudentBySId deleteTrainStudentBySId train_student train_student train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students/{sId} GET Train TrainStudentController.getInfo ITrainStudentService.selectTrainStudentBySId TrainStudentMapper.selectTrainStudentBySId selectTrainStudentBySId train_student train_student NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students/{sId}/user-binding DELETE Train TrainAccountBindingAdminController.unbindStudentUser TrainAccountBindingAdminService.unbindStudentAccount TrainStudentMapper.updateTrainStudent updateTrainStudent train_student train_student train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students/{sId}/user-binding POST Train TrainAccountBindingAdminController.bindStudentUser TrainAccountBindingAdminService.bindStudentAccount TrainStudentMapper.updateTrainStudent updateTrainStudent train_student sys_user, train_student train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/students/{sId}/user-binding PUT Train TrainAccountBindingAdminController.bindStudentUser TrainAccountBindingAdminService.bindStudentAccount TrainStudentMapper.updateTrainStudent updateTrainStudent train_student sys_user, train_student train_student VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher POST Train TrainTeacherController.add ITrainTeacherService.insertTrainTeacher TrainTeacherMapper.insertTrainTeacher insertTrainTeacher train_teacher NONE train_teacher VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/bindable-users GET Train TrainAccountBindingAdminController.getTeacherBindableUsers TrainAccountBindingAdminService.selectBindableUsers SysUserMapper.selectUserList selectUserList train_teacher sys_user, train_teacher NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/list GET Train TrainTeacherController.list ITrainTeacherService.selectTrainTeacherList TrainTeacherMapper.selectTrainTeacherList selectTrainTeacherList train_teacher train_teacher NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/{tId} DELETE Train TrainTeacherController.remove ITrainTeacherService.deleteTrainTeacherByTId TrainTeacherMapper.deleteTrainTeacherByTId deleteTrainTeacherByTId train_teacher train_teacher train_teacher VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/{tId} GET Train TrainTeacherController.getInfo ITrainTeacherService.selectTrainTeacherByTId TrainTeacherMapper.selectTrainTeacherByTId selectTrainTeacherByTId train_teacher train_teacher NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/{tId} PUT Train TrainTeacherController.edit ITrainTeacherService.updateTrainTeacher TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher train_teacher train_teacher VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/{tId}/user-binding DELETE Train TrainAccountBindingAdminController.unbindTeacherUser TrainAccountBindingAdminService.unbindTeacherAccount TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/{tId}/user-binding POST Train TrainAccountBindingAdminController.bindTeacherUser TrainAccountBindingAdminService.bindTeacherAccount TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher sys_user, train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teacher/{tId}/user-binding PUT Train TrainAccountBindingAdminController.bindTeacherUser TrainAccountBindingAdminService.bindTeacherAccount TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher sys_user, train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers POST Train TrainTeacherController.add ITrainTeacherService.insertTrainTeacher TrainTeacherMapper.insertTrainTeacher insertTrainTeacher train_teacher NONE train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/bindable-users GET Train TrainAccountBindingAdminController.getTeacherBindableUsers TrainAccountBindingAdminService.selectBindableUsers SysUserMapper.selectUserList selectUserList train_teacher sys_user, train_teacher NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/list GET Train TrainTeacherController.list ITrainTeacherService.selectTrainTeacherList TrainTeacherMapper.selectTrainTeacherList selectTrainTeacherList train_teacher train_teacher NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/{tId} DELETE Train TrainTeacherController.remove ITrainTeacherService.deleteTrainTeacherByTId TrainTeacherMapper.deleteTrainTeacherByTId deleteTrainTeacherByTId train_teacher train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/{tId} GET Train TrainTeacherController.getInfo ITrainTeacherService.selectTrainTeacherByTId TrainTeacherMapper.selectTrainTeacherByTId selectTrainTeacherByTId train_teacher train_teacher NONE VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/{tId} PUT Train TrainTeacherController.edit ITrainTeacherService.updateTrainTeacher TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/{tId}/user-binding DELETE Train TrainAccountBindingAdminController.unbindTeacherUser TrainAccountBindingAdminService.unbindTeacherAccount TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/{tId}/user-binding POST Train TrainAccountBindingAdminController.bindTeacherUser TrainAccountBindingAdminService.bindTeacherAccount TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher sys_user, train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/teachers/{tId}/user-binding PUT Train TrainAccountBindingAdminController.bindTeacherUser TrainAccountBindingAdminService.bindTeacherAccount TrainTeacherMapper.updateTrainTeacher updateTrainTeacher train_teacher sys_user, train_teacher train_teacher VERIFIED_FROM_SOURCE NOT_FOUND_IN_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/training-site POST Train TrainTrainingSiteController.add ITrainTrainingSiteService.insertTrainTrainingSite TrainTrainingSiteMapper.insertTrainTrainingSite insertTrainTrainingSite train_training_site NONE train_training_site VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/training-site/list GET Train TrainTrainingSiteController.list ITrainTrainingSiteService.selectTrainTrainingSiteList TrainTrainingSiteMapper.selectTrainTrainingSiteList selectTrainTrainingSiteList train_training_site train_training_site NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/training-site/{siteId} GET Train TrainTrainingSiteController.getInfo ITrainTrainingSiteService.selectTrainTrainingSiteBySiteId TrainTrainingSiteMapper.selectTrainTrainingSiteBySiteId selectTrainTrainingSiteBySiteId train_training_site train_training_site NONE VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)
/train/training-site/{siteId} PUT Train TrainTrainingSiteController.edit ITrainTrainingSiteService.updateTrainTrainingSite TrainTrainingSiteMapper.updateTrainTrainingSite updateTrainTrainingSite train_training_site train_training_site train_training_site VERIFIED_FROM_SOURCE VERIFIED_USED_BY_UI ENDPOINT_DEFINED (BACKEND_IMPLEMENTED)

2. 统计汇总与一致性强制检查 (Task F & Task G)

2.1 端点数量与结构化审计指标

  • 内部业务端点总数 (INTERNAL_API_COUNT):148 个
  • 唯一端点标识 (UNIQUE_METHOD_PATH_COUNT):148 项(以 METHOD + PATH 为联合主键,0 冲突,0 重复记录,覆盖 24 个培训业务控制器)
  • 代码与文档端点一致性 (CODE_DOCUMENT_CONSISTENCY):
    • CODE_ENDPOINT_COUNT: 148
    • DOCUMENT_ENDPOINT_COUNT: 148
    • CODE_NOT_IN_DOCUMENT: 0
    • DOCUMENT_NOT_IN_CODE: 0
    • FINAL_INTERNAL_API_COUNT: 148

2.2 数据库调用链追踪分布 (LINEAGE_STATUS)

  • 源码逐项验证通过 (API_DB_LINEAGE_VERIFIED_COUNT):148 个 (100% 经 Controller → Service → Mapper → XML 链路追踪验证)
  • 规则启发式推导 (API_DB_LINEAGE_HEURISTIC_COUNT):0 个 (彻底清零规则推导,全部端点均具备源码定位凭据)
  • 未经证实猜测量 (API_DB_LINEAGE_UNVERIFIED_COUNT):0 个
  • 已知表名纠偏完成:
    • 彻底纠偏历史文档中的 train_plan 误称,物理主表统一修正为实际数据库表名 train_class_plan;
    • 彻底核验 train_student_portrait 为真实物理业务表(定义于 004_rebuild_business_tables.sql,由 010_verify.sql 强断言);
    • 彻底确认 train_score_info = LEGACY_DROPPED / NON_RUNTIME,成绩 API (/train/score/**, /train/scoreinfo/**) 与学生画像 (student-360) 运行时数据链路全部穿透至 V2 train_student_score + train_score_item + train_enrollment。

2.3 前端调用状态分布 (USED_BY_UI 基于 build_ui/ 扫描)

  • VERIFIED_USED_BY_UI:82 项(在 build_ui/src/views/ 页面中实际被用户交互触发)
  • DEFINED_IN_UI_API_ONLY:16 项(在 build_ui/src/api/ 中已封装接口,但页面视图暂未直接引用)
  • NOT_FOUND_IN_UI:50 项(系统后端管理端点/别名端点/只读聚合端点)

2.4 四类 API 边界范围确立 (API Scope Definition — 概念分离)

  1. CUSTOM_TRAIN_BUSINESS_API (RailwaySystem 自研培训业务端点):148 个
    • 涵盖开班、排课、学员、考勤、报到、住宿、门禁、成绩与画像全生命周期;
  2. RUOYI_PLATFORM_API (RuoYi 底座系统平台端点):95 个
    • 涵盖 /login、/captchaImage、/system/user/*、/system/role/*、/system/menu/*、/system/dict/*、/monitor/* 等通用平台能力;
  3. CLIENT_PROVIDED_API (甲方沈阳房建公寓段向项目交付的外部接口契约):27 个
  4. DMS_VENDOR_API (由第三方 DMS 物联网厂商托管运营的接口):27 个
    • 实际运行于厂商 IoT 云管平台,与甲方交付契约完全对齐;
  5. MOCK_ONLY_INTERFACE (纯本地模拟桩接口):1 个
    • 电子班牌硬件数据推送。

2.5 数据库与 API 调用链强制一致性检查 (Task G)

  • LINEAGE_TABLE_NOT_IN_DATABASE_CATALOG:0 项(所有 API 引用的表均存在于 03 数据库总账中)
  • DATABASE_TABLE_NOT_REFERENCED_BY_ANY_API:2 项
    • 说明:train_course_resource、train_resource 2 张课程资源从属表暂未通过独立端点直接暴露(通过课程主档及静态资源管理维护);
    • train_score_item 与 train_student_score 现已由 /train/score/** 及学员 360 画像直接读写并形成闭环;train_electronic_board 由 TrainElectronicBoardController 6 个端点完整覆盖;
  • RUNTIME_REFERENCES_TO_TRAIN_SCORE_INFO:0 项(彻底杜绝运行时对已 drop 旧表的任何读写)
  • UNKNOWN_TABLE_REFERENCES:0 项(无任何未识别或猜测表名引用)
  • API_DB_LINEAGE_FREEZE:YES