Files
railwaysystem/docs/codebase-audit/00_project_overview.md

6.7 KiB
Raw Permalink Blame History

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 实例是否开启兼容模式、现有账号是否拥有培训权限、外部设备或系统是否另有未入库服务。