Files
loan-pricing/openspec/changes/split-pricing-creation-interface/tasks.md
2026-02-02 15:25:38 +08:00

6.9 KiB
Raw Blame History

Tasks: 拆分个人和企业利率定价发起接口

数据库变更任务

0. 数据库表结构更新

  • 执行数据库迁移脚本,添加缺失字段:
    • 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) - 贷款期限(企业客户专用)
  • 更新 LoanPricingWorkflow Entity 类,添加对应的属性和字段映射注解
  • 验证数据库变更是否成功执行(需手动执行 SQL 脚本)

0.1 创建数据库迁移脚本

  • sql/ 目录下创建 add_missing_fields.sql 文件
  • 包含所有 ALTER TABLE 语句
  • 添加详细的注释说明每个字段的用途

后端实现任务

1. 创建 DTO 类

  • 创建 PersonalLoanPricingCreateDTO.java
    • 添加共同字段custIsn、custName、idType、idNum、guarType、applyAmt、collType、collThirdParty
    • 添加个人客户特有字段bizProof是否有经营佐证、loanLoop循环功能
    • 添加共同字段验证注解custIsn、guarType、applyAmt 为必填
    • 添加担保方式枚举验证
  • 创建 CorporateLoanPricingCreateDTO.java
    • 添加共同字段custIsn、custName、idType、idNum、guarType、applyAmt、collType、collThirdParty
    • 添加企业客户特有字段isAgriGuar省农担担保贷款、isGreenLoan绿色贷款、isTechEnt科技型企业、isTradeConstruction贸易和建筑业企业、loanTerm贷款期限
    • 添加共同字段验证注解custIsn、guarType、applyAmt 为必填
    • 添加担保方式枚举验证

2. 更新 Entity 类

  • LoanPricingWorkflow.java 中添加缺失的字段属性:
    • idNum - 证件号码
    • loanLoop - 循环功能
    • isTradeConstruction - 贸易和建筑业企业标识
    • isGreenLoan - 绿色贷款
    • isTechEnt - 科技型企业
    • loanTerm - 贷款期限
  • 为新字段添加 MyBatis Plus 字段映射注解(如果需要)
  • 验证 Entity 类与数据库表字段映射正确(需执行 SQL 后验证)

3. 创建转换器工具类

  • 创建 LoanPricingConverter.java
    • 实现 toEntity(PersonalLoanPricingCreateDTO) 方法
    • 实现 toEntity(CorporateLoanPricingCreateDTO) 方法
    • 确保自动设置 custType 为"个人"或"企业"
    • 正确映射所有字段,包括新增的 idNum、loanLoop、isTradeConstruction、isGreenLoan、isTechEnt、loanTerm

4. 修改 Service 层

  • ILoanPricingWorkflowService 接口中添加:
    • createPersonalLoanPricing(PersonalLoanPricingCreateDTO dto) 方法声明
    • createCorporateLoanPricing(CorporateLoanPricingCreateDTO dto) 方法声明
  • LoanPricingWorkflowServiceImpl 中实现新方法:
    • 实现 createPersonalLoanPricing 方法,调用转换器后复用现有逻辑
    • 实现 createCorporateLoanPricing 方法,调用转换器后复用现有逻辑

5. 修改 Controller 层

  • LoanPricingWorkflowController 中添加:
    • POST /loanPricing/workflow/create/personal 接口
    • POST /loanPricing/workflow/create/corporate 接口
  • 添加 Swagger 注解,明确标注接口用途和字段说明
  • 保持原有接口不变,不做 @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. 集成测试与测试脚本

  • 生成 HTTP 测试脚本 test_personal_create.http
    • 测试个人客户发起成功场景(完整必填字段)
    • 测试缺少必填字段的失败场景
    • 测试担保方式枚举验证失败场景
    • 使用 /login/test 接口获取测试 token
  • 生成 HTTP 测试脚本 test_corporate_create.http
    • 测试企业客户发起成功场景(完整必填字段)
    • 测试缺少必填字段的失败场景
    • 测试担保方式枚举验证失败场景
    • 测试企业特有字段isAgriGuar、isGreenLoan、isTechEnt、loanTerm
  • 生成 HTTP 测试脚本 test_backward_compatibility.http
    • 验证原有 POST /loanPricing/workflow/create 接口仍可正常工作
  • 生成 Shell 测试脚本 test_personal_create.sh
    • 将 HTTP 测试脚本转换为 Shell 脚本格式
    • 使用 curl 命令进行接口调用
    • 包含颜色输出和测试结果统计
  • 生成 Shell 测试脚本 test_corporate_create.sh
    • 将 HTTP 测试脚本转换为 Shell 脚本格式
    • 使用 curl 命令进行接口调用
    • 包含颜色输出和测试结果统计
  • 生成 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 文档正确显示所有接口的参数说明