Files
railwaysystem/docs/codebase-audit/05_frontend_inventory.md
T

7.2 KiB
Raw Blame History

培训前端现状

1. 前端入口与路由机制

当前培训业务前端是 build_ui/:package.json 的 description 为“智慧培训管理平台”,src/views/train 和 src/api/train 均位于此处。

build_ui/src/router/index.js 没有静态培训菜单,只包含登录、首页、个人中心和若依少量隐藏动态路由。登录后,build_ui/src/store/modules/permission.js 调用 build_ui/src/api/menu.js 的 GET /getRouters,按后端 sys_menu 数据加载组件。

因此:

  • 仓库代码可以确认“页面文件存在”。
  • 仓库不能确认“当前数据库菜单存在且角色已授权”。
  • RuoYi-Vue/sql/ry_20250522.sql 未发现任何 train 菜单/权限数据,精确菜单名称和路径只能通过实时 sys_menu 再核验。

2. 页面与 API 对照

表中的“菜单”表示该页面预期承载的功能名称,不表示已在实时 sys_menu 中确认。

菜单/功能 页面路径 API 当前完成度 备注
教师信息 views/train/teacher/index.vue api/train/teacher.js → /train/teacher CRUD页面存在,接通未证实 有列表/详情/增改删/导出;按钮用 train:teacher:*,后端用 system:teacher:*
学员信息 views/train/student/index.vue api/train/student.js → /train/student CRUD页面存在,接通未证实 同类权限不一致;无培训学员导入
课程信息 views/train/course/index.vue api/train/course.js → /train/course CRUD页面存在,接通未证实 附件/资源仍为文本输入
开班计划 views/train/plan/index.vue api/train/plan.js → /train/plan CRUD页面存在,接通未证实 不是课表或班级工作台
宿舍信息 views/train/dormitory/index.vue api/train/dormitory.js → /train/dorminfo 部分存在 页面已修改、API未跟踪;无按钮权限与导出按钮
宿舍权限 views/train/auth/index.vue api/train/auth.js → /train/auth CRUD页面存在,接通未证实 仅维护授权记录,不调用门锁系统
教室信息 views/train/classroom/index.vue 实际用 api/train/info.js → /train/classroominfo CRUD页面存在,接通未证实 info.js已修改;另有未跟踪classroom.js;别名未提交
实训场地 views/train/site/index.vue api/train/site.js → /train/site CRUD页面存在,接通未证实 配套设备为文本字段
开班报到 views/train/report/index.vue api/train/report.js → /train/report CRUD页面存在,接通未证实 表单手工录入,不是现场报到工作台
电子班牌 views/train/board/index.vue api/train/board.js → /train/board CRUD页面存在,接通未证实 设备登记,不含心跳/内容发布/签到回调
学员签到 views/train/checkin/index.vue api/train/checkin.js → /train/checkin CRUD页面存在,接通未证实 手工维护签到记录,无课次和设备流程
成绩信息 views/train/score/index.vue api/train/score.js → /train/scoreinfo 部分存在 页面/API未跟踪;无权限指令与导出入口
学习时长 views/train/duration/index.vue api/train/duration.js → /train/duration CRUD页面存在,接通未证实 是明细 CRUD,不是聚合统计工作台
学员画像 views/train/portrait/index.vue api/train/portrait.js → /train/portrait CRUD页面存在,接通未证实 编辑指标/文本的表格,无画像计算和可视化
学员成绩档案 views/train/student-score/index.vue api/train/score.js 的列表 只读筛选页,未跟踪 按学号过滤同一 CRUD 列表,无专用统计接口
课程成绩总览 views/train/course-score/index.vue api/train/score.js 的列表 只读筛选页,未跟踪 “综合评级”仅按 examScore 前端判断,不是三类成绩综合算法
自主学习设备 views/train/equipment/index.vue 无 占位页,未跟踪 文案宣称部分能力“已就绪”,代码没有相应设备接入
设备物联管理 views/train/extra/index.vue 无 占位页,未跟踪 仅 el-result 与跳转按钮
人物/人员页面 views/train/person/index.vue 使用旧角色/图谱相关逻辑 遗留页面 权限为 train:role:*,无对应当前培训 Controller
图谱页面 views/train/character/graph.vue api/train/character.js 遗留/未接通 当前后端未找到对应培训 Controller
图表示例 views/train/character/charts.vue 旧接口/本地数据 演示性质 含 ECharts、随机数和历史地址,不能视为培训统计已实现
时间地点分析 views/train/analysis/timeAndAddress.vue 旧逻辑 遗留/未接通 无当前培训统计 Controller 对应
天气 views/train/weather/index.vue 旧逻辑 遗留/未接通 与 14 张培训表无对应关系

所有路径相对于 build_ui/src/。

3. 用户要求的页面能力确认

能力 结论 依据
已有哪些菜单 无法从仓库确认实时菜单;路由由 /getRouters + sys_menu 动态生成 router/index.js、store/modules/permission.js、api/menu.js;系统 SQL无train菜单
页面调用哪个 API 14个主要页面都有对应API文件;教室实际使用info.js 页面 import 与 src/api/train/*.js
页面是否只是 CRUD 14个核心业务页本质均为 CRUD;两个成绩衍生页只是列表筛选 页面 methods 与后端 Controller
业务工作台 不存在 首页 views/index.vue 仅展示平台名称、版本和图片
统计图 培训业务统计图未实现 dashboard/*Chart.vue 是若依示例;character/charts.vue 含随机/旧数据且无培训统计API
画像 只有画像记录 CRUD views/train/portrait/index.vue
模拟设备页面 没有可运行模拟设备;只有设备管理 CRUD、遗留图表和两个占位页 board、equipment、extra
报到页面 有,但只是报到记录 CRUD views/train/report/index.vue
课程表页面 未发现 views/train、router 与 API 搜索无 timetable/schedule/课程表实现

4. 权限与前端接通风险

大多数生成页面的按钮写成 v-hasPermi="['train:<module>:<action>']",而对应 Controller 使用 system:<module>:<action>。教室页面用 train:info:*,宿舍/教室/成绩后端共用 system:info:*;宿舍与成绩当前页面又没有按钮权限指令。

超级管理员因若依通配权限可能掩盖此问题,但普通角色可能出现:菜单能见而按钮隐藏、按钮可见而请求被 403、三个模块共享过宽权限等现象。实际结果还取决于实时 sys_menu.perms,本次没有查询数据库。

5. 当前工作树状态对前端基线的影响

  • score.js、成绩 CRUD 页面、学生成绩页、课程成绩页、两个占位页均未跟踪。
  • dormitory/index.vue 已修改,dormitory.js 未跟踪。
  • info.js 与 vue.config.js 已修改未提交。
  • 因此当前文件系统能看到的页面能力高于最近一次提交 83797f92 中可复现的能力;在提交或交接前应先明确哪些文件属于正式基线。