# RailwaySystem 代码基线审计:项目概览 > 审计日期:2026-09-11 > 审计对象:当前 Git 工作树(包含已跟踪、未提交及未跟踪代码) > 审计方式:静态只读检查;未连接数据库,未执行迁移,未编译、未启动、未修改业务代码。文中“存在”表示仓库中有相应代码,“可运行/已接通”只有在存在直接证据时才成立。 ## 1. 工程定位与版本 - 当前仓库分支为 `main`。 - 后端是经典版 **RuoYi-Vue 前后端分离项目**,若依版本 **3.9.1**。依据:`RuoYi-Vue/README.md`、`RuoYi-Vue/pom.xml`、`RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml`。 - 无法仅凭当前仓库证明最初从若依上游的哪个 Git 分支拉取;能确认的是当前代码属于经典 Vue 2 / Spring Boot 2 的 RuoYi-Vue 3.9.1 技术线,而当前仓库自己的分支是 `main`。 - 项目中有两个 Vue 工程: - `build_ui/`:标题和描述均为“智慧培训管理平台”,含完整 `src/views/train` 与 `src/api/train`,是当前培训业务前端。 - `RuoYi-Vue/ruoyi-ui/`:描述为“知识图谱构建平台”,没有本次 14 组培训 CRUD 对应页面,应视为历史/基础前端副本,不能与 `build_ui/` 混为一个运行入口。 ## 2. 后端技术栈 | 项目 | 当前代码证据 | 结论 | | --- | --- | --- | | Java | `RuoYi-Vue/pom.xml` 的 `java.version=1.8` | 源码/字节码目标 Java 8 | | 当前机器 Java | `java -version` 为 OpenJDK 21.0.2 | 本机实际 Maven 运行时是 Java 21,与项目目标版本不同 | | Spring Boot | `RuoYi-Vue/pom.xml` 的 `spring-boot.version=2.5.15` | Spring Boot 2.5.15 | | Spring Framework | 同文件 `spring-framework.version=5.3.39` | 5.3.39 | | Spring Security | 同文件 `spring-security.version=5.7.14` | 5.7.14,方法级鉴权 | | 持久层 | `pagehelper-spring-boot-starter=1.4.7`、`mapper/**/*.xml` | 原生 MyBatis XML + PageHelper;未发现 MyBatis-Plus/baomidou | | 数据源 | `application-druid.yml` | Druid 1.2.27,当前主库配置为 KingbaseES | | JDBC 驱动 | 根 POM 与 `ruoyi-admin/pom.xml` | `com.kingbase:kingbase8:8.6.0`;MySQL 驱动也仍保留 | | Excel | `ruoyi-common/.../ExcelUtil.java`、POI 4.1.2 | 若依 Excel 导入导出基础能力保留;培训 Controller 仅接了导出 | | Token/JWT | `TokenService.java`、`JwtAuthenticationTokenFilter.java` | JWT 携带会话键,登录态主体保存在 Redis | ## 3. Maven 模块关系 父工程 `RuoYi-Vue/pom.xml` 聚合 7 个模块: | 模块 | 作用 | 主要依赖关系 | | --- | --- | --- | | `ruoyi-admin` | Spring Boot 启动入口、Web Controller、配置 | 依赖 `framework`、`quartz`、`generator`、`train` | | `ruoyi-framework` | Security、Token、AOP、数据源、Web 框架 | 依赖 `ruoyi-system` | | `ruoyi-system` | 用户、角色、菜单、部门、字典、日志、配置、公告 | 依赖 `ruoyi-common` | | `ruoyi-quartz` | Quartz 定时任务与任务日志 | 依赖 `ruoyi-common` | | `ruoyi-generator` | 代码生成器 | 依赖 `ruoyi-common`、Druid | | `ruoyi-common` | 通用返回、分页、异常、Excel、文件、安全工具 | 公共基础层 | | `ruoyi-train` | 14 个培训领域对象、Mapper、Service | 依赖 `ruoyi-common`;Controller 放在 `ruoyi-admin` | 依据:`RuoYi-Vue/pom.xml:257`、各模块 `pom.xml`、`RuoYi-Vue/ruoyi-admin/pom.xml`。 ## 4. 前端技术栈 `build_ui/package.json` 显示:Vue 2.6.12、Vue Router 3.4.9、Vuex 3.6.0、Element UI 2.15.12、Axios 0.24.0、ECharts 5.4.0、Vue CLI Service 4.4.6。`engines` 只声明 Node `>=8.9`、npm `>=3.0.0`,范围过宽,不能代表在当前 Node 22 上已被官方验证。 当前机器为 Node 22.23.2、npm 10.9.8。`build_ui/node_modules/.bin/vue-cli-service` 存在;本次没有执行 `npm run dev` 或构建。`build_ui/vue.config.js` 中存在尚未提交的 Node 22/MD4 兼容处理,并将开发端口从 80 改为 8080。 ## 5. 数据库、Redis与环境 - 当前激活的 Spring profile 是 `druid`,配置位置:`RuoYi-Vue/ruoyi-admin/src/main/resources/application.yml`。 - 实际 datasource 配置位置:`RuoYi-Vue/ruoyi-admin/src/main/resources/application-druid.yml`。 - 当前配置使用 KingbaseES JDBC URL、`com.kingbase8.Driver` 与 `kingbase8:8.6.0`;账号口令以明文存在配置文件中,本报告不复述。 - `application.yml` 同时将 PageHelper 方言固定为 `mysql`;若依系统 Mapper 和代码生成器还存在 `date_format`、`find_in_set`、反引号、`ifnull` 等 MySQL 语法。 - Redis 配置为本机 `localhost:6379`、database 0。Token 会话、验证码/密码错误计数、缓存和在线用户依赖 Redis,因此正常登录运行时 Redis 是实际依赖。 - `ruoyi-quartz`、Quartz Controller/Service/Mapper、`sql/quartz.sql` 均存在;这只能证明定时任务框架保留,不能证明已配置培训业务任务。 ## 6. 已保留的若依能力 代码层已保留:登录、JWT/Redis 登录态、RBAC、动态菜单、按钮权限、操作日志、数据权限框架、字典、定时任务、文件上传下载、Excel 工具、分页、统一返回、全局异常处理、代码生成、系统配置、通知公告。 “正常保留”不等于“已在 Kingbase 环境验证正常”。其中系统 SQL、代码生成元数据查询、PageHelper 方言和训练权限配置仍存在明确的接通风险,详见 `03_database_current_state.md`、`06_security_and_permissions.md` 和 `09_reusable_ruoyi_capabilities.md`。 ## 7. 培训业务总体成熟度 - 后端存在 14 组标准生成式 CRUD,每组均有 Entity、Mapper、XML、Service、ServiceImpl、Controller。 - 前端当前工作树存在 14 组对应 CRUD 页面/API;其中成绩页面/API以及部分适配文件仍未跟踪,教室、宿舍、成绩 Controller 的别名也未提交。 - 14 组 Controller 共形成 84 个映射:每组 6 个,分别为分页列表、导出、详情、新增、修改、批量删除。 - 未发现培训导入接口、统计接口、设备回调/外部接入接口、流程动作接口、领域事务或专用 DTO/VO。 - 仓库没有 14 张 `train_` 表的 DDL、培训菜单/权限初始化 SQL、培训种子数据或迁移文件,也没有培训自动化测试。 - 因此当前基线应描述为:**14 组数据模型和 CRUD 脚手架基本齐全,但端到端可运行状态、数据库对象、菜单权限和业务闭环尚未由仓库证据证明。** ## 8. 审计边界 本次没有查询实时数据库。因此以下事项仍属“未验证”:14 张业务表是否已真实创建、表字段/约束是否与设计一致、当前 `sys_menu` 是否另由人工配置、当前 Kingbase 实例是否开启兼容模式、现有账号是否拥有培训权限、外部设备或系统是否另有未入库服务。