# 后端功能测试报告

## 测试环境

- 后端地址: http://localhost:8080
- Swagger 地址: http://localhost:8080/swagger-ui/index.html
- 数据库: 116.62.17.81:3306/ccdi
- 测试时间: 2026-02-26 02:03:10 (UTC)

## 测试账号

- 用户名: admin
- 密码: admin123
-
Token: `eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImxvZ2luX3VzZXJfa2V5IjoiOTJjODUzYWUtNDZjNi00ZmQ3LWExMDEtYTA5NzRmMzlmOGNkIn0.AUiHT2p-wcETEN1rZtgP8oSdx1kHWpYUT-TZmfjECON6T-p0M94mvwN1ySJmC4yeozu4VCZm13cRvkqwzH7Teg`

---

## 测试结果

### 1. 登录接口测试

**接口:** `POST /login/test`

**请求:**

```bash
curl -X POST "http://localhost:8080/login/test" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'
```

**响应:**

```json
{
  "msg": "操作成功",
  "code": 200,
  "token": "eyJhbGciOiJIUzUxMiJ9..."
}
```

**状态:** ✅ 通过

---

### 2. 查询模型列表接口

**接口:** `GET /ccdi/modelParam/modelList`

**请求:**

```bash
curl -X GET "http://localhost:8080/ccdi/modelParam/modelList" \
  -H "Authorization: Bearer {token}"
```

**响应:**

```json
{
  "msg": "操作成功",
  "code": 200,
  "data": [
    {
      "modelCode": "LARGE_TRANSACTION",
      "modelName": "大额交易模型"
    },
    {
      "modelCode": "SUSPICIOUS_FOREIGN_EXCHANGE",
      "modelName": "可疑外汇交易模型"
    },
    {
      "modelCode": "SUSPICIOUS_PART_TIME",
      "modelName": "可疑兼职模型"
    }
  ]
}
```

**验证点:**

- ✅ 返回3个模型
- ✅ 包含预期的模型代码和名称
- ✅ 响应格式正确

**状态:** ✅ 通过

---

### 3. 查询模型参数列表接口

#### 3.1 大额交易模型参数查询

**接口:** `GET /ccdi/modelParam/list?modelCode=LARGE_TRANSACTION`

**响应数据摘要:**
| 参数代码 | 参数名称 | 参数值 | 单位 |
|---------|---------|--------|------|
| SINGLE_TRANSACTION_AMOUNT | 单笔交易额 | 50000 | 元 |
| CUMULATIVE_TRANSACTION_AMOUNT | 累计交易额 | 5000000 | 元 |
| LARGE_CASH_DEPOSIT | 大额存现 | 200000 | 元 |
| FREQUENT_CASH_DEPOSIT | 短时多次存现 | 100000 | 元/4小时 |
| FREQUENT_TRANSFER | 频繁转账 | 10 | 次/日 |
| TRANSFER_FREQUENCY | 转账频率 | 1000000 | 元/日 |

**验证点:**

- ✅ 返回6个参数
- ✅ 所有参数字段完整
- ✅ 排序正确(sortOrder: 1-6)

**状态:** ✅ 通过

#### 3.2 可疑外汇交易模型参数查询

**接口:** `GET /ccdi/modelParam/list?modelCode=SUSPICIOUS_FOREIGN_EXCHANGE`

**响应数据摘要:**
| 参数代码 | 参数名称 | 参数值 | 单位 |
|---------|---------|--------|------|
| SINGLE_PURCHASE_AMOUNT | 单笔购汇金额 | 50000 | 美元/笔 |
| SINGLE_SETTLEMENT_AMOUNT | 单笔结汇金额 | 50000 | 美元/笔 |
| CROSS_BORDER_REMITTANCE | 跨境汇款金额 | 200000 | 美元/笔 |
| MONTHLY_PURCHASE_TOTAL | 月度购汇总额 | 100000 | 美元/月 |
| MONTHLY_SETTLEMENT_TOTAL | 月度结汇总额 | 100000 | 美元/月 |
| FREQUENT_FOREX_TRADE | 频繁外汇交易 | 5 | 次/日 |

**验证点:**

- ✅ 返回6个参数
- ✅ 所有参数字段完整

**状态:** ✅ 通过

#### 3.3 可疑兼职模型参数查询

**接口:** `GET /ccdi/modelParam/list?modelCode=SUSPICIOUS_PART_TIME`

**响应数据摘要:**
| 参数代码 | 参数名称 | 参数值 | 单位 |
|---------|---------|--------|------|
| MONTHLY_FIXED_INCOME | 月度固定收入 | 5000 | 元/月 |
| FIXED_COUNTERPARTY_TRANSFER | 固定对手转入 | 15000 | 元/季 |
| SUSPICIOUS_TIME_TRANSACTION | 非工作时间交易 | 20 | 次/月 |

**验证点:**

- ✅ 返回3个参数
- ✅ 所有参数字段完整

**状态:** ✅ 通过

---

### 4. 保存参数配置接口

#### 4.1 正常保存测试

**接口:** `POST /ccdi/modelParam/save`

**请求:**

