维护仓库:整理交付资产与仓库根目录
No files matched your search
@@ -0,0 +1,124 @@
|
||||
# RailwaySystem 阶段 B 代码级事实抽取核验任务书 (Code Verification Checklist)
|
||||
> **任务性质:** 事实抽取任务书 (严格禁止预设主观猜测答案,所有结论必须从源码提取)
|
||||
> **指派对象:** Codex Agent (或后端/前端代码专家)
|
||||
> **制定人:** Documentation Architect
|
||||
> **核验代码基线分支:** `integration/wave2-20260914`
|
||||
> **基线 Commit (命令实测值):** `196c6c47c70330119693f2ab7a6c35b8a22d5300` (短哈希 `196c6c47`)
|
||||
> **工作区 HEAD:** `87322511c78e9109c7fe5af000d3db74b5c6cdfc`
|
||||
> **核验目标:** 为编写各模块正式技术文档 (`docs/modules/*.md`) 提供 100% 取自源码的确定性事实支撑,杜绝文档与真实实现脱节。
|
||||
|
||||
---
|
||||
|
||||
## 一、核验规范与执行铁律
|
||||
|
||||
1. **事实抽取原则**:所有任务项均为“从代码提取真实事实”,Codex 回答时必须给出物理源码文件路径与具体代码行号。
|
||||
2. **拒绝猜测与补齐**:若某特性在源码中尚未实现或属于历史遗留,如实记录为“代码未实现”或“遗留实现”,严禁脑补业务含义。
|
||||
3. **标记规范**:
|
||||
- 经源码确认的事实,标注为 `[CODE_VERIFIED]`。
|
||||
- 依赖真实服务启动与浏览器交互的条目,标注为 `[RUNTIME_PENDING]`。
|
||||
|
||||
---
|
||||
|
||||
## 二、逐模块代码级事实抽取任务
|
||||
|
||||
### 1. 培训计划模块 (Plan)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **表结构与实体映射**:
|
||||
- 从 `train_class_plan` 表 DDL、实体类 `TrainClassPlan.java` 及 `TrainClassPlanMapper.xml` 中提取全部字段列表,确认实体属性与数据库列的映射关系。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与契约**:
|
||||
- 从 `TrainPlanController.java` 中提取 `@RequestMapping` 基础路径。
|
||||
- 提取列表查询、详情查询、创建计划、更新计划、结班操作的精确 URL 路径、HTTP Method、权限字符 (`@ss.hasPermi`) 与出入参对象类型。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **状态机枚举与状态迁移**:
|
||||
- 从 `TrainClassPlan.java`、`PlanCreateDTO.java`、`PlanUpdateDTO.java`、`TrainPlanServiceImpl.java` 以及前端 `build_ui/src/views/train/plan/index.vue` 中提取 `plan_status` 全部真实枚举值。
|
||||
- 提取代码中实际实现的计划状态迁移规则与拦截逻辑(包括前端何时锁定 `isPlanLocked`,后端在哪些状态下禁止修改或结班)。
|
||||
|
||||
### 2. 本期课程模块 (PlanCourse)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与契约**:
|
||||
- 从 `TrainPlanCourseController.java` 提取查询本期课程、新增本期课程、移除本期课程的真实 URL 路径、HTTP Method 与权限字符。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **业务规则与约束**:
|
||||
- 从 `TrainPlanCourseServiceImpl.java` 中提取添加与移除本期课程时的前置校验逻辑(例如:计划状态校验、讲师指派校验、排课关联阻断校验)。
|
||||
|
||||
### 3. 参训人员管理 (Enrollment)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **sourceType 真实枚举核验**:
|
||||
- 从 `EnrollmentAddDTO.java`、`EnrollmentCreateDTO.java`、`TrainEnrollment.java` 以及前端 `EnrollmentPanel.vue` 中三方核验 `source_type` 真实枚举值与字典定义(严禁使用任何主观猜测的字典定义)。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与端点**:
|
||||
- 从 `TrainEnrollmentController.java` 提取参训列表、单人报名、批量导入、详情查询、状态变更、移除参训的精确 URL、HTTP Method、入参 DTO 与出参 VO。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **学额与防重控制逻辑**:
|
||||
- 从 `TrainEnrollmentServiceImpl.java` 中提取报名时关于计划容纳人数(学额超编校验)的实际处理代码,确认是硬性拦截抛异常还是记录提示。
|
||||
- 提取重复报名时的数据库唯一约束与代码捕获处理逻辑。
|
||||
|
||||
### 4. 智能排课与课表 (Scheduling / Lesson)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与端点**:
|
||||
- 从 `TrainLessonController.java` 提取课次新增、课次编辑、课次删除、排课冲突预检、获取完整课表的精确 URL、HTTP Method 与入参出参模型。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **冲突检测维度与 Soft Warning 交互**:
|
||||
- 从 `TrainLessonServiceImpl.java` 的 `checkLessonConflict` 方法中提取当前实现的全部冲突检测维度(核验是否存在 `TEACHER`, `CLASSROOM`, `SITE`, `PLAN_OVERLAP` 语义)。
|
||||
- 提取冲突判定的时间区间数学/逻辑算法代码。
|
||||
- 从 `TimetablePanel.vue` 与 `TrainLessonController.java` 中提取排课保存时若检测到冲突的处理流程,确认管理员确认后是否允许保存(Soft Warning 语义确认)。
|
||||
|
||||
### 5. 学员基础档案 (Student)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与端点**:
|
||||
- 从 `TrainStudentController.java` 提取列表、详情、新增的真实 URL 路径、HTTP Method 与参数绑定形式。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **隐私脱敏与校验事实**:
|
||||
- 从 `TrainStudent.java`、`StudentDetailVO.java`、`StudentItemVO.java` 中提取身份证号 (`id_card`) 与手机号 (`phonenumber`) 的脱敏实现位置(后端注解脱敏、Service 处理或前端脱敏)。
|
||||
- 从 DTO 与校验类中提取身份证有效性校验的具体实现方式。
|
||||
|
||||
### 6. 师资主数据管理 (Teacher)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与字段**:
|
||||
- 从 `TrainTeacherController.java`、`TrainTeacher.java` 提取实际端点、HTTP Method、权限字符以及教师资质/职称/内外聘标识字段。
|
||||
|
||||
### 7. 课程库资源管理 (Course)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与端点状态**:
|
||||
- 从 `TrainCourseController.java` 提取列表、详情、新增、修改端点的真实实现情况(核验 `PUT /train/course/{cId}` 是否已落地)。
|
||||
- 提取课程学时换算与统一资源解耦关系的实现事实。
|
||||
|
||||
### 8. 普通教室资源 (Classroom)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与端点状态**:
|
||||
- 从 `TrainClassroomInfoController.java` 提取列表、详情、新增、修改端点的真实实现情况(核验 `PUT /train/classroom/{classRoomId}` 是否已落地)。
|
||||
- 提取教室座位容量、教学楼属性字段。
|
||||
|
||||
### 9. 铁路实训场地 (TrainingSite)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与特种属性**:
|
||||
- 从 `TrainTrainingSiteController.java` 提取全部实际端点、HTTP Method 及权限字符。
|
||||
- 从实体和数据库提取实训场地类型、安全规程等特有字段。
|
||||
|
||||
### 10. 宿舍楼宇与房态 (Dormitory)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与房态计算**:
|
||||
- 从 `TrainDormitoryInfoController.java` 提取列表、详情、新增、房态选项等端点。
|
||||
- 从 DDL、Mapper 及 Service 中核实数据库是否存在独立床位表(确认是否为楼宇/房间两级无独立床位表架构),提取已住人数与可用床位的代码计算逻辑。
|
||||
|
||||
### 11. 电子班牌模块 (ElectronicBoard)
|
||||
- [ ] `[VERIFY_WITH_CODE]` **外设绑定范围核验**:
|
||||
- 从 `TrainElectronicBoard.java`、`TrainElectronicBoardMapper.xml` 及 DDL 中提取班牌外键关联字段,确认当前代码是否仅实现 `bind_classroom_id`,核验当前是否支持实训场地 (`site_id`) 绑定。
|
||||
- [ ] `[VERIFY_WITH_CODE]` **Controller 路由与权限字符**:
|
||||
- 从 `TrainElectronicBoardController.java` 提取当前端点列表与实际声明的权限字符(核验是 `train:board:*` 还是 `system:board:*`)。
|
||||
|
||||
---
|
||||
|
||||
## 三、系统级架构与集成事实抽取任务
|
||||
|
||||
### 1. 全局异常与业务错误码核验
|
||||
- [ ] `[VERIFY_WITH_CODE]` **真实错误码抽取**:
|
||||
- 检索代码中所有抛出业务异常的位置(`throw new ServiceException(...)`),提取实际使用的错误码数值与提示文本。
|
||||
- 核查代码中实际抛出的错误码是否落在 `10000~59999` 规划区间内,统计是否存在未声明业务错误码直接裸抛的情况。
|
||||
|
||||
### 2. 权限字符与数据库菜单配置核验
|
||||
- [ ] `[VERIFY_WITH_CODE]` **权限字符清单抽取**:
|
||||
- 汇总提取所有 Train 相关 Controller 上的 `@ss.hasPermi` 权限字符串。
|
||||
- 从数据库初始化 SQL(如 `ry_20250522.sql`、`007_dicts.sql`)或 `sys_menu` 表结构中,核验上述权限字符是否已配置对应菜单记录。
|
||||
|
||||
### 3. CI/CD 流水线事实核验
|
||||
- [ ] `[VERIFY_WITH_CODE]` **GitLab CI/CD 配置抽取**:
|
||||
- 从仓库根目录的 `.gitlab-ci.yml` 配置文件中,提取实际配置的流水线阶段 (stages)、各任务作业 (jobs)、构建镜像、编译指令与静态检查规则(杜绝出现 GitHub Actions 相关表述)。
|
||||
|
||||
### 4. 运行时与环境配置核验
|
||||
- [ ] `[RUNTIME_PENDING]` **服务端口与运行实测**:
|
||||
- 从 `application.yml`、`application-druid.yml` 以及前端 `vue.config.js` / `.env.development` 中提取配置的默认端口与上下文路径。
|
||||
- 实际监听端口、真实数据库连接地址以及前端访问入口,统一标记为 `RUNTIME_PENDING`,以 Final Runtime Gate 最终实测报告为准。
|
||||
|
||||
---
|
||||
|
||||
## 四、Codex 产出规范
|
||||
|
||||
Codex 执行完毕后,应输出纯粹的事实结果报告(建议存为 `docs/_meta/code-verification-results.md`),格式规范:
|
||||
1. **代码事实条目**:标明文件路径与行号区间。
|
||||
2. **事实结论**:不加主观修饰的真实代码逻辑与枚举值。
|
||||
3. **未实现/差异项**:明确标出设计文档与当前代码不符的具体点,供架构师组织文档更新。
|
||||
@@ -0,0 +1,122 @@
|
||||
# RailwaySystem 最终部署门禁与运行时验收清单 (Deployment Gate Checklist)
|
||||
|
||||
> **当前正式开发基线:** `integration/wave2-20260914`
|
||||
> **当前 Integration HEAD:** `d162954cd1e26c6948408a8304ca333ba9fe7a40`
|
||||
> **最终发布版本 HEAD 标记:** `FINAL_HEAD_PENDING`
|
||||
> **目标发布分支:** `origin/feat/cicd-pipeline`
|
||||
> **部署目标环境:** 服务器别名 `sict`,根目录 `/data2/wzb/deploy`,后端 `8092`,前端 `8082`
|
||||
> **使用说明:** 本清单规范了发布前门禁、标准化部署动作序列、基于精准三态判定的运行时验收,以及基于归档制品的应急回滚方案。
|
||||
|
||||
---
|
||||
|
||||
## 一、发布前门禁 (Pre-Deployment Gates)
|
||||
|
||||
### Gate 1: Git 版本与基线门禁
|
||||
- [ ] **G1.1 分支合并状态确认**:确认 `origin/feat/cicd-pipeline` 目前落后当前基线 2 个 commit(`e2d7e63d`, `d162954c`)。最终发版提交标注为 `FINAL_HEAD_PENDING`,待所有并行任务(Legacy Analytics V2 Contract 与 Business Scenario Test Pack)并入后统一核准。
|
||||
- [ ] **G1.2 仓库状态审查**:保持本地工作区未残留临时变更,**HOLD COMMIT**,未获发版审批前严禁随意提交。
|
||||
- [ ] **G1.3 远端推送许可确认**:严格遵守发版纪律,保持 **DO NOT PUSH**。
|
||||
|
||||
### Gate 2: 数据库 Migration 分类与增量门禁
|
||||
- [ ] **G2.1 目标库 Schema 版本判定**:在执行部署前,首先判定目标库是否已处于 V2 基线。
|
||||
- **若目标库已是 V2 基线:** **仅需且仅允许执行当前 Release Delta migration**(`RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql`)。
|
||||
- **历史 V2 脚本隔离:** 历史 V2 脚本(`sql/train/v2/*` 及 `sql/generator/kingbase/*`)已从常规发布执行清单中移除,**严禁在已有 V2 库上重复执行**历史备份、重建与删表操作。
|
||||
- [ ] **G2.2 `001_sys_oper_log_cost_time.sql` 准备度**:确认目标库已执行补齐 `cost_time` 字段;若未补齐,后端启动前必须执行(具备 `IF NOT EXISTS` 幂等保护)。
|
||||
- [ ] **G2.3 零破坏纪律**:**严禁执行 `007_dicts.sql` (DO NOT EXECUTE)**;严禁执行任何 DROP TABLE 操作。
|
||||
|
||||
### Gate 3: CI/CD 构建与依赖门禁
|
||||
- [ ] **G3.1 Kingbase JDBC 8.6.0 Preflight**:
|
||||
- 依赖文件:`${HOME}/.m2/repository/com/kingbase/kingbase8/8.6.0/kingbase8-8.6.0.jar`
|
||||
- SHA256 强校验:`346d5602477ed472b19c5e25729fff5a58b1d83cec56162a56ac4b86d9546c32` 匹配无误。
|
||||
- [ ] **G3.2 后端编译与打包**:`mvn clean package` 成功,生成 `RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar`。
|
||||
- [ ] **G3.3 前端构建**:`npm run build:prod` 成功,生成 `build_ui/dist/`。
|
||||
- [ ] **G3.4 运行时安全环境变量就绪**:
|
||||
- 导出 `TRAIN_STUDENT_IDENTITY_ENCRYPTION_KEY`
|
||||
- 导出 `TRAIN_STUDENT_IDENTITY_HASH_KEY`
|
||||
- 导出 `SPRING_REDIS_PASSWORD`
|
||||
|
||||
---
|
||||
|
||||
## 二、标准化部署执行步骤 (Deployment Steps)
|
||||
|
||||
| 步骤编号 | 操作名称 | 责任操作与说明 | 验证方法 |
|
||||
| :---: | :--- | :--- | :--- |
|
||||
| **`DEPLOY_STEP_01`** | **环境与凭据预检** | 确认目标机 `sict` 上 JDK 8、Maven、Nginx 可用,三大敏感环境变量已导出 | 执行 `echo` 检查变量存在且非空 |
|
||||
| **`DEPLOY_STEP_02`** | **Schema 判定与 Delta 补丁** | 判定目标库当前 Schema 版本。**若已是 V2,仅执行当前 Release Delta migration (`001_sys_oper_log_cost_time.sql`)**;严禁重跑历史 V2 脚本 | 确认 `sys_oper_log.cost_time` 存在 |
|
||||
| **`DEPLOY_STEP_03`** | **现网制品备份** | 备份已有后端 Jar 与前端静态文件:<br>`cp ruoyi-admin.jar ruoyi-admin.jar.bak`<br>`cp -r frontend frontend.bak` | 检查备份文件生成成功 |
|
||||
| **`DEPLOY_STEP_04`** | **CI 构建物拉取/生成** | 运行流水线或获取当前版本产物 `ruoyi-admin.jar` 与 `dist/` | 校验产物 MD5/SHA256 与构建日志 |
|
||||
| **`DEPLOY_STEP_05`** | **前端静态资源更新** | 清理并覆盖部署:<br>`rm -rf /data2/wzb/deploy/frontend/*`<br>`cp -r build_ui/dist/* /data2/wzb/deploy/frontend/` | 确认 `frontend/index.html` 存在 |
|
||||
| **`DEPLOY_STEP_06`** | **后端 Jar 包发布** | 将新构建 Jar 拷贝到发布目录:<br>`cp ruoyi-admin.jar /data2/wzb/deploy/backend/` | 确认物理文件更新且大小正常 |
|
||||
| **`DEPLOY_STEP_07`** | **执行平滑重启调度** | 赋予权限并调用统一调度脚本:<br>`chmod +x deploy/restart-all.sh && bash deploy/restart-all.sh` | 脚本流程不抛出语法或环境异常 |
|
||||
| **`DEPLOY_STEP_08`** | **后端进程平滑切换** | 脚本向旧进程发送 `kill -15`,超时发送 `kill -9`;以端口 `8092` 启动新进程并记录 `app.pid` | `ps -ef \| grep ruoyi-admin.jar` 确认新 PID |
|
||||
| **`DEPLOY_STEP_09`** | **健康自检探针断言** | 脚本自动轮询 `http://127.0.0.1:8092/captchaImage`(最多 35 次,每 2s 一次),断言返回 `"code":200` | 脚本输出 `后端健康检查通过!` |
|
||||
| **`DEPLOY_STEP_10`** | **前端 Nginx 平滑重载** | 验证 `/data2/wzb/deploy/nginx/nginx.conf` 语法,执行 `nginx -s reload` 或拉起服务 | 检查端口 8082 处于 LISTEN 状态 |
|
||||
|
||||
---
|
||||
|
||||
## 三、部署后运行时验收清单 (Runtime Verification Checklist)
|
||||
|
||||
> **审计状态规范说明:**
|
||||
> - `VERIFIED_ON_CURRENT_HEAD`: 在当前 Integration HEAD (`d162954c`) 上重新执行并通过验收的项;
|
||||
> - `PREVIOUSLY_VERIFIED_ON_PRIOR_RC`: 在先前发布版本/分支上已完成真实执行验证,但当前 HEAD 尚未重新运行部署验收的项;
|
||||
> - `PENDING_FINAL_GATE`: 等待最终集成发版门禁在完整部署后执行验收的项;
|
||||
> - `PENDING_CODEX`: 依赖并行 Codex Agent 交付的专项模块。
|
||||
|
||||
### 1. 基础连通性与平台 API
|
||||
| 验收编号 | 检验项 | 验证端点 / 方式 | 当前状态判定 | 状态说明 |
|
||||
| :---: | :--- | :--- | :---: | :--- |
|
||||
| **RTC-01** | Backend Health | `GET http://127.0.0.1:8092/captchaImage` | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 先前发布版本自检通过,当前 HEAD 待最终部署验证 |
|
||||
| **RTC-02** | Kingbase Connectivity | 启动连接池与元数据读取 | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 历史实测通过,当前 HEAD 待最终部署验证 |
|
||||
| **RTC-03** | Redis Connectivity | Captcha 缓存与 Token 存取 | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 历史实测通过,当前 HEAD 待最终部署验证 |
|
||||
| **RTC-04** | User Login | `POST /prod-api/login` | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 历史实测通过,当前 HEAD 待最终部署验证 |
|
||||
| **RTC-05** | OperLog 耗时字段查询 | `GET /prod-api/monitor/operlog/list` | **PREVIOUSLY_VERIFIED / DB_FIX_VALIDATED** | `cost_time` 补丁在测试库实测通过,当前 integration 待部署验证 |
|
||||
|
||||
### 2. Wave 2 业务模块核心验收 (纠正 UI 入口与 API 路由)
|
||||
| 验收编号 | 业务模块 | 正确 UI 入口导航 | 对应核心 API 契约 | 当前状态判定 |
|
||||
| :---: | :--- | :--- | :--- | :---: |
|
||||
| **RTC-06** | **培训计划 (Plan)** | 课程管理 → 开班计划 | `/train/plan/*` | **PENDING_FINAL_GATE** |
|
||||
| **RTC-07** | **参训人员 (Enrollment)** | 课程管理 → 开班计划 → 参训人员 (内部Tab) | `POST/GET /train/plans/{planId}/enrollments...` | **PENDING_FINAL_GATE** |
|
||||
| **RTC-08** | **排课课表 (Scheduling)** | 课程管理 → 开班计划 → 排课课表 (内部Tab) | `/train/lessons/*`<br>`/train/plans/{planId}/timetable` | **PENDING_FINAL_GATE** |
|
||||
| **RTC-09** | **电子班牌 (Board)** | 设施设备 → 电子班牌 (**正式路径: `/train/board`**) | `/train/board/*` | **PENDING_FINAL_GATE** |
|
||||
|
||||
### 3. Legacy Analytics 分析模块 (并行交付项)
|
||||
| 验收编号 | 业务模块 | UI 路由入口 | 当前状态判定 | 说明 |
|
||||
| :---: | :--- | :--- | :---: | :--- |
|
||||
| **RTC-10** | 培训总评分析 (Class Report) | 教学评估 → 培训总评分析 (`/analysis/report`) | **PENDING_CODEX** | 等待 Codex Agent 交付 V2 契约 |
|
||||
| **RTC-11** | 学员打卡记录 (Student Checkin) | 考勤与打卡 → 学员打卡记录 (`/analysis/checkin`) | **PENDING_CODEX** | 等待 Codex Agent 交付 V2 契约 |
|
||||
| **RTC-12** | 学习时长统计 (Study Duration) | 学习监控 → 学习时长统计 (`/analysis/duration`) | **PENDING_CODEX** | 等待 Codex Agent 交付 V2 契约 |
|
||||
| **RTC-13** | 学员画像分析 (Student Portrait) | 学员画像 → 画像分析 (`/portrait`) | **PENDING_CODEX** | 等待 Codex Agent 交付 V2 契约 |
|
||||
|
||||
### 4. 综合体验与全站质量门禁
|
||||
| 验收编号 | 检验项 | 验证内容 | 当前状态判定 |
|
||||
| :---: | :--- | :--- | :---: |
|
||||
| **RTC-14** | Frontend Entry 8082 | 访问 `http://192.168.139.230:8082`,前端路由与静态资源无 404 | **PENDING_FINAL_GATE** |
|
||||
| **RTC-15** | 全站 Network 500 = 0 | 完整业务端到端流转中,网络请求 **500 报错数量严格为 0** | **PENDING_FINAL_GATE** |
|
||||
|
||||
---
|
||||
|
||||
## 四、回滚预案与应急处置 (Rollback Gate)
|
||||
|
||||
### 1. 触发条件
|
||||
- 部署后 `/captchaImage` 健康自检连续 35 次超时失败;
|
||||
- 系统日志或核心功能持续出现 HTTP 500 异常;
|
||||
- 出现严重影响主业务的未预期缺陷。
|
||||
|
||||
### 2. 执行回滚操作规范
|
||||
- **严禁通过重新执行旧 V2 脚本来进行回滚**;
|
||||
- 统一使用**上一个已归档制品**执行回退:
|
||||
```bash
|
||||
# 1. 恢复后端稳定 Jar
|
||||
cp /data2/wzb/deploy/backend/ruoyi-admin.jar.bak /data2/wzb/deploy/backend/ruoyi-admin.jar
|
||||
|
||||
# 2. 恢复前端稳定静态资源
|
||||
rm -rf /data2/wzb/deploy/frontend/*
|
||||
cp -r /data2/wzb/deploy/frontend.bak/* /data2/wzb/deploy/frontend/
|
||||
|
||||
# 3. 触发平滑重启脚本
|
||||
bash /data2/wzb/deploy/restart-all.sh
|
||||
```
|
||||
|
||||
### 3. 数据库 Migration 回滚安全准则
|
||||
- `001_sys_oper_log_cost_time.sql` 属于**向前兼容(Backward-Compatible)**字段;
|
||||
- 旧版本后端代码在不读取该字段的情况下完全可以正常运行;
|
||||
- **回滚代码时严禁对数据库执行 `ALTER TABLE ... DROP COLUMN cost_time`**,以避免锁表与元数据不可逆破坏。
|
||||
@@ -0,0 +1,215 @@
|
||||
# RailwaySystem 文档信息架构审计草案 (Document Audit Draft) - Phase A.1 CORRECTION
|
||||
> **状态:** DRAFT / RUNTIME_PENDING (Phase A.1 修正输出,禁止 git add)
|
||||
> **审计基线分支:** `integration/wave2-20260914`
|
||||
> **基线 Commit (命令实测值):** `196c6c47c70330119693f2ab7a6c35b8a22d5300` (短哈希 `196c6c47`)
|
||||
> **工作区 HEAD:** `87322511c78e9109c7fe5af000d3db74b5c6cdfc`
|
||||
> **审计人:** Documentation Architect
|
||||
> **核心原则:**
|
||||
> 1. **严禁主观推断**:Documentation Architect 是信息架构师,不是代码事实裁判。凡未经 Integration 源码直接确认的枚举、字段、状态、不变量与端口,一律不得写成确定事实。
|
||||
> 2. **事实置信度分离**:全量文档按 `Fact Confidence` 严格区分事实来源与可靠程度。
|
||||
> 3. **环境依赖标记**:凡依赖真实服务运行、网络通信与界面渲染的内容,一律标记为 `RUNTIME_PENDING`。
|
||||
|
||||
---
|
||||
|
||||
## 一、审计概览与统计指标
|
||||
|
||||
本轮对 `docs/` 目录下全部 **68** 份技术文档、设计草案、评审纪要及开发验收报告进行了逐一深入审计(涵盖 67 份基线跟踪文档与 1 份未跟踪本地会话记录)。
|
||||
|
||||
### 1. 动作推荐汇总统计 (已彻底复审原 KEEP 分类)
|
||||
| 推荐动作 (Recommended Action) | 文件数量 | 占比 | 核心定义与处理说明 |
|
||||
|:---|:---:|:---:|:---|
|
||||
| **KEEP** | **0** | **0.0%** | **经严格核验,原 8 篇 KEEP 文档均包含旧状态、旧 API、旧不变量或未落地设计,无法满足“100% 符合当前代码事实”的标准,已全数重分类,无原样保留项。** |
|
||||
| **UPDATE_FROM_CODE** | 4 | 5.9% | 核心技术规范骨架有效,但存在旧接口示例、旧分层或旧不变量(如 Scheduling 需补充 Soft Warning 语义),需根据代码事实就地重构更新。 |
|
||||
| **UPDATE_AFTER_RUNTIME** | 5 | 7.3% | 强依赖真实运行环境。包括环境实操手册、全局入口、权限与错误码终态核查、端到端验收矩阵与风险登记册,待 Final Runtime Gate 终态冻结后更新。 |
|
||||
| **MERGE** | 21 | 30.9% | 文档所含工程事实与业务规则具有长期参考价值,但分散在零散文件或跨域混杂,提炼其高价值事实并入各 Module 文档或系统 Handbook。 |
|
||||
| **ARCHIVE** | 35 | 51.5% | 历史阶段性过程产物。包括 Phase 0 遗留代码快照、中间审查报告、数据库迁移阶段流水、会话 log 等,统一移入 `docs/archive/` 永久备查。 |
|
||||
| **REVIEW_REQUIRED** | 3 | 4.4% | 涉及硬件外设防腐适配器、成绩/学时遗留代码或打卡考勤范围,与当前代码存在较大落差,需交由 Codex 与架构师核验决策。 |
|
||||
| **GENERATED** | 0 | 0.0% | 现有存量文档均为手工维护 Markdown,规划未来由 CI/CD 自动生成的文档标记为该类型。 |
|
||||
| **合计** | **68** | **100.0%** | — |
|
||||
|
||||
### 2. 事实置信度分布统计 (Fact Confidence)
|
||||
- `CODE_VERIFIED`:**0**(作为 Phase A.1 文档审计,未经 Codex 专项任务书逐行核验前,存量文档不擅自赋予代码完全验证标签)
|
||||
- `DOC_ONLY`:**11**(设计期提出的契约与规范,需结合代码求证)
|
||||
- `RUNTIME_PENDING`:**5**(强依赖运行时环境与实测数据)
|
||||
- `HISTORICAL`:**47**(历史过程记录、审查报告、迁移验证流水、前期快照)
|
||||
- `VERIFY_WITH_CODE`:**5**(在当前代码中有对应实现,但细节状态与枚举必须经 Codex 深度核验)
|
||||
|
||||
---
|
||||
|
||||
## 二、全量 68 份文档逐项审计明细表
|
||||
|
||||
> **分类映射定义(12大类):**
|
||||
> 1. `Product / Business` | 2. `Architecture` | 3. `API / Contract` | 4. `Database` | 5. `Frontend` | 6. `Security / Permission`
|
||||
> 7. `Runtime / Deployment` | 8. `Testing / Release` | 9. `Module Documentation` | 10. `Historical Development Record`
|
||||
> 11. `Database Migration Asset` | 12. `Generated Human Documentation`
|
||||
>
|
||||
> **Fact Confidence 取值定义:**
|
||||
> `CODE_VERIFIED` \| `DOC_ONLY` \| `RUNTIME_PENDING` \| `HISTORICAL` \| `VERIFY_WITH_CODE`
|
||||
|
||||
| 序号 | 路径 (Path) | 标题 (Title) | 分类 (Category) | 时态 (Temporal) | 事实置信度 (Fact Confidence) | 重复/重叠文档 | 建议动作 (Action) | 处置理由与重构建议 (Reason) |
|
||||
|:---:|:---|:---|:---|:---:|:---:|:---|:---:|:---|
|
||||
| 1 | `docs/README.md` | RailwaySystem 技术架构与代码审计中心(docs) | 2. Architecture | history | `RUNTIME_PENDING` | 无 | **UPDATE_AFTER_RUNTIME** | 仅记录 Phase 0 审计目录,严重滞后。需待 Runtime 终态与信息架构重组完成后重写为全局总入口。 |
|
||||
| 2 | `docs/conversation_record.md` | RailwaySystem 会话全流程记录归档 | 10. Historical Development Record | history | `HISTORICAL` | `generator-v2/01`, `development/issue-01-03` | **ARCHIVE** | 记录特定调试会话的流水账,属过程追溯材料,归入 `archive/conversations/`。 |
|
||||
| 3 | `docs/api-v2/00_readme.md` | Phase 2:API Contract / DTO-VO / Service Boundary Design | 3. API / Contract | current | `DOC_ONLY` | `01`~`10` 章节总述 | **MERGE** | 作为 API 契约总纲,核心规范与目录架构提炼合并入 `handbook/api/api-overview.md`。 |
|
||||
| 4 | `docs/api-v2/01_api_design_principles.md` | RailwaySystem API 设计原则与规范 | 3. API / Contract | current | `VERIFY_WITH_CODE` | 无 | **UPDATE_FROM_CODE** | 原标记 KEEP。核查发现文中包含未实现的 Command API 示例,需从代码核验后修正示例。 |
|
||||
| 5 | `docs/api-v2/02_module_a_base_resource_api.md` | Module A:人员与基础资源 API 契约 | 3. API / Contract | current | `VERIFY_WITH_CODE` | 各基础模块开发验收文档 | **MERGE** | 揉杂 5 个基础业务域,违反高内聚。应提炼并分别合并入各独立 `docs/modules/*.md`。 |
|
||||
| 6 | `docs/api-v2/03_module_b_plan_enrollment_schedule_api.md` | Module B:开班计划与排课 API 契约 | 3. API / Contract | current | `VERIFY_WITH_CODE` | `development/issue-02-01`, `issue-02-02` | **MERGE** | 核心主链路契约。应按业务域拆解合并入 Plan, PlanCourse, Enrollment, Scheduling, Board 模块。 |
|
||||
| 7 | `docs/api-v2/04_module_c_accommodation_attendance_api.md` | Module C:住宿 / 门禁 / 考勤 API 契约 | 3. API / Contract | review | `DOC_ONLY` | 遗留打卡 Controller | **REVIEW_REQUIRED** | 混杂门禁授权与外设打卡,需 Codex 核验当前代码实际落地端点与 mock 机制。 |
|
||||
| 8 | `docs/api-v2/05_module_d_score_learning_statistics_api.md` | Module D:成绩 / 学习 / 统计 / 画像 API 契约 | 3. API / Contract | review | `DOC_ONLY` | 遗留 Controller 代码 | **REVIEW_REQUIRED** | 所列端点多为遗留若依旧版实现或 P1 规划,与当前 Wave 2 存在落差,需 Codex 核查实际可用性。 |
|
||||
| 9 | `docs/api-v2/06_dto_vo_catalog.md` | RailwaySystem DTO / VO 领域模型目录与字段规范 | 3. API / Contract | current | `VERIFY_WITH_CODE` | 后端代码中的 DTO/VO 类 | **MERGE** | 集中定义了核心模型,但难独立维护。通用规约并入 Handbook,具体字段拆入各模块文档。 |
|
||||
| 10 | `docs/api-v2/07_service_boundary.md` | RailwaySystem Service 聚合边界与模块责任划分 | 2. Architecture | current | `DOC_ONLY` | 无 | **UPDATE_FROM_CODE** | 原标记 KEEP。经查文中设计的独立 ApplicationService 分层与当前多包单体实际结构不一致,需依代码重构。 |
|
||||
| 11 | `docs/api-v2/08_transaction_and_invariants.md` | RailwaySystem 事务边界与业务不变量设计 | 2. Architecture | current | `DOC_ONLY` | 无 | **UPDATE_FROM_CODE** | 原标记 KEEP。旧“排课无重叠”硬不变量与当前 Warning 语义冲突,必须从代码核验后重写。 |
|
||||
| 12 | `docs/api-v2/09_external_adapter_contract.md` | 外部系统适配器契约设计 (Integration Contract) | 2. Architecture | current | `DOC_ONLY` | 无 | **REVIEW_REQUIRED** | 原标记 KEEP。文中人脸与门禁 SPI 接口在代码中未落地,属设计资产,需架构师核验后定位。 |
|
||||
| 13 | `docs/api-v2/10_permission_and_error_codes.md` | 权限字符与业务错误码规范 | 6. Security / Permission | review | `RUNTIME_PENDING` | 数据库 sys_menu 及异常类 | **UPDATE_AFTER_RUNTIME** | 错误码与权限规范良好,但必须经由 Runtime 实测与 Codex 逐行核实真实抛出错误码后定稿。 |
|
||||
| 14 | `docs/api-v2/11_open_questions.md` | 现场验证问题映射与 API 应对策略 (Open Questions) | 1. Product / Business | history | `HISTORICAL` | 各模块业务规则 | **ARCHIVE** | 早期现场需求调研备忘录,其有效结论已固化至设计契约中,原件归入 `archive/`。 |
|
||||
| 15 | `docs/api-v2/12_contract_review_round1.md` | Phase 2 Contract Review Round 1 审查报告 | 8. Testing / Release | history | `HISTORICAL` | `api-v2/13` 补丁 | **ARCHIVE** | 里程碑评审会议纪要,结论已通过 V1.0.1 补丁闭环,归档作为过程质保资产。 |
|
||||
| 16 | `docs/api-v2/13_contract_patch_v1.0.1.md` | API Contract V1.0.1 Patch 说明 | 3. API / Contract | current | `DOC_ONLY` | `api-v2/00`, `02`, `06` | **MERGE** | 记录了 CG-01~CG-04 修正,其技术事实合并入各模块文档后,补丁说明归档。 |
|
||||
| 17 | `docs/codebase-audit/00_project_overview.md` | 代码基线审计:项目概览 | 2. Architecture | history | `HISTORICAL` | 系统全景 | **ARCHIVE** | Phase 0 历史概览,基于遗留工程快照,归入 `archive/phase0-audit/`。 |
|
||||
| 18 | `docs/codebase-audit/01_project_tree.md` | 简化项目树 | 2. Architecture | history | `HISTORICAL` | `handbook/architecture/` | **ARCHIVE** | Phase 0 单体工程目录树快照,已被当前多包结构取代,归档。 |
|
||||
| 19 | `docs/codebase-audit/02_training_modules_inventory.md` | 培训业务模块与 14 组 CRUD 盘点 | 1. Product / Business | history | `HISTORICAL` | 各模块业务背景 | **MERGE** | 包含对旧 14 张培训业务表的业务逻辑剖析,有价值的背景提炼入 Handbook,原件归档。 |
|
||||
| 20 | `docs/codebase-audit/03_database_current_state.md` | 数据库当前状态 (Phase 0) | 4. Database | history | `HISTORICAL` | `database-v2/` 体系 | **ARCHIVE** | 记录旧库 73 张表历史结构,已被 Database V2 物理迁移彻底取代,归档。 |
|
||||
| 21 | `docs/codebase-audit/04_api_inventory.md` | 培训接口盘点 (Phase 0) | 3. API / Contract | history | `HISTORICAL` | `api-v2/` 体系 | **ARCHIVE** | 旧若依无契约 CRUD 接口清单,已被全面重构,归档。 |
|
||||
| 22 | `docs/codebase-audit/05_frontend_inventory.md` | 培训前端现状 (Phase 0) | 5. Frontend | history | `HISTORICAL` | `build_ui/` 现有视图 | **ARCHIVE** | Phase 0 前端遗留视图快照,归入归档目录。 |
|
||||
| 23 | `docs/codebase-audit/06_security_and_permissions.md` | 权限与账号体系 (Phase 0) | 6. Security / Permission | history | `HISTORICAL` | 若依通用安全设计 | **MERGE** | 提取其对若依原生鉴权机制的分析入 Handbook 安全篇,原件归档。 |
|
||||
| 24 | `docs/codebase-audit/07_runtime_and_environment.md` | 启动方式与运行环境 | 7. Runtime / Deployment | review | `RUNTIME_PENDING` | CI/CD 与部署手册 | **UPDATE_AFTER_RUNTIME** | 记录了 Docker、JDK、Node 运行要求,必须以 Final Runtime Gate 实测报告为准更新。 |
|
||||
| 25 | `docs/codebase-audit/08_git_status.md` | Git 状态(只读快照) | 10. Historical Development Record | history | `HISTORICAL` | 无 | **ARCHIVE** | 当时审计执行时的临时 git status 备份,纯历史过程数据,归档。 |
|
||||
| 26 | `docs/codebase-audit/09_reusable_ruoyi_capabilities.md` | 可复用的若依能力 | 2. Architecture | current | `HISTORICAL` | 无 | **MERGE** | 原标记 KEEP。经查包含大量 Phase 0 历史缺陷分析,应提炼若依复用能力入 Handbook,原件归档。 |
|
||||
| 27 | `docs/codebase-audit/10_gap_and_conflict_analysis.md` | 当前实现与未来业务设计的冲突点 | 1. Product / Business | history | `HISTORICAL` | `issues-v1/02` | **ARCHIVE** | Phase 0 识别的 12 项业务冲突均已在 Phase 2/3 消化落地,归档。 |
|
||||
| 28 | `docs/codebase-audit/11_executive_summary.md` | 代码基线审计 Executive Summary | 1. Product / Business | history | `HISTORICAL` | 阶段总结报告 | **ARCHIVE** | Phase 0 审计管理层摘要,作为里程碑审计成果归档。 |
|
||||
| 29 | `docs/codebase-audit/12_baseline_classification.md` | Phase 0:当前 Git 基线分类 | 10. Historical Development Record | history | `HISTORICAL` | 无 | **ARCHIVE** | 早期基线分类与标签管理方案,归入历史资产。 |
|
||||
| 30 | `docs/codebase-audit/13_live_database_snapshot.md` | Kingbase 实时数据库快照 (Phase 0) | 4. Database | history | `HISTORICAL` | 旧库结构 | **ARCHIVE** | 当时只读探测快照,作为历史基准归档。 |
|
||||
| 31 | `docs/codebase-audit/14_database_code_diff.md` | 设计文档、实时Kingbase与代码三方差异 | 4. Database | history | `HISTORICAL` | 旧差异报告 | **ARCHIVE** | 当时三方一致性校验报告,归入归档目录。 |
|
||||
| 32 | `docs/codebase-audit/15_live_permission_snapshot.md` | 培训菜单与权限实时快照 | 6. Security / Permission | history | `HISTORICAL` | 权限审计 | **ARCHIVE** | 记录了当时 23 个菜单项无权限字符串的事实,归入归档目录。 |
|
||||
| 33 | `docs/codebase-audit/16_kingbase_readonly_compatibility.md` | Kingbase 只读兼容性核验 | 4. Database | current | `HISTORICAL` | 无 | **MERGE** | 原标记 KEEP。内含旧代码生成器把 db 当 schema 的历史记录(已修复),提炼经验入 Handbook 后归档。 |
|
||||
| 34 | `docs/codebase-audit/17_phase0_summary.md` | Phase 0 工程与数据库真实基线总结 | 10. Historical Development Record | history | `HISTORICAL` | 里程碑总结 | **ARCHIVE** | Phase 0 阶段性总结,归档存查。 |
|
||||
| 35 | `docs/codebase-audit/18_phase05_runtime_fix.md` | Phase 0.5 基础运行修复审计报告 | 8. Testing / Release | history | `HISTORICAL` | 修复记录 | **ARCHIVE** | 早期启动修复与运行阻断排除验证报告,归档存查。 |
|
||||
| 36 | `docs/database-v2/00_readme.md` | 数据库 V2 DDL 生成与设计审查概览 | 4. Database | current | `DOC_ONLY` | `database-v2/01` | **MERGE** | 数据库总体架构与设计思想,提炼合并入 `handbook/database/data-architecture.md`。 |
|
||||
| 37 | `docs/database-v2/01_table_inventory.md` | 数据库 V2 表结构清单与模型比对 | 4. Database | current | `DOC_ONLY` | 各模块数据表设计 | **MERGE** | 21 张物理表字段字典,总表并入数据模型 Handbook,分表拆入各 Module 文档。 |
|
||||
| 38 | `docs/database-v2/02_migration_plan.md` | 数据库 V2 迁移执行计划 | 11. Database Migration Asset | history | `HISTORICAL` | 执行脚本 | **ARCHIVE** | 6 阶段迁移计划,物理迁移已执行通过,归入 `archive/migrations/`。 |
|
||||
| 39 | `docs/database-v2/03_constraint_index_review.md` | 数据库 V2 约束与索引技术审查报告 | 4. Database | current | `HISTORICAL` | 无 | **MERGE** | 原标记 KEEP。属于阶段性审查报告,将外键拓扑与索引建议并入 Handbook 数据库章节,原件归档。 |
|
||||
| 40 | `docs/database-v2/04_risk_review.md` | 数据库 V2 关键设计风险深度审查报告 | 4. Database | history | `HISTORICAL` | 风险登记册 | **ARCHIVE** | 针对 R-01~R-17 风险的审查,已在迁移中落地规避,归入归档。 |
|
||||
| 41 | `docs/database-v2/05_execution_contract.md` | 数据库 V2 迁移执行契约 | 11. Database Migration Asset | history | `HISTORICAL` | 迁移计划 | **ARCHIVE** | 迁移过程执行约束,属于实施过程约束,归档。 |
|
||||
| 42 | `docs/database-v2/06_review_round1_changes.md` | 数据库 V2 DDL Review 修订记录表 (Round 1) | 11. Database Migration Asset | history | `HISTORICAL` | 修订日志 | **ARCHIVE** | 第一次 DDL 修改纪要,归档。 |
|
||||
| 43 | `docs/database-v2/07_review_round2_changes.md` | 数据库 V2 DDL Review Round 2 变更记录 | 11. Database Migration Asset | history | `HISTORICAL` | 修订日志 | **ARCHIVE** | 第二次 DDL 修改纪要,归档。 |
|
||||
| 44 | `docs/database-v2/08_gate_ab_validation.md` | 数据库 V2 双门禁验证报告 (Gate A / Gate B) | 8. Testing / Release | history | `HISTORICAL` | 门禁报告 | **ARCHIVE** | 静态语法与隔离门禁通过报告,归入测试归档。 |
|
||||
| 45 | `docs/database-v2/09_stage1_backup_validation.md` | 数据库 V2 Stage 1 备份阶段验证报告 | 11. Database Migration Asset | history | `HISTORICAL` | 备份日志 | **ARCHIVE** | Stage 1 备份验证流水,归入迁移归档。 |
|
||||
| 46 | `docs/database-v2/10_stage2_6_structure_validation.md` | 数据库 V2 Stage 2~6 结构迁移验证报告 | 11. Database Migration Asset | history | `HISTORICAL` | 结构验证 | **ARCHIVE** | DDL 实际生效验证流水,归入迁移归档。 |
|
||||
| 47 | `docs/database-v2/11_final_migration_validation.md` | 数据库 V2 最终迁移验收报告 (010_verify PASS) | 8. Testing / Release | history | `HISTORICAL` | 终验报告 | **ARCHIVE** | 010_verify 脚本全绿验收里程碑报告,归入归档。 |
|
||||
| 48 | `docs/database-v2/12_generator_v2_readonly_validation.md` | Database V2 Generator 只读验证报告 | 8. Testing / Release | history | `HISTORICAL` | 生成器补丁 | **ARCHIVE** | 代码生成器只读验证测试报告,归档。 |
|
||||
| 49 | `docs/database-v2/13_generator_kingbase_fix_validation.md` | Generator Kingbase V2 元数据适配修复报告 | 8. Testing / Release | history | `HISTORICAL` | `generator-v2/01` | **ARCHIVE** | 代码生成器 Kingbase 元数据适配复验记录,归档。 |
|
||||
| 50 | `docs/development/demo-electronic-board-cleanup.md` | Electronic Board Demo-Safe Cleanup 实施报告 | 9. Module Documentation | current | `HISTORICAL` | ElectronicBoard 模块 | **ARCHIVE** | 班牌清洗方案报告,核心清洗规则提炼入 `modules/11_electronic-board.md` 后原件归档。 |
|
||||
| 51 | `docs/development/issue-01-01-teacher.md` | ISSUE-01-01:师资主数据开发与验收报告 | 9. Module Documentation | current | `HISTORICAL` | Teacher 模块 | **MERGE** | 师资主数据开发验收事实,提取规则、API 与前端交互合并入 `modules/06_teacher.md`。 |
|
||||
| 52 | `docs/development/issue-01-02-student.md` | ISSUE-01-02:学员基础主数据开发与验收报告 | 9. Module Documentation | current | `HISTORICAL` | Student 模块 | **MERGE** | 学员脱敏、身份证校验、双来源模型合并入 `modules/05_student.md`。 |
|
||||
| 53 | `docs/development/issue-01-03-course.md` | ISSUE-01-03:课程库基础资料开发与验收文档 | 9. Module Documentation | current | `HISTORICAL` | Course 模块 | **MERGE** | 课程属性、学时课时换算规则合并入 `modules/07_course.md`。 |
|
||||
| 54 | `docs/development/issue-01-04-space.md` | ISSUE-01-04:教学空间资源维护开发验收文档 | 9. Module Documentation | current | `HISTORICAL` | Classroom & Site 模块 | **MERGE** | 教室与实训场地分离建模、容量规则合并入 `modules/08_classroom.md` 与 `modules/09_training-site.md`。 |
|
||||
| 55 | `docs/development/issue-01-05-dormitory.md` | ISSUE-01-05:宿舍房间与楼宇基础数据维护开发验收文档 | 9. Module Documentation | current | `HISTORICAL` | Dormitory 模块 | **MERGE** | 楼宇、房间、床位动态计算模型合并入 `modules/10_dormitory.md`。 |
|
||||
| 56 | `docs/development/issue-02-01-plan.md` | ISSUE-02-01:培训计划生命周期开发验收 | 9. Module Documentation | current | `HISTORICAL` | Plan 模块 | **MERGE** | 计划状态机、编号规则、生命周期流转合并入 `modules/01_plan.md`。 |
|
||||
| 57 | `docs/development/issue-02-02-plan-course.md` | ISSUE-02-02:本期培训课程引入与配置开发验收 | 9. Module Documentation | current | `HISTORICAL` | PlanCourse 模块 | **MERGE** | 本期课程选择、讲师选派、计划课时匹配规则合并入 `modules/02_plan-course.md`。 |
|
||||
| 58 | `docs/generator-v2/01_kingbase_import_identity_patch.md` | Generator 基础设施补丁 — Kingbase Import Identity | 10. Historical Development Record | history | `HISTORICAL` | `database-v2/13` | **ARCHIVE** | 代码生成器底层驱动补丁技术记录,归入历史开发记录归档。 |
|
||||
| 59 | `docs/issues-v1/00_readme.md` | Phase 3:P0 Epic / Issue 任务拆分总纲 | 1. Product / Business | history | `HISTORICAL` | `issues-v1/01` | **ARCHIVE** | Phase 3 任务分解管理方案,研发已完成,归入项目管理归档。 |
|
||||
| 60 | `docs/issues-v1/01_epic_overview.md` | Phase 3:Epic 架构概览 (Epic Overview) | 1. Product / Business | current | `DOC_ONLY` | 业务全流程 | **MERGE** | 紧扣 PRD 的业务能力域与主链路设计,提炼合并入系统业务架构与流程全景图。 |
|
||||
| 61 | `docs/issues-v1/02_p0_issue_backlog.md` | Phase 3:P0 Issue 详细清单 (P0 Issue Backlog) | 1. Product / Business | current | `DOC_ONLY` | 各模块具体规范 | **MERGE** | 包含 26 个 Issue 的详尽设计,应按业务域拆解合并入各具体 Module 文档,原全局清单归档。 |
|
||||
| 62 | `docs/issues-v1/03_dependency_graph.md` | Phase 3:Issue 依赖关系有向无环图 (Dependency DAG) | 10. Historical Development Record | history | `HISTORICAL` | 排期图表 | **ARCHIVE** | 敏捷研发批次依赖 DAG 图,属于研发调度历史资产,归档。 |
|
||||
| 63 | `docs/issues-v1/04_wave_plan.md` | Phase 3:开发批次计划 (Wave Plan) | 10. Historical Development Record | history | `HISTORICAL` | 研发排期 | **ARCHIVE** | Wave 0~7 开发推进计划,研发阶段性资产,归档。 |
|
||||
| 64 | `docs/issues-v1/05_agent_assignment.md` | 研发分工与代码生成器策略 | 10. Historical Development Record | history | `HISTORICAL` | 研发组织方案 | **ARCHIVE** | 多 Agent 研发调度与分工规范,归档。 |
|
||||
| 65 | `docs/issues-v1/06_acceptance_matrix.md` | Phase 3:端到端验收矩阵与追踪表 | 8. Testing / Release | review | `RUNTIME_PENDING` | 最终验收报告 | **UPDATE_AFTER_RUNTIME** | 53 个 P0 API 端到端追踪表,必须待 Runtime Gate 最终实测验证后更新并标记 CLOSED。 |
|
||||
| 66 | `docs/issues-v1/07_p1_p2_backlog.md` | Phase 3:P1 / P2 需求储备池 (Backlog Register) | 1. Product / Business | current | `DOC_ONLY` | 无 | **UPDATE_FROM_CODE** | 原标记 KEEP。经查部分被列为 P1 的修改端点已在 Wave 2 实现,需从代码核验后剔除已实现项。 |
|
||||
| 67 | `docs/issues-v1/08_risk_register.md` | 技术与业务风险登记册 (Risk Register) | 8. Testing / Release | review | `RUNTIME_PENDING` | 已知问题列表 | **UPDATE_AFTER_RUNTIME** | 记录并发锁与业务一致性风险,必须待 Runtime Gate 实测结束后标记最终缓解状态。 |
|
||||
| 68 | `docs/issues-v1/09_issue_review_round1.md` | Issue Review Round 1 评审整改报告 | 8. Testing / Release | history | `HISTORICAL` | 评审整改记录 | **ARCHIVE** | 记录 Phase 3 初审整改过程与落地证明,归入过程质量归档。 |
|
||||
|
||||
---
|
||||
|
||||
## 三、推荐的目标信息架构与物理目录树
|
||||
|
||||
遵循 **“工程事实 (Handbook/Modules) — 人类表达 (Visual/Demo) — 历史记录 (Archive)”** 严格三权分立原则:
|
||||
|
||||
```text
|
||||
docs/
|
||||
├── README.md # [SSOT] 全局文档总索引与快速导航入口 (UPDATE_AFTER_RUNTIME)
|
||||
│
|
||||
├── handbook/ # [系统级工程事实指南与架构规范]
|
||||
│ ├── business/
|
||||
│ │ ├── business-overview.md # 铁路全流程培训业务价值与闭环说明 (MERGE)
|
||||
│ │ └── future-backlog.md # 二期需求储备池 (需从代码核验已实现项后维护) (UPDATE_FROM_CODE)
|
||||
│ ├── architecture/
|
||||
│ │ ├── system-architecture.md # 总体分层与多包架构 (RuoYi-Vue + ruoyi-train) (MERGE)
|
||||
│ │ ├── service-boundaries.md # 模块聚合边界与禁止越权规则 (UPDATE_FROM_CODE)
|
||||
│ │ └── transactions-and-invariants.md # 事务边界与核心业务不变量 (含排课 Soft Warning 语义) (UPDATE_FROM_CODE)
|
||||
│ ├── api/
|
||||
│ │ ├── api-principles.md # RESTful API 设计准则与规范 (UPDATE_FROM_CODE)
|
||||
│ │ └── permissions-and-errors.md # 全局错误码与权限字符规范 (UPDATE_AFTER_RUNTIME)
|
||||
│ ├── database/
|
||||
│ │ ├── data-architecture.md # 21张物理表架构总览与关系字典 (MERGE)
|
||||
│ │ ├── indexes-and-constraints.md # 约束、索引与高并发锁优化规范 (MERGE)
|
||||
│ │ └── kingbase-compatibility.md # 金仓 KingbaseES 避坑实战指南 (MERGE)
|
||||
│ ├── engineering/
|
||||
│ │ ├── ruoyi-capabilities.md # 若依框架可复用工程能力指南 (MERGE)
|
||||
│ │ └── external-adapters.md # 门禁/硬件外设防腐层集成契约 (REVIEW_REQUIRED)
|
||||
│ └── deployment/
|
||||
│ ├── runtime-environment.md # 运行环境、依赖栈与配置规格 (端口以实测为准) (UPDATE_AFTER_RUNTIME)
|
||||
│ └── cicd-pipeline.md # GitLab CI/CD 流水线配置说明 (VERIFY_WITH_CODE)
|
||||
│
|
||||
├── modules/ # [11大高内聚独立业务模块全要素文档]
|
||||
│ ├── 01_plan.md # 培训计划生命周期模块 (状态机: VERIFY_WITH_CODE)
|
||||
│ ├── 02_plan-course.md # 本期培训课程引入与配置模块
|
||||
│ ├── 03_enrollment.md # 学员参训档案与名单导入模块 (sourceType: VERIFY_WITH_CODE)
|
||||
│ ├── 04_scheduling.md # 智能排课、课次编排与冲突检测模块 (Soft Warning 语义)
|
||||
│ ├── 05_student.md # 学员基础主档与隐私安全脱敏模块
|
||||
│ ├── 06_teacher.md # 师资资源主数据管理模块
|
||||
│ ├── 07_course.md # 课程基础资源库模块
|
||||
│ ├── 08_classroom.md # 普通教室教学空间资源模块
|
||||
│ ├── 09_training-site.md # 铁路实训演练场地模块
|
||||
│ ├── 10_dormitory.md # 学员宿舍楼宇与房态房源模块
|
||||
│ └── 11_electronic-board.md # 电子班牌模块 (仅确认绑定教室,场地支持: VERIFY_WITH_CODE)
|
||||
│
|
||||
├── visual/ # [现代化交互式 HTML 文档站与汇报大屏]
|
||||
│ ├── index.html # 视觉文档站仪表盘主入口
|
||||
│ ├── system-overview.html # 交互式系统全景与指标看板
|
||||
│ ├── business-flow.html # 动态主业务闭环全流程流转图
|
||||
│ ├── architecture.html # 分层技术架构与防腐层交互拓扑图
|
||||
│ ├── data-model.html # 21张表核心实体 ER 关系与模型关系图
|
||||
│ ├── api-map.html # 53个 P0 API 全局交互式全景地图
|
||||
│ ├── deployment.html # 运行环境、容器拓扑与 GitLab CI/CD 流程图
|
||||
│ ├── demo.html # 16:9 高保真交互式答辩/演示 Presentation (截图以实测为准)
|
||||
│ └── modules/ # 11大模块专属交互式展示页面
|
||||
│
|
||||
├── assets/ # [工程静态资产与真实截图集中营]
|
||||
│ ├── diagrams/ # 架构图、流程图、时序图矢量 SVG / Mermaid 源码
|
||||
│ └── screenshots/ # Runtime Gate 捕获的高保真实测 UI 截图
|
||||
│
|
||||
├── archive/ # [历史过程产物与阶段性追溯材料归档 (35份)]
|
||||
│ ├── conversations/ # 会话调试与操作过程日志
|
||||
│ ├── reviews/ # 阶段性 Review 审查报告 (Round 1/2)
|
||||
│ ├── migrations/ # Database V2 物理迁移阶段验证与测试记录
|
||||
│ ├── phase0-audit/ # Phase 0 历史基线与旧库审计快照
|
||||
│ └── phase3-planning/ # Phase 3 敏捷排期、DAG 依赖图与分工计划
|
||||
│
|
||||
└── _meta/ # [架构治理元数据与核验清单]
|
||||
├── document-audit-draft.md # [本文档] Phase A.1 文档信息架构审计草案 (修正版)
|
||||
└── code-verification-checklist.md # 严密事实抽取任务书 (无预设猜测答案)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 四、11 大 Module 规格要素定义
|
||||
|
||||
未来在 `docs/modules/*.md` 中建立的每个模块文档,均须统一严格覆盖以下 **18 项要素**:
|
||||
|
||||
1. **模块是什么 (Definition)**:一句话定义其领域边界。
|
||||
2. **业务价值 (Value Proposition)**:解决什么核心管理痛点与业务收益。
|
||||
3. **在总业务流程的位置 (Position in Flow)**:前置依赖谁,后置触发谁。
|
||||
4. **用户入口 (User Entry)**:菜单路径、导航定位、角色视窗。
|
||||
5. **页面与组件 (Pages & Components)**:对应的 Vue 视图文件与子组件(如 `TimetablePanel.vue`)。
|
||||
6. **核心业务流程 (Core Workflow)**:带泳道或时序的端到端业务流转。
|
||||
7. **状态与状态机 (State Machine)**:从代码中提取的枚举值及其状态迁移矩阵 (`VERIFY_WITH_CODE`)。
|
||||
8. **核心业务规则 (Business Invariants)**:硬性校验、软性警告 (Soft Warning)、超编限制。
|
||||
9. **API 契约 (API Contract)**:端点、HTTP 方法、请求头。
|
||||
10. **DTO / VO 规格 (Data Contracts)**:入参校验规则与出参脱敏规范。
|
||||
11. **数据库物理结构 (Database Tables)**:涉及的主从物理表、关键字段与唯一索引。
|
||||
12. **安全与权限控制 (Security & Perms)**:按钮级 `v-hasPermi` 与接口 `@ss.hasPermi` 映射。
|
||||
13. **业务错误码 (Business Errors)**:模块专属错误码常量与提示文本。
|
||||
14. **跨模块联动 (Cross-Module Interactions)**:只读引用边界与领域事件通知。
|
||||
15. **Runtime 验证 (Runtime Verification)**:自动化与实测验证用例集(标记 `RUNTIME_PENDING`)。
|
||||
16. **当前已知限制 (Known Limitations)**:本期未支持特性与二期演进计划。
|
||||
17. **代码导航 (Code Map)**:Controller, Service, Mapper, XML, Vue 关键物理源码超链接。
|
||||
18. **Demo 演练步骤 (Demo Walkthrough)**:5步内可复现的完整演示剧本。
|
||||
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 88 KiB |
|
After Width: | Height: | Size: 102 KiB |
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 133 KiB |
|
After Width: | Height: | Size: 127 KiB |
|
After Width: | Height: | Size: 85 KiB |
|
After Width: | Height: | Size: 96 KiB |
@@ -0,0 +1,225 @@
|
||||
# RailwaySystem - Final Release Readiness Audit Report
|
||||
|
||||
> **当前正式开发基线分支:** `integration/wave2-20260914`
|
||||
> **当前 Integration HEAD:** `d162954cd1e26c6948408a8304ca333ba9fe7a40`
|
||||
> **最终发布版本 HEAD 标记:** `FINAL_HEAD_PENDING`
|
||||
> **目标远程发布分支:** `origin/feat/cicd-pipeline`
|
||||
> **审计属性:** 发布准备度审计、CI/CD 门禁验证、Migration 分类盘点、部署与回滚方案定义
|
||||
> **纪律铁律:** 只做审计、只写文档、禁止修改业务代码、禁止部署、禁止 push、禁止执行 Browser 测试、HOLD COMMIT
|
||||
|
||||
---
|
||||
|
||||
## 1. 当前发布事实与 Git 状态审计
|
||||
|
||||
### 1.1 分支与 HEAD 状态对照
|
||||
- **目标远程分支:** `origin/feat/cicd-pipeline`
|
||||
- **当前 Remote HEAD (`origin/feat/cicd-pipeline`):**
|
||||
`5d93c217d99ff3cb21ced7ca082d3d8685d4adb5`
|
||||
*(Commit Message: `chore(ci): 增加Kingbase JDBC依赖预检与初始化流程`)*
|
||||
- **当前 Integration HEAD (`integration/wave2-20260914`):**
|
||||
`d162954cd1e26c6948408a8304ca333ba9fe7a40`
|
||||
*(Commit Message: `fix(ui): 清理最终交付界面技术字段与品牌文案`)*
|
||||
- **工作区 HEAD:** `d162954cd1e26c6948408a8304ca333ba9fe7a40` (detached HEAD)
|
||||
|
||||
### 1.2 差异分析与分支滞后事实
|
||||
- **Remote 分支是否落后:** **是 (Behind)**
|
||||
- **落后 Commit 数量:** **落后 2 个 Commit**
|
||||
- **领先提交清单:**
|
||||
1. `e2d7e63d8e157417c5aa83fba536834951a2ea25` - `fix(db): 补齐Kingbase操作日志耗时字段`
|
||||
2. `d162954cd1e26c6948408a8304ca333ba9fe7a40` - `fix(ui): 清理最终交付界面技术字段与品牌文案`
|
||||
- **发布准则:** 保持 **HOLD COMMIT** 与 **DO NOT PUSH**,等待并行任务全部并入并由发版负责人统筹合并。
|
||||
|
||||
---
|
||||
|
||||
## 2. Current Release Delta Migration (当前版本增量迁移)
|
||||
|
||||
### 2.1 增量定义与范围
|
||||
当前 `FINAL_HEAD_PENDING` 相对于上一稳定 RC/基线分支(`origin/feat/cicd-pipeline`),**唯一的数据库增量变更**为:
|
||||
|
||||
- **增量脚本文件:**
|
||||
[`RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql`](file:///Users/wzb/Desktop/项目/RailwaySystem/RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql)
|
||||
- **变更目标:**
|
||||
为若依系统核心日志表 `public.sys_oper_log` 补齐缺失的 `cost_time` 字段(`BIGINT DEFAULT 0`),对齐 Java 实体 `SysOperLog.costTime`,消除系统日志查询接口 `/monitor/operlog/list` 报 500 的系统级阻断缺陷。
|
||||
- **幂等性保障:**
|
||||
脚本采用 `ALTER TABLE public.sys_oper_log ADD COLUMN IF NOT EXISTS cost_time BIGINT DEFAULT 0;` 与补偿 `UPDATE public.sys_oper_log SET cost_time = 0 WHERE cost_time IS NULL;`,具备严格语法级存在性保护与数据安全性。
|
||||
- **发布执行判定:**
|
||||
**若部署目标数据库已经是 V2 基线,本次发布仅需且必须执行该增量脚本,即可完成数据库端升级对齐。**
|
||||
|
||||
### 2.2 历史资产声明 (Historical Assets)
|
||||
仓库中 `sql/train/v2/*` 与 `sql/generator/kingbase/*` 属于 **Historical Bootstrap / Upgrade / Verification Assets (历史引导/整库升级/验收资产)**。
|
||||
目标库在当前已经处于 V2 基线状态下,**绝对严禁在每次版本发布时重复执行这些历史脚本**(如备份快照、重建业务表、删除成绩表等),历史脚本仅用于全新空环境初始化或特定旧库全量升级。
|
||||
|
||||
---
|
||||
|
||||
## 3. Migration 分类盘点与准确统计
|
||||
|
||||
遵循专业规范,将工程内所有 17 个 Kingbase SQL 脚本严格按照工程属性分类,杜绝混合统计口径:
|
||||
|
||||
### 3.1 准确分类统计汇总
|
||||
- **A 类: Schema/Data Migration(模式与数据迁移):** **11 个**(含 1 个当前 Release Delta,10 个历史迁移)
|
||||
- **B 类: Preflight/Probe/Verification(预检/探测/验收断言):** **5 个**(纯只读探测或自带事务显式回滚)
|
||||
- **C 类: Intentionally Disabled(明确禁用/审计禁止):** **1 个**(`007_dicts.sql`,保护系统字典)
|
||||
- **总计脚本资产:** **17 个**
|
||||
|
||||
---
|
||||
|
||||
### 3.2 详细分类清单与执行事实
|
||||
|
||||
#### A 类:Schema/Data Migration (模式与数据迁移,共 11 个)
|
||||
| 脚本路径 | 资产属性 | 用途说明 | 是否幂等 | 目标库已是V2时是否执行 | 历史测试环境实测状态 |
|
||||
| :--- | :---: | :--- | :---: | :---: | :---: |
|
||||
| `RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql` | **Current Release Delta** | 为 `sys_oper_log` 补齐 `cost_time` 字段,解决 500 报错 | **是** | **必须执行 (若未补齐)** | **已执行** (P0阶段已实测验证) |
|
||||
| `RuoYi-Vue/sql/generator/kingbase/002a_gen_table_identity_patch.sql` | Historical Bootstrap | 为 `gen_table.table_id` 添加自增 Identity | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/generator/kingbase/002b_gen_table_column_identity_patch.sql` | Historical Bootstrap | 为 `gen_table_column.column_id` 添加自增 Identity | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/001_backup_current_schema.sql` | Historical Upgrade | 备份 14 张历史业务表为 `bak_v1_*` 快照 | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/002_create_new_tables.sql` | Historical Upgrade | 创建 8 张 V2 新业务表 | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/003_alter_master_tables.sql` | Historical Upgrade | 解耦改造 8 张主表结构,卸载旧触发器 | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/004_rebuild_business_tables.sql` | Historical Upgrade | 重建 5 张业务过程表结构 | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/005_constraints.sql` | Historical Upgrade | 建立 13 组 UNIQUE, 26 组 FK, 9 组 CHECK | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/006_indexes.sql` | Historical Upgrade | 创建排课三复合索引及部分唯一索引 | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/008_migrate_teacher.sql` | Historical Upgrade | 迁移旧教师数据并固化 NOT NULL | 否 | 严禁重复执行 | **已执行** |
|
||||
| `RuoYi-Vue/sql/train/v2/009_drop_legacy_score.sql` | Historical Upgrade | 下线 0 行旧表 `train_score_info` | 是 | 严禁重复执行 | **已执行** |
|
||||
|
||||
#### B 类:Preflight/Probe/Verification (预检/探测/验收断言,共 5 个)
|
||||
| 脚本路径 | 资产属性 | 用途说明 | 执行特性 | 是否曾真实执行 | 执行结果与断言结论 |
|
||||
| :--- | :---: | :--- | :---: | :---: | :---: |
|
||||
| `RuoYi-Vue/sql/generator/kingbase/001_generator_identity_precheck.sql` | Preflight | 预检 Generator 两张表自增属性 Case 分支 | 只读诊断探针 | **是** | 输出 CASE_2 分支,无状态修改 |
|
||||
| `RuoYi-Vue/sql/generator/kingbase/003_generator_identity_verify.sql` | Verification | 验证 Generator 表自增、依赖及序列游标对齐 | 只读断言 | **是** | 输出 `VERIFY: PASS` |
|
||||
| `RuoYi-Vue/sql/train/v2/000_tx_capability_probe.sql` | Probe (Gate A) | 探测 KingbaseES 实例 DDL 事务原子性与回滚机制 | 临时表+显式 ROLLBACK | **是** | 显式回滚成功,输出 `[Probe-PASS]`,零残留 |
|
||||
| `RuoYi-Vue/sql/train/v2/000_preflight.sql` | Preflight (Gate B) | Phase 0.5 基线强校验 (断言 14旧表, 1教师, 24外键) | **纯只读强断言** | **是** | **在 Gate B 阶段实测执行通过**,输出 `[Preflight-PASS]` |
|
||||
| `RuoYi-Vue/sql/train/v2/010_verify.sql` | Verification | 21 张 V2 业务表定义级全量深度验收断言脚本 | 纯只读强断言 | **是** | 实测执行通过,输出 `[Verify-PASS]` |
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **关于 `000_preflight.sql` 真实状态的确定性说明:**
|
||||
> `000_preflight.sql` 属于纯只读前置基线断言探针(Gate B 门禁)。它**已在历史 V2 迁移准入阶段在真实测试库上完整执行过**并输出 `[Preflight-PASS]`。它不包含任何 DDL/DML 写入,不改变任何数据,不属于发布变更脚本。在当前已升级至 V2 的数据库上,无需再次执行(若再次执行会因表结构已演进至 V2 而断言拦截,这正是其预检保护的设计初衷)。
|
||||
|
||||
#### C 类:Intentionally Disabled (明确审计禁止执行,共 1 个)
|
||||
| 脚本路径 | 资产属性 | 审计结论与处置规则 |
|
||||
| :--- | :---: | :--- |
|
||||
| `RuoYi-Vue/sql/train/v2/007_dicts.sql` | Intentionally Disabled | **DO NOT EXECUTE (严禁执行)**。经全链路审计确认,当前生产/测试环境 `sys_dict_*` 表处于 44/500 条纯净基线。为保护若依底座零破坏,严禁执行该脚本,直到后续契约专项重新审定。 |
|
||||
|
||||
---
|
||||
|
||||
## 4. CI Readiness 审计与最终 Gate 顺序
|
||||
|
||||
### 4.1 CI 配置与预检核查 (`.gitlab-ci.yml`)
|
||||
- **Stage 顺序:** `build_backend` → `build_frontend` → `deploy`
|
||||
- **Kingbase JDBC Preflight:** 由 [check-kingbase-jdbc.sh](file:///Users/wzb/Desktop/项目/RailwaySystem/scripts/bootstrap/check-kingbase-jdbc.sh) 执行,严格比对本地驱动与授权 SHA256 哈希 `346d5602477ed472b19c5e25729fff5a58b1d83cec56162a56ac4b86d9546c32`;
|
||||
- **Redis Runtime Preflight:** 部署前强制检查 `SPRING_REDIS_PASSWORD` 非空;
|
||||
- **Maven Test/Package:** `mvn clean package` 输出 `ruoyi-admin.jar`;
|
||||
- **Frontend Build:** 注入兼容选项并软链本地缓存,`npm run build:prod` 输出 `build_ui/dist/`;
|
||||
- **Secret 相关检查:** 强制校验 `TRAIN_STUDENT_IDENTITY_ENCRYPTION_KEY`, `TRAIN_STUDENT_IDENTITY_HASH_KEY`, `SPRING_REDIS_PASSWORD`。
|
||||
|
||||
### 4.2 最终 CI Gate 顺序
|
||||
```text
|
||||
[CI_GATE_01] Backend Environment Setup (JDK 8, Maven 工具链验证)
|
||||
↓
|
||||
[CI_GATE_02] Kingbase JDBC 8.6.0 Integrity Preflight (SHA256 驱动强校验)
|
||||
↓
|
||||
[CI_GATE_03] Maven Package & Test Gate (ruoyi-admin.jar 产物构建与测试)
|
||||
↓
|
||||
[CI_GATE_04] Frontend Node Runtime & Cache Linking (Node 配置与依赖软链)
|
||||
↓
|
||||
[CI_GATE_05] Frontend Build Gate (Webpack 生产模式构建 build_ui/dist)
|
||||
↓
|
||||
[CI_GATE_06] Deployment Branch Filter Gate (仅 feat/cicd-pipeline 分支允许触发)
|
||||
↓
|
||||
[CI_GATE_07] Runtime Secret & Security Preflight (学员加密密钥、Hash密钥、Redis密码校验)
|
||||
↓
|
||||
[CI_GATE_08] Process Graceful Shutdown (kill -15 优雅下线,超时 kill -9)
|
||||
↓
|
||||
[CI_GATE_09] Backend Service Boot & Captcha Health Check (/captchaImage 轮询断言 code:200)
|
||||
↓
|
||||
[CI_GATE_10] Frontend Static Assets Refresh & Nginx Reload (8082 端口平滑重载)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 5. Deployment Readiness 审计与步骤修正
|
||||
|
||||
### 5.1 部署环境定义
|
||||
- **服务器别名:** `sict`
|
||||
- **部署根目录:** `/data2/wzb/deploy`
|
||||
- **后端服务端口:** `8092`
|
||||
- **前端 Nginx 端口:** `8082`
|
||||
- **Kingbase 数据库服务:** `192.168.139.218:4321/training`
|
||||
- **部署管理脚本:** `deploy/restart-all.sh`
|
||||
- **Nginx 配置文件:** `/data2/wzb/deploy/nginx/nginx.conf`
|
||||
- **后端 Jar 物理路径:** `/data2/wzb/deploy/backend/ruoyi-admin.jar`
|
||||
- **前端 Dist 物理路径:** `/data2/wzb/deploy/frontend/`
|
||||
|
||||
### 5.2 修正后的部署步骤 (DEPLOY_STEP_01 ~ DEPLOY_STEP_10)
|
||||
|
||||
- **`DEPLOY_STEP_01` (环境与凭据预检):** 确认目标机 `sict` 上敏感环境变量(`TRAIN_STUDENT_IDENTITY_ENCRYPTION_KEY`, `TRAIN_STUDENT_IDENTITY_HASH_KEY`, `SPRING_REDIS_PASSWORD`)已就绪。
|
||||
- **`DEPLOY_STEP_02` (数据库 Schema 版本判定与 Delta 执行):**
|
||||
**先判断目标库当前 schema 版本**:
|
||||
- 若目标库**已经是 V2 基线**:**仅执行当前 Release Delta migration**(即 `RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql`),**严禁重复执行历史 V2 rebuild/drop/backup 脚本**;
|
||||
- 若目标库为全新库或历史旧库:按受控初始化手册逐步升级。
|
||||
- **`DEPLOY_STEP_03` (现网制品备份):** 备份当前运行中的 `ruoyi-admin.jar` 为 `ruoyi-admin.jar.bak`,备份 `frontend` 为 `frontend.bak`。
|
||||
- **`DEPLOY_STEP_04` (CI 构建产物生成与归档):** 运行发布流水线,生成后端 `ruoyi-admin.jar` 与前端 `dist/` 构建物。
|
||||
- **`DEPLOY_STEP_05` (前端静态资源覆盖部署):** 清空 `/data2/wzb/deploy/frontend/*`,将新构建的 `dist/*` 内容拷贝至该目录。
|
||||
- **`DEPLOY_STEP_06` (后端 Jar 包更新部署):** 将新构建的 `ruoyi-admin.jar` 拷贝至 `/data2/wzb/deploy/backend/`。
|
||||
- **`DEPLOY_STEP_07` (执行平滑重启调度):** 调用 `bash deploy/restart-all.sh`。
|
||||
- **`DEPLOY_STEP_08` (后端优雅停机与新实例启动):** 脚本优雅终止旧进程并在端口 `8092` 启动新进程。
|
||||
- **`DEPLOY_STEP_09` (健康自检探针验证):** 脚本自动轮询 `http://127.0.0.1:8092/captchaImage`,35 次内确认返回 `"code":200`。
|
||||
- **`DEPLOY_STEP_10` (前端 Nginx 平滑重载):** 验证配置并执行 `nginx -s reload`,确保 8082 端口对外访问就绪。
|
||||
|
||||
---
|
||||
|
||||
## 6. Runtime Verification Checklist (精准三态定义)
|
||||
|
||||
由于本次仅为审计与准备任务,未部署、未启动 Browser,所有验收项严谨标注当前真实状态,**不得将当前 HEAD 未重新执行项写成已通过**:
|
||||
|
||||
| 验收编号 | 检验项 / 模块 | UI 路由入口 / API 真实端点 | 真实核验状态判定 | 状态说明 |
|
||||
| :---: | :--- | :--- | :---: | :--- |
|
||||
| **RTC-01** | Backend Health | `GET http://127.0.0.1:8092/captchaImage` | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 脚本中自检逻辑已在历史发布实测通过,当前 HEAD 未部署 |
|
||||
| **RTC-02** | Kingbase Connectivity | 后端启动连接池与元数据读取 | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 历史实测通过,当前 HEAD 待最终部署验证 |
|
||||
| **RTC-03** | Redis Connectivity | Captcha 缓存与 Token 存储 | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 历史实测通过,当前 HEAD 待最终部署验证 |
|
||||
| **RTC-04** | User Login | `POST /prod-api/login` | **PREVIOUSLY_VERIFIED_ON_PRIOR_RC** | 历史实测通过,当前 HEAD 待最终部署验证 |
|
||||
| **RTC-05** | OperLog 耗时字段查询 | `GET /prod-api/monitor/operlog/list` | **PREVIOUSLY_VERIFIED / DB_FIX_VALIDATED** | `cost_time` 数据库补丁在当前测试库实测执行并验证 200,但当前 integration 尚未部署验证 |
|
||||
| **RTC-06** | Plan (培训计划) | **UI:** 课程管理 → 开班计划<br>**API:** `/train/plan/*` | **PENDING_FINAL_GATE** | Safe UI Polish 涉及页面,待最终发版门禁运行时验证 |
|
||||
| **RTC-07** | Enrollment (参训人员) | **UI:** 课程管理 → 开班计划 → 参训人员 (Tab)<br>**API:** `POST/GET /train/plans/{planId}/enrollments...` | **PENDING_FINAL_GATE** | 内部 Tab 视图,Safe UI Polish 涉及页面,待最终门禁验证 |
|
||||
| **RTC-08** | Scheduling (智能排课) | **UI:** 课程管理 → 开班计划 → 排课课表 (Tab)<br>**API:** `/train/lessons/*` 及 `/train/plans/{planId}/timetable` | **PENDING_FINAL_GATE** | 内部 Tab 视图,冲突 Soft Warning,待最终门禁验证 |
|
||||
| **RTC-09** | Board (电子班牌) | **UI:** 设施设备 → 电子班牌<br>**正式路由:** `/train/board`<br>**API:** `/train/board/*` | **PENDING_FINAL_GATE** | Safe UI Polish 涉及页面,正式路径 `/train/board`,待最终门禁验证 |
|
||||
| **RTC-10** | Legacy Analytics 1: 培训总评分析 | **UI:** 教学评估 → 培训总评分析 (`/analysis/report`) | **PENDING_CODEX** | 处于并行处理中,等待 Codex 交付后验收 |
|
||||
| **RTC-11** | Legacy Analytics 2: 学员打卡记录 | **UI:** 考勤与打卡 → 学员打卡记录 (`/analysis/checkin`) | **PENDING_CODEX** | 处于并行处理中,等待 Codex 交付后验收 |
|
||||
| **RTC-12** | Legacy Analytics 3: 学习时长统计 | **UI:** 学习监控 → 学习时长统计 (`/analysis/duration`) | **PENDING_CODEX** | 处于并行处理中,等待 Codex 交付后验收 |
|
||||
| **RTC-13** | Legacy Analytics 4: 学员画像分析 | **UI:** 学员画像 → 画像分析 (`/portrait`) | **PENDING_CODEX** | 处于并行处理中,等待 Codex 交付后验收 |
|
||||
| **RTC-14** | Frontend Nginx 8082 | `http://192.168.139.230:8082` | **PENDING_FINAL_GATE** | 待部署后验证反向代理与静态资源加载 |
|
||||
| **RTC-15** | Global Network Quality | 全模块页面跳转与 API 交互 | **PENDING_FINAL_GATE** | 待全部集成合并后执行全站 **Network 500 = 0** 门禁断言 |
|
||||
|
||||
---
|
||||
|
||||
## 7. Rollback Plan (版本与数据回滚预案)
|
||||
|
||||
### 7.1 代码与前端回滚策略
|
||||
- **禁止通过执行旧 V2 脚本进行回滚**;
|
||||
- 采用**上一个已归档稳定制品**进行平滑回退:
|
||||
```bash
|
||||
# 恢复后端稳定 Jar
|
||||
cp /data2/wzb/deploy/backend/ruoyi-admin.jar.bak /data2/wzb/deploy/backend/ruoyi-admin.jar
|
||||
|
||||
# 恢复前端稳定 Dist
|
||||
rm -rf /data2/wzb/deploy/frontend/*
|
||||
cp -r /data2/wzb/deploy/frontend.bak/* /data2/wzb/deploy/frontend/
|
||||
|
||||
# 触发平滑重启
|
||||
bash deploy/restart-all.sh
|
||||
```
|
||||
|
||||
### 7.2 数据库 Migration 回滚安全准则
|
||||
- **零 DROP 原则:** `cost_time` 新增列属于向前兼容字段(DEFAULT 0),旧版本代码不读取该列即可正常运行。
|
||||
- **无需且严禁 DROP COLUMN:** 代码回滚时**严禁为数据库删除 `cost_time` 列**,杜绝锁表与元数据破坏。
|
||||
|
||||
---
|
||||
|
||||
## 8. Release Artifact Manifest (发布产物清单)
|
||||
|
||||
1. **后端 Jar 包:** `RuoYi-Vue/ruoyi-admin/target/ruoyi-admin.jar`
|
||||
2. **前端静态制品:** `build_ui/dist/`
|
||||
3. **当前发布 Delta Migration:** `RuoYi-Vue/sql/system/kingbase/001_sys_oper_log_cost_time.sql`
|
||||
4. **历史引导/升级/验收资产包:** `RuoYi-Vue/sql/train/v2/*`, `RuoYi-Vue/sql/generator/kingbase/*`
|
||||
5. **部署配置与运维脚本:** `deploy/restart-all.sh`, `deploy/nginx.conf.example`, `scripts/bootstrap/check-kingbase-jdbc.sh`, `.gitlab-ci.yml`
|
||||
6. **版本基线 HEAD:** `FINAL_HEAD_PENDING` (当前开发基线 `d162954cd1e26c6948408a8304ca333ba9fe7a40`)
|
||||
7. **测试与准备报告:** `docs/_meta/final-release-readiness.md`, `docs/_meta/deployment-gate-checklist.md`
|
||||
8. **Browser 审计报告:** `docs/ui-audit-screenshots/`
|
||||