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

80 lines
6.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 实例是否开启兼容模式、现有账号是否拥有培训权限、外部设备或系统是否另有未入库服务。