```json
{
  "projectId": 0,
  "modelCode": "LARGE_TRANSACTION",
  "modelName": "大额交易模型",
  "params": [
    {
      "paramCode": "SINGLE_TRANSACTION_AMOUNT",
      "paramName": "单笔交易额",
      "paramDesc": "单笔超过该金额视为大额交易",
      "paramValue": "60000",
      "paramUnit": "元",
      "sortOrder": 1
    }
  ]
}
```

**响应:**

```json
{
  "msg": "保存成功",
  "code": 200
}
```

**状态:** ✅ 通过

---

### 5. 数据库验证

#### 5.1 第一次更新验证

**SQL:**

```sql
SELECT param_value, update_by, update_time
FROM ccdi_model_param
WHERE model_code = 'LARGE_TRANSACTION'
  AND param_code = 'SINGLE_TRANSACTION_AMOUNT';
```

**结果:**
| param_value | update_by | update_time |
|-------------|-----------|-------------|
| 60000 | admin | 2026-02-25 18:03:10 |

**验证点:**

- ✅ param_value 已更新为 60000
- ✅ update_by 有值 (admin)
- ✅ update_time 有值

**状态:** ✅ 通过

---

### 6. 安全性验证

#### 6.1 尝试修改其他字段

**请求:**

```json
{
  "projectId": 0,
  "modelCode": "LARGE_TRANSACTION",
  "modelName": "大额交易模型(恶意修改)",
  "params": [
    {
      "paramCode": "SINGLE_TRANSACTION_AMOUNT",
      "paramName": "单笔交易额(恶意修改)",
      "paramDesc": "恶意修改描述",
      "paramValue": "70000",
      "paramUnit": "美元",
      "sortOrder": 99
    }
  ]
}
```

**数据库验证结果:**
| 字段 | 预期值 | 实际值 | 结果 |
|------|--------|--------|------|
| param_name | 单笔交易额 | 单笔交易额 | ✅ 未被修改 |
| param_desc | 单笔超过该金额视为大额交易 | 单笔超过该金额视为大额交易 | ✅ 未被修改 |
| param_value | 70000 | 70000 | ✅ 正确更新 |
| param_unit | 元 | 元 | ✅ 未被修改 |
| sort_order | 1 | 1 | ✅ 未被修改 |
| update_by | admin | admin | ✅ 有值 |
| update_time | 有值 | 2026-02-25 18:03:33 | ✅ 有值 |

**结论:**

- ✅ 只有 param_value 字段被更新
- ✅ 其他字段(param_name、param_desc、param_unit、sort_order)保持不变
- ✅ 安全性验证通过

**状态:** ✅ 通过

---

## 接口汇总

| 序号 | 接口           | 方法   | 路径                                                          | 状态   |
|----|--------------|------|-------------------------------------------------------------|------|
| 1  | 登录获取Token    | POST | /login/test                                                 | ✅ 通过 |
| 2  | 查询模型列表       | GET  | /ccdi/modelParam/modelList                                  | ✅ 通过 |
| 3  | 查询模型参数(大额交易) | GET  | /ccdi/modelParam/list?modelCode=LARGE_TRANSACTION           | ✅ 通过 |
| 4  | 查询模型参数(外汇交易) | GET  | /ccdi/modelParam/list?modelCode=SUSPICIOUS_FOREIGN_EXCHANGE | ✅ 通过 |
| 5  | 查询模型参数(兼职)   | GET  | /ccdi/modelParam/list?modelCode=SUSPICIOUS_PART_TIME        | ✅ 通过 |
| 6  | 保存参数配置       | POST | /ccdi/modelParam/save                                       | ✅ 通过 |

---

## 测试统计

- **通过:** 9 个测试
- **失败:** 0 个测试
- **总计:** 9 个测试

---

## 结论

✅ **所有测试通过**

后端功能完全符合预期:

1. 所有接口响应正常
2. 数据库更新正确
3. 审计字段自动填充
4. 安全性验证通过(只更新 param_value 字段)
5. 三种模型的参数查询均返回正确数据

---

## 附录: 测试命令汇总

```bash
# 1. 获取Token
curl -X POST "http://localhost:8080/login/test" \
  -H "Content-Type: application/json" \
  -d '{"username":"admin","password":"admin123"}'

# 2. 查询模型列表
curl -X GET "http://localhost:8080/ccdi/modelParam/modelList" \
  -H "Authorization: Bearer {token}"

# 3. 查询模型参数
curl -X GET "http://localhost:8080/ccdi/modelParam/list?modelCode=LARGE_TRANSACTION" \
  -H "Authorization: Bearer {token}"

# 4. 保存参数配置
curl -X POST "http://localhost:8080/ccdi/modelParam/save" \
  -H "Authorization: Bearer {token}" \
  -H "Content-Type: application/json" \
  -d '{
    "projectId": 0,
    "modelCode": "LARGE_TRANSACTION",
    "modelName": "大额交易模型",
    "params": [
      {
        "paramCode": "SINGLE_TRANSACTION_AMOUNT",
        "paramName": "单笔交易额",
        "paramDesc": "单笔超过该金额视为大额交易",
        "paramValue": "60000",
        "paramUnit": "元",
        "sortOrder": 1
      }
    ]
  }'
```

---

**测试人员:** Claude Code Agent
**报告生成时间:** 2026-02-26 02:05:00 (UTC)
