客户类型字段更新
This commit is contained in:
149
openspec/changes/split-pricing-creation-interface/tasks.md
Normal file
149
openspec/changes/split-pricing-creation-interface/tasks.md
Normal file
@@ -0,0 +1,149 @@
|
||||
# Tasks: 拆分个人和企业利率定价发起接口
|
||||
|
||||
## 数据库变更任务
|
||||
|
||||
### 0. 数据库表结构更新
|
||||
|
||||
- [x] 执行数据库迁移脚本,添加缺失字段:
|
||||
- `id_num` varchar(100) - 证件号码(个人和企业都需要)
|
||||
- `loan_loop` varchar(10) - 循环功能(个人客户专用)
|
||||
- `is_trade_construction` varchar(10) - 贸易和建筑业企业标识(企业客户专用)
|
||||
- `is_green_loan` varchar(10) - 绿色贷款(企业客户专用)
|
||||
- `is_tech_ent` varchar(10) - 科技型企业(企业客户专用)
|
||||
- `loan_term` varchar(50) - 贷款期限(企业客户专用)
|
||||
- [x] 更新 `LoanPricingWorkflow` Entity 类,添加对应的属性和字段映射注解
|
||||
- [ ] 验证数据库变更是否成功执行(需手动执行 SQL 脚本)
|
||||
|
||||
### 0.1 创建数据库迁移脚本
|
||||
|
||||
- [x] 在 `sql/` 目录下创建 `add_missing_fields.sql` 文件
|
||||
- [x] 包含所有 ALTER TABLE 语句
|
||||
- [x] 添加详细的注释说明每个字段的用途
|
||||
|
||||
## 后端实现任务
|
||||
|
||||
### 1. 创建 DTO 类
|
||||
|
||||
- [x] 创建 `PersonalLoanPricingCreateDTO.java`
|
||||
- 添加共同字段:custIsn、custName、idType、idNum、guarType、applyAmt、collType、collThirdParty
|
||||
- 添加个人客户特有字段:bizProof(是否有经营佐证)、loanLoop(循环功能)
|
||||
- 添加共同字段验证注解:custIsn、guarType、applyAmt 为必填
|
||||
- 添加担保方式枚举验证
|
||||
- [x] 创建 `CorporateLoanPricingCreateDTO.java`
|
||||
- 添加共同字段:custIsn、custName、idType、idNum、guarType、applyAmt、collType、collThirdParty
|
||||
- 添加企业客户特有字段:isAgriGuar(省农担担保贷款)、isGreenLoan(绿色贷款)、isTechEnt(科技型企业)、isTradeConstruction(贸易和建筑业企业)、loanTerm(贷款期限)
|
||||
- 添加共同字段验证注解:custIsn、guarType、applyAmt 为必填
|
||||
- 添加担保方式枚举验证
|
||||
|
||||
### 2. 更新 Entity 类
|
||||
|
||||
- [x] 在 `LoanPricingWorkflow.java` 中添加缺失的字段属性:
|
||||
- `idNum` - 证件号码
|
||||
- `loanLoop` - 循环功能
|
||||
- `isTradeConstruction` - 贸易和建筑业企业标识
|
||||
- `isGreenLoan` - 绿色贷款
|
||||
- `isTechEnt` - 科技型企业
|
||||
- `loanTerm` - 贷款期限
|
||||
- [x] 为新字段添加 MyBatis Plus 字段映射注解(如果需要)
|
||||
- [ ] 验证 Entity 类与数据库表字段映射正确(需执行 SQL 后验证)
|
||||
|
||||
### 3. 创建转换器工具类
|
||||
|
||||
- [x] 创建 `LoanPricingConverter.java`
|
||||
- 实现 `toEntity(PersonalLoanPricingCreateDTO)` 方法
|
||||
- 实现 `toEntity(CorporateLoanPricingCreateDTO)` 方法
|
||||
- 确保自动设置 custType 为"个人"或"企业"
|
||||
- 正确映射所有字段,包括新增的 idNum、loanLoop、isTradeConstruction、isGreenLoan、isTechEnt、loanTerm
|
||||
|
||||
### 4. 修改 Service 层
|
||||
|
||||
- [x] 在 `ILoanPricingWorkflowService` 接口中添加:
|
||||
- `createPersonalLoanPricing(PersonalLoanPricingCreateDTO dto)` 方法声明
|
||||
- `createCorporateLoanPricing(CorporateLoanPricingCreateDTO dto)` 方法声明
|
||||
- [x] 在 `LoanPricingWorkflowServiceImpl` 中实现新方法:
|
||||
- 实现 `createPersonalLoanPricing` 方法,调用转换器后复用现有逻辑
|
||||
- 实现 `createCorporateLoanPricing` 方法,调用转换器后复用现有逻辑
|
||||
|
||||
### 5. 修改 Controller 层
|
||||
|
||||
- [x] 在 `LoanPricingWorkflowController` 中添加:
|
||||
- `POST /loanPricing/workflow/create/personal` 接口
|
||||
- `POST /loanPricing/workflow/create/corporate` 接口
|
||||
- [x] 添加 Swagger 注解,明确标注接口用途和字段说明
|
||||
- [x] 保持原有接口不变,不做 @Deprecated 标记
|
||||
|
||||
### 6. 单元测试
|
||||
|
||||
- [ ] 创建 `PersonalLoanPricingCreateDTOTest.java` 测试类
|
||||
- 测试必填字段验证(custIsn、guarType、applyAmt)
|
||||
- 测试担保方式枚举验证(信用/保证/抵押/质押)
|
||||
- 测试个人特有字段(bizProof、loanLoop)
|
||||
- [ ] 创建 `CorporateLoanPricingCreateDTOTest.java` 测试类
|
||||
- 测试必填字段验证(custIsn、guarType、applyAmt)
|
||||
- 测试担保方式枚举验证(信用/保证/抵押/质押)
|
||||
- 测试企业特有字段(isAgriGuar、isGreenLoan、isTechEnt、isTradeConstruction、loanTerm)
|
||||
- [ ] 创建 `LoanPricingConverterTest.java` 测试类
|
||||
- 测试个人 DTO 转 Entity 映射完整性
|
||||
- 测试企业 DTO 转 Entity 映射完整性
|
||||
- 验证 custType 自动设置正确
|
||||
|
||||
### 7. 集成测试与测试脚本
|
||||
|
||||
- [x] 生成 HTTP 测试脚本 `test_personal_create.http`
|
||||
- 测试个人客户发起成功场景(完整必填字段)
|
||||
- 测试缺少必填字段的失败场景
|
||||
- 测试担保方式枚举验证失败场景
|
||||
- 使用 `/login/test` 接口获取测试 token
|
||||
- [x] 生成 HTTP 测试脚本 `test_corporate_create.http`
|
||||
- 测试企业客户发起成功场景(完整必填字段)
|
||||
- 测试缺少必填字段的失败场景
|
||||
- 测试担保方式枚举验证失败场景
|
||||
- 测试企业特有字段(isAgriGuar、isGreenLoan、isTechEnt、loanTerm)
|
||||
- [x] 生成 HTTP 测试脚本 `test_backward_compatibility.http`
|
||||
- 验证原有 `POST /loanPricing/workflow/create` 接口仍可正常工作
|
||||
- [x] 生成 Shell 测试脚本 `test_personal_create.sh`
|
||||
- 将 HTTP 测试脚本转换为 Shell 脚本格式
|
||||
- 使用 curl 命令进行接口调用
|
||||
- 包含颜色输出和测试结果统计
|
||||
- [x] 生成 Shell 测试脚本 `test_corporate_create.sh`
|
||||
- 将 HTTP 测试脚本转换为 Shell 脚本格式
|
||||
- 使用 curl 命令进行接口调用
|
||||
- 包含颜色输出和测试结果统计
|
||||
- [x] 生成 Shell 测试脚本 `test_backward_compatibility.sh`
|
||||
- 将 HTTP 测试脚本转换为 Shell 脚本格式
|
||||
- 使用 curl 命令进行接口调用
|
||||
- 包含颜色输出和测试结果统计
|
||||
- [ ] 执行所有测试脚本并验证结果
|
||||
- [ ] 生成测试报告到 `doc/` 目录
|
||||
|
||||
## 文档和部署
|
||||
|
||||
### 8. API 文档
|
||||
|
||||
- [ ] 更新 Swagger 文档,添加两个新接口的完整说明
|
||||
- [ ] 生成并导出 API 文档到项目 doc 目录
|
||||
|
||||
### 9. 代码审查和合并
|
||||
|
||||
- [ ] 提交 Pull Request
|
||||
- [ ] 通过代码审查
|
||||
- [ ] 合并到主分支
|
||||
|
||||
## 依赖关系
|
||||
|
||||
- **数据库变更(任务0)必须最先执行**:所有后端开发依赖于数据库字段完成
|
||||
- 任务 1-5 可以并行开发(依赖任务0完成)
|
||||
- 任务 6-7 依赖任务 1-5 完成
|
||||
- 任务 8-9 依赖所有前序任务完成
|
||||
|
||||
> **注:本次变更仅涉及后端,前端暂不修改**
|
||||
|
||||
## 验证检查点
|
||||
|
||||
1. **数据库字段完整性**:确保所有新增字段(idNum、loanLoop、isTradeConstruction、isGreenLoan、isTechEnt、loanTerm)已添加到数据库表
|
||||
2. **Entity 类映射正确性**:确保 Entity 类字段与数据库表字段一一对应
|
||||
3. **DTO 验证**:确保所有必填字段有 `@NotBlank` 注解,枚举字段有正确的验证
|
||||
4. **转换器正确性**:确保 DTO 到 Entity 的转换不丢失字段,包括新增字段
|
||||
5. **API 路由**:确保新接口路径正确且可访问
|
||||
6. **向后兼容**:确保原有接口继续工作
|
||||
7. **API 文档**:确保 Swagger 文档正确显示所有接口的参数说明
|
||||
Reference in New Issue
Block a user