# 模型默认参数后端对齐验证记录

## 验证时间

- 2026-03-16

## 静态脚本比对

- 对比文件：
  - `sql/ccdi_model_param.sql`
  - `sql/2026-03-16-update-ccdi-model-param-defaults.sql`
- 校验结果：
  - 系统默认模型数：5
  - 系统默认参数数：16
  - `model_code + param_code` 唯一组合数：16
  - `param_value` 均为原始字符串，不含千分位逗号

## 后端代码验证

- 单测命令：
  - `mvn -pl ccdi-project -Dtest=CcdiModelParamServiceImplTest test`
- 结果：
  - `BUILD SUCCESS`
  - 覆盖 `default` 项目读取系统默认参数
  - 覆盖默认项目首次保存时复制整套系统默认参数并切换为 `custom`

- 编译命令：
  - `mvn -pl ccdi-project -am -DskipTests compile`
- 结果：
  - `BUILD SUCCESS`

## 联调环境检查

- 使用配置：
  - `ruoyi-admin/src/main/resources/application-local.yml`
- 数据库检查命令：
  - `SELECT COUNT(*) AS total_rows, COUNT(DISTINCT model_code) AS model_count FROM ccdi_model_param WHERE project_id = 0;`
- 检查结果：
  - 初始状态下，`project_id = 0` 默认参数记录数为 `0`
  - 已执行 `sql/2026-03-16-update-ccdi-model-param-defaults.sql`
  - 升级后，`project_id = 0` 默认参数记录数为 `16`
  - 升级后默认模型数为 `5`

## 接口回归结论

- 已完成：
  - 代码层行为通过单测验证
  - SQL 初始化脚本与升级脚本产物一致
  - `GET /ccdi/modelParam/listAll?projectId=0`
  - `GET /ccdi/modelParam/listAll?projectId=<default项目ID>`
  - `POST /ccdi/modelParam/saveAll`

## 接口回归结果

- 启动方式：
  - 由于 `spring-boot:run` 在本地会读到不可达数据源，最终使用 `ruoyi-admin/target/ruoyi-admin.jar`
  - 显式传入数据库、Redis、`ruoyi.profile` 参数启动
  - 测试结束后已关闭后端进程

- 登录接口：
  - `POST /login/test`
  - 结果：成功获取 token

- 查询系统默认参数：
  - `GET /ccdi/modelParam/listAll?projectId=0`
  - 结果：返回 `5` 个模型、`16` 条参数
  - 模型编码：`ABNORMAL_BEHAVIOR`、`LARGE_TRANSACTION`、`SUSPICIOUS_FOREIGN_EXCHANGE`、`SUSPICIOUS_GAMBLING`、`SUSPICIOUS_PART_TIME`

- 查询默认项目参数：
  - 使用临时默认项目 `project_id = 39`
  - `GET /ccdi/modelParam/listAll?projectId=39`
  - 结果：返回 `5` 个模型、`16` 条参数，与系统默认参数一致

- 验证默认项目首次保存：
  - `POST /ccdi/modelParam/saveAll`
  - 请求：仅更新 `LARGE_TRANSACTION/SINGLE_TRANSACTION_AMOUNT = 2222`
  - 结果：
    - 接口返回 `保存成功`
    - `ccdi_project.config_type` 从 `default` 变为 `custom`
    - `ccdi_model_param` 为该项目复制了 `16` 条参数
    - 唯一参数组合数为 `16`
    - `LARGE_TRANSACTION/SINGLE_TRANSACTION_AMOUNT` 已更新为 `2222`

- 清理：
  - 已删除临时测试项目 `project_id = 39` 及其参数数据

## 环境清理

- 已删除临时创建的测试项目数据，不保留额外脏数据
- 已关闭测试时启动的后端进程

## 2026-03-16 前端联调补充复核

- 本次前端联调复用了本地已运行的开发服务：
  - 前端：`http://localhost`
  - 后端：`http://localhost:62318`
- 实际联调页面：
  - `/modelParam`
  - `/ccdiProject/detail/36?tab=config`
  - `/ccdiProject/detail/32?tab=config`
- 联调观察与接口一致：
  - 全局页展示 `5` 个模型、`16` 个参数
  - 默认项目 `projectId=36` 读取系统默认参数全集
  - 历史 custom 项目 `projectId=32` 返回空模型集合，页面保持空状态，不补齐默认模型
- 联调过程中为验证保存链路曾触发真实保存，验证结束后已恢复现场：
  - `projectId=0 / LARGE_TRANSACTION / SINGLE_TRANSACTION_AMOUNT` 已恢复为 `1111`
  - `projectId=36` 已恢复为 `configType=default`
  - `projectId=36` 的项目级参数副本已删除
