3.8 KiB
3.8 KiB
Proposal: 拆分个人和企业利率定价发起接口
概述
将现有的统一利率定价发起接口 (POST /loanPricing/workflow/create) 拆分为两个独立的接口:
- 个人客户发起接口 (
POST /loanPricing/workflow/create/personal) - 企业客户发起接口 (
POST /loanPricing/workflow/create/corporate)
背景
当前系统中,LoanPricingWorkflow 实体包含了个人和企业客户的所有字段。当发起流程时,根据客户类型(custType)的不同,需要填写的字段存在差异:
- 个人客户:需要填写个人特有字段(如是否有经营佐证、循环功能等)
- 企业客户:需要填写企业特有字段(如贸易和建筑业企业标识、省农担担保贷款、绿色贷款、科技型企业、贷款期限等)
将接口拆分可以带来以下好处:
- 接口契约更清晰:每个接口只包含对应客户类型的字段
- 验证更精确:可以在 DTO 层面进行字段验证
- 文档更友好:API 文档可以分别展示个人和企业的字段
- 维护性更好:字段变更不会影响另一类型的客户
影响范围
后端变更
- 创建新的 DTO 类:
PersonalLoanPricingCreateDTO和CorporateLoanPricingCreateDTO - 在
LoanPricingWorkflowController中添加两个新接口 - 修改
ILoanPricingWorkflowService接口,添加两个新的创建方法 - 实现
LoanPricingWorkflowServiceImpl中的新方法 - 保留原有接口以保持向后兼容(可选,建议标记为 Deprecated)
前端变更
注:本次变更仅涉及后端,前端暂不修改
数据库变更
需要向 loan_pricing_workflow 表添加以下字段:
| 字段名 | 类型 | 说明 | 适用客户 |
|---|---|---|---|
| id_num | varchar(100) | 证件号码 | 个人、企业 |
| loan_loop | varchar(10) | 循环功能 | 个人 |
| is_trade_construction | varchar(10) | 贸易和建筑业企业标识(抵质押类上调20BP) | 企业 |
| is_green_loan | varchar(10) | 绿色贷款(最多下降5BP) | 企业 |
| is_tech_ent | varchar(10) | 科技型企业(最多下降5BP) | 企业 |
| loan_term | varchar(50) | 贷款期限 | 企业 |
迁移脚本位置: sql/add_missing_fields.sql
同时需要更新 LoanPricingWorkflow Entity 类,添加对应的属性和字段映射注解。
设计方案
详见 design.md
风险和考虑
-
向后兼容性:原有接口
POST /loanPricing/workflow/create继续保留- 原有接口不做标记为 Deprecated 的处理
- 新旧接口共存,供前端自由选择使用
-
数据迁移:需要执行数据库迁移脚本添加新字段,但不涉及现有数据的迁移
-
测试覆盖:需要为新接口编写测试用例
依赖关系
- 数据库迁移必须最先执行:所有后端开发依赖于新字段添加完成
- 依赖现有的
LoanPricingWorkflow实体 - 依赖现有的
ILoanPricingWorkflowService服务层
验收标准
- 数据库变更:所有新字段成功添加到数据库表,且可以正确存储和检索数据
- Entity 类更新:
LoanPricingWorkflow实体类包含所有新增字段的属性和映射 - 个人客户接口:个人客户发起接口只接受个人相关的字段
- 企业客户接口:企业客户发起接口只接受企业相关的字段
- 接口功能:两个接口都能成功创建利率定价流程记录,包括新增字段的保存
- 字段验证:字段验证正确生效
- API 文档:API 文档正确显示两个接口的差异