补充参数保存触发重打标后端实施记录

This commit is contained in:
wkc
2026-03-19 09:06:26 +08:00
parent f5dcbbf821
commit d03427bde4
2 changed files with 29 additions and 34 deletions

View File

@@ -1,36 +1,28 @@
# 参数保存触发项目流水重打标实施记录
# 参数保存触发项目流水重打标后端实施记录
## 本次改动
- 后端在项目参数批量保存成功后自动触发项目内流水重新打标
- 自动重打标由同步执行改为后台异步排队执行
- 前端在项目参数提交前增加提醒弹窗,确认后再提交保存
- 补齐项目级单模型参数保存成功后自动重打标触发
- 保持批量参数保存与单模型保存使用一致的触发语义
- 增加触发类型透传测试与后端验证记录
## 修改内容
### 后端
-`TriggerType` 中新增 `AUTO_PARAM_CHANGE`
- `CcdiModelParamServiceImpl.saveAllParams()` 中,项目级参数保存成功且存在实际更新时触发 `submitAutoRebuild`
- `ProjectBankTagRebuildCoordinator` 中新增 `tagRebuildExecutor` 异步调度,自动重打标改为后台执行
- 增加异步排队窗口的补跑标记,避免重复触发请求在任务创建前被吞掉
- `BankTagThreadPoolConfig` 中新增项目级重打标线程池配置
### 前端
-`ParamConfig.vue``handleSaveAll` 中增加确认弹窗
- 保存成功提示改为“已开始项目内流水重新打标”
- 保存成功后刷新参数列表,并向父页面发出 `refresh-project` 事件
-`CcdiModelParamServiceImpl.saveParams()` 中统计实际更新条数,仅在 `projectId > 0` 且存在实际更新时触发 `submitAutoRebuild`
- 抽取 `submitAutoRebuildIfNeeded` 私有方法,统一 `saveParams``saveAllParams` 的触发条件和日志
-`CcdiModelParamServiceImplTest` 中新增:
- 项目级单模型保存成功后触发自动重打标
- 无实际更新时不触发自动重打标
- `CcdiBankTagServiceImplTest` 中新增 `AUTO_PARAM_CHANGE` 触发类型透传校验
- 更新后端验证记录,覆盖单模型保存、批量保存、默认参数与未更新场景
## 测试与验证
- 后端:
`mvn -pl ccdi-project -Dtest=CcdiModelParamServiceImplTest,ProjectBankTagRebuildCoordinatorTest test`
- 前端:
`cd ruoyi-ui && npm run build:prod`
```bash
mvn -pl ccdi-project -Dtest=CcdiModelParamServiceImplTest,CcdiBankTagServiceImplTest test
```
## 结果
- 后端相关单元测试全部通过
- 前端生产构建通过
- 未启动额外前后端运行进程,因此无需额外清理测试进程
- 后端相关聚焦单元测试全部通过
- 本次验证未启动额外前后端运行进程,无需清理测试进程

View File

@@ -2,25 +2,28 @@
## 验证范围
- 项目参数批量保存成功后自动提交异步重打标
- 自动重打标通过后台执行器异步排队,不阻塞当前请求线程
- 自动重打标在已存在运行任务时仍可记录补跑信号
- 项目级单模型参数保存成功后自动异步触发重打标
- 项目级批量参数保存成功后自动异步触发重打标
- 全局默认参数保存不触发项目重打标
- 参数未实际更新或保存失败时不触发重打标
- 自动触发来源透传为 `AUTO_PARAM_CHANGE`
## 验证命令
```bash
mvn -pl ccdi-project -Dtest=CcdiModelParamServiceImplTest,ProjectBankTagRebuildCoordinatorTest test
mvn -pl ccdi-project -Dtest=CcdiModelParamServiceImplTest,CcdiBankTagServiceImplTest test
```
## 验证结果
- 结果:通过
- `CcdiModelParamServiceImplTest` 通过 6 个用例
- `ProjectBankTagRebuildCoordinatorTest` 通过 6 个用例
- 总计 12 个用例全部通过
- `CcdiModelParamServiceImplTest` 通过 8 个用例
- `CcdiBankTagServiceImplTest` 通过 8 个用例
- 总计 16 个用例全部通过
## 关键结论
- `saveAllParams` 在项目级参数实际更新成功后会调用 `submitAutoRebuild(projectId, TriggerType.AUTO_PARAM_CHANGE)`
- `submitAuto` 已改为通过 `tagRebuildExecutor` 异步提交后台执行
- 当前实现不会为 `projectId=0` 的全局默认参数触发项目重打标
- `saveParams``saveAllParams` 在项目级参数实际更新成功后,都会调用 `submitAutoRebuild(projectId, TriggerType.AUTO_PARAM_CHANGE)`
- `projectId=0` 的全局默认参数保存不会触发项目级重打标
- `submitAutoRebuild` 会保持 `AUTO_PARAM_CHANGE` 触发类型透传到协调器
- 当参数未实际更新时,不会误触发自动重打标