### ============================================================
### 个人客户利率定价流程接口测试脚本
### 用途：测试个人客户发起接口的各项场景
### ============================================================

### ============================================================
### 1. 获取测试 Token
### ============================================================
POST http://localhost:63310/login/test
Content-Type: application/json

{
  "username": "admin",
  "password": "admin123"
}

> {%
    client.test("Request executed successfully", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 200, "Response code is 200");
        client.global.set("token", response.body.data.token);
    });
%}

### ============================================================
### 2. 个人客户发起 - 成功场景（完整必填字段）
### ============================================================
POST http://localhost:63310/loanPricing/workflow/create/personal
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "custIsn": "TEST001",
  "custName": "张三",
  "idType": "身份证",
  "idNum": "110101199001011234",
  "guarType": "信用",
  "applyAmt": "500000",
  "bizProof": "true",
  "loanLoop": "false"
}

> {%
    client.test("Personal loan creation successful", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 200, "Response code is 200");
        client.assert(response.body.data.custType === "个人", "Customer type is 个人");
        client.assert(response.body.data.serialNum !== null, "Serial number is generated");
    });
%}

### ============================================================
### 3. 个人客户发起 - 缺少必填字段 custIsn
### ============================================================
POST http://localhost:63310/loanPricing/workflow/create/personal
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "custName": "张三",
  "idType": "身份证",
  "idNum": "110101199001011234",
  "guarType": "信用",
  "applyAmt": "500000"
}

> {%
    client.test("Missing custIsn validation works", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 500, "Response code indicates validation error");
    });
%}

### ============================================================
### 4. 个人客户发起 - 缺少必填字段 guarType
### ============================================================
POST http://localhost:63310/loanPricing/workflow/create/personal
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "custIsn": "TEST002",
  "custName": "李四",
  "idType": "身份证",
  "idNum": "110101199001011235",
  "applyAmt": "300000"
}

> {%
    client.test("Missing guarType validation works", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 500, "Response code indicates validation error");
    });
%}

### ============================================================
### 5. 个人客户发起 - 缺少必填字段 applyAmt
### ============================================================
POST http://localhost:63310/loanPricing/workflow/create/personal
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "custIsn": "TEST003",
  "custName": "王五",
  "guarType": "保证",
  "idType": "身份证",
  "idNum": "110101199001011236"
}

> {%
    client.test("Missing applyAmt validation works", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 500, "Response code indicates validation error");
    });
%}

### ============================================================
### 6. 个人客户发起 - 担保方式枚举验证失败
### ============================================================
POST http://localhost:63310/loanPricing/workflow/create/personal
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "custIsn": "TEST004",
  "custName": "赵六",
  "idType": "身份证",
  "idNum": "110101199001011237",
  "guarType": "无效值",
  "applyAmt": "200000"
}

> {%
    client.test("Invalid guarType validation works", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 500, "Response code indicates validation error");
    });
%}

### ============================================================
### 7. 个人客户发起 - 包含抵质押信息
### ============================================================
POST http://localhost:63310/loanPricing/workflow/create/personal
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "custIsn": "TEST005",
  "custName": "孙七",
  "idType": "身份证",
  "idNum": "110101199001011238",
  "guarType": "抵押",
  "applyAmt": "800000",
  "bizProof": "true",
  "loanLoop": "true",
  "collType": "一类",
  "collThirdParty": "false"
}

> {%
    client.test("Personal loan with collateral info", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 200, "Response code is 200");
        client.assert(response.body.data.collType === "一类", "Collateral type is correct");
        client.assert(response.body.data.loanLoop === "true", "Loan loop is set");
    });
%}

### ============================================================
### 8. 个人客户发起 - 所有字段必填（质押贷款场景）
### ============================================================
POST http://localhost:63310/loanPricing/workflow/create/personal
Authorization: Bearer {{token}}
Content-Type: application/json

{
  "custIsn": "TEST006",
  "custName": "周八",
  "idType": "身份证",
  "idNum": "110101199001011239",
  "guarType": "质押",
  "applyAmt": "100000",
  "bizProof": "false",
  "loanLoop": "false",
  "collType": "二类",
  "collThirdParty": "true"
}

> {%
    client.test("Personal loan with all required fields", function () {
        client.assert(response.status === 200, "Response status is 200");
        client.assert(response.body.code === 200, "Response code is 200");
        client.assert(response.body.data.collThirdParty === "true", "Collateral third party is set");
    });
%}
