# 模型参数阈值更新接口优化设计

## 1. 背景

当前 `ModelParamSaveDTO` 存在参数冗余问题：

- 外层包含不必要的 `modelName` 字段
- 内层 `ParamItem` 包含 6 个字段，但 Service 层只使用 `paramCode` 和 `paramValue`
- 前端请求体包含大量无用字段，增加网络传输开销

## 2. 优化目标

- 简化 DTO 结构，减少冗余字段
- 减少前端请求数据量
- 提升代码可读性

## 3. 设计方案

### 3.1 后端 DTO 简化

**文件：** `ccdi-project/src/main/java/com/ruoyi/ccdi/project/domain/dto/ModelParamSaveDTO.java`

**改动：**

- 移除 `modelName` 字段
- 将内部类 `ParamItem` 重命名为 `ParamValueItem`
- 内部类只保留 `paramCode` 和 `paramValue` 两个字段

**优化后结构：**

```java
@Data
public class ModelParamSaveDTO {
    private Long projectId;

    @NotBlank(message = "模型编码不能为空")
    private String modelCode;

    @NotNull(message = "参数列表不能为空")
    private List<ParamValueItem> params;

    @Data
    public static class ParamValueItem {
        @NotBlank(message = "参数编码不能为空")
        private String paramCode;

        @NotBlank(message = "参数值不能为空")
        private String paramValue;
    }
}
```

### 3.2 Service 层微调

**文件：** `ccdi-project/src/main/java/com/ruoyi/ccdi/project/service/impl/CcdiModelParamServiceImpl.java`

**改动：** 更新循环中的类型引用

```java
// 改动前
for (ModelParamSaveDTO.ParamItem item : saveDTO.getParams())

// 改动后
for (ModelParamSaveDTO.ParamValueItem item : saveDTO.getParams())
```

### 3.3 前端请求简化

**文件：** `ruoyi-ui/src/views/ccdi/modelParam/index.vue`

**改动：** 简化 `handleSave` 方法中的请求参数

**优化后：**

```javascript
const saveDTO = {
  projectId: this.queryParams.projectId,
  modelCode: this.queryParams.modelCode,
  params: modifiedParams.map((item) => ({
    paramCode: item.paramCode,
    paramValue: item.paramValue,
  })),
};
```

## 4. 改动文件清单

| 文件                               | 改动类型   |
|----------------------------------|--------|
| `ModelParamSaveDTO.java`         | 简化字段   |
| `CcdiModelParamServiceImpl.java` | 类型引用更新 |
| `index.vue`                      | 请求参数简化 |

## 5. 优化效果

| 指标        | 优化前 | 优化后 |
|-----------|-----|-----|
| DTO 外层字段数 | 3   | 2   |
| DTO 内层字段数 | 6   | 2   |
| 前端请求体字段数  | 8   | 4   |

## 6. 风险评估

- **风险等级：** 低
- **向后兼容：** 是（后端忽略多余字段）
- **测试要求：** 验证保存功能正常

---

**创建日期：** 2026-02-26
