# 模型参数阈值更新接口优化实施计划 > **For Claude:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. **Goal:** 简化模型参数保存接口的 DTO 结构,减少冗余字段 **Architecture:** 纯重构,不改变业务逻辑。简化 DTO 字段,同步更新 Service 和前端调用 **Tech Stack:** Java 17, Spring Boot, Vue.js --- ## Task 1: 简化后端 DTO **Files:** - Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java` **Step 1: 读取当前 DTO 文件** 检查现有代码结构。 **Step 2: 重写 DTO 文件** 将整个文件替换为简化后的版本: ```java package com.ruoyi.ccdi.project.domain.dto; import lombok.Data; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import java.util.List; /** * 模型参数保存DTO */ @Data public class ModelParamSaveDTO { /** 项目ID */ private Long projectId; /** 模型编码 */ @NotBlank(message = "模型编码不能为空") private String modelCode; /** 参数列表 */ @NotNull(message = "参数列表不能为空") private List params; @Data public static class ParamValueItem { /** 参数编码 */ @NotBlank(message = "参数编码不能为空") private String paramCode; /** 参数值 - 唯一可修改字段 */ @NotBlank(message = "参数值不能为空") private String paramValue; } } ``` **Step 3: 保存文件** 确保文件保存成功。 --- ## Task 2: 更新 Service 层类型引用 **Files:** - Modify: `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java` **Step 1: 更新 for 循环中的类型引用** 找到第 105 行附近的代码,将: ```java for (ModelParamSaveDTO.ParamItem item : saveDTO.getParams()) { ``` 改为: ```java for (ModelParamSaveDTO.ParamValueItem item : saveDTO.getParams()) { ``` --- ## Task 3: 简化前端请求参数 **Files:** - Modify: `ruoyi-ui/src/views/ccdi/modelParam/index.vue` **Step 1: 找到 handleSave 方法中的 saveDTO 构建** 定位到第 119-133 行。 **Step 2: 简化请求参数** 将原有的 saveDTO 构建代码: ```javascript const saveDTO = { projectId: this.queryParams.projectId, modelCode: this.queryParams.modelCode, modelName: this.modelList.find( (m) => m.modelCode === this.queryParams.modelCode )?.modelName, params: modifiedParams.map((item) => ({ paramCode: item.paramCode, paramName: item.paramName, paramDesc: item.paramDesc, paramValue: item.paramValue, paramUnit: item.paramUnit, sortOrder: item.sortOrder, })), }; ``` 替换为简化版本: ```javascript const saveDTO = { projectId: this.queryParams.projectId, modelCode: this.queryParams.modelCode, params: modifiedParams.map((item) => ({ paramCode: item.paramCode, paramValue: item.paramValue, })), }; ``` --- ## Task 4: 编译后端验证 **Files:** - 无文件修改,仅验证 **Step 1: 编译后端项目** ```bash cd D:/ccdi/ccdi && mvn clean compile -DskipTests ``` **Expected:** BUILD SUCCESS **Step 2: 如有编译错误,检查类型引用** 确保所有 `ParamItem` 都已改为 `ParamValueItem`。 --- ## Task 5: 功能测试验证 **Files:** - 无文件修改,仅验证 **Step 1: 启动后端服务** ```bash cd D:/ccdi/ccdi && mvn spring-boot:run ``` 等待服务启动完成。 **Step 2: 通过 Swagger 测试保存接口** 1. 访问 `http://localhost:8080/swagger-ui/index.html` 2. 找到 `模型参数配置` 分组 3. 测试 `/ccdi/modelParam/save` 接口 4. 使用简化的请求体: ```json { "projectId": 0, "modelCode": "LARGE_TRANSACTION", "params": [ { "paramCode": "SINGLE_AMOUNT", "paramValue": "50000" } ] } ``` **Expected:** 返回 `{"code": 200, "msg": "保存成功"}` **Step 3: 验证参数已更新** 调用 `/ccdi/modelParam/list?projectId=0&modelCode=LARGE_TRANSACTION` **Expected:** 返回的参数中 `SINGLE_AMOUNT` 的 `paramValue` 已更新为 `50000` --- ## Task 6: 提交代码 **Step 1: 查看变更** ```bash git status git diff ``` **Step 2: 提交后端改动** ```bash git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java git add ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java git commit -m "refactor: 简化 ModelParamSaveDTO,移除冗余字段" ``` **Step 3: 提交前端改动** ```bash git add ruoyi-ui/src/views/ccdi/modelParam/index.vue git commit -m "refactor: 简化模型参数保存请求参数" ``` --- ## 改动摘要 | 文件 | 改动 | |------|------| | `ModelParamSaveDTO.java` | 移除 modelName,ParamItem 简化为 ParamValueItem(2字段) | | `CcdiModelParamServiceImpl.java` | 类型引用 ParamItem → ParamValueItem | | `index.vue` | 请求参数只保留 paramCode 和 paramValue | **风险等级:** 低(向后兼容,纯简化重构) --- **创建日期:** 2026-02-26