diff --git a/doc/2026-04-09-shangyu-retail-input-params-backend-plan.md b/doc/2026-04-09-shangyu-retail-input-params-backend-plan.md index 7eff2c5..7a69e12 100644 --- a/doc/2026-04-09-shangyu-retail-input-params-backend-plan.md +++ b/doc/2026-04-09-shangyu-retail-input-params-backend-plan.md @@ -10,6 +10,34 @@ --- +## 后端模型输入参数确认 + +个人链路最终需要发给模型的 16 个参数如下: + +- `serialNum`:服务层自动生成 +- `orgCode`:服务层默认值,当前代码为 `892000` +- `runType`:服务层默认值 `1` +- `custIsn`:页面输入透传 +- `custType`:个人链路固定 `个人` +- `custName`:页面输入,调用模型前解密后透传 +- `idType`:页面输入透传 +- `idNum`:页面输入,调用模型前解密后透传 +- `guarType`:页面输入透传 +- `applyAmt`:页面输入透传 +- `loanPurpose`:页面输入透传 +- `loanTerm`:页面输入透传 +- `bizProof`:页面开关,调用模型前转 `0/1` +- `loanLoop`:页面开关,调用模型前转 `0/1` +- `collThirdParty`:页面开关,调用模型前转 `0/1` +- `collType`:页面下拉透传 + +调用方式确认: + +- 参数载体:`ModelInvokeDTO` +- 组装方式:`BeanUtils.copyProperties(loanPricingWorkflow, modelInvokeDTO)` +- 请求格式:`application/x-www-form-urlencoded` +- 发送入口:`ModelService#invokeModel` + ## 文件结构 - Modify: [ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/PersonalLoanPricingCreateDTO.java](/Users/wkc/Desktop/loan-pricing/loan-pricing/ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/dto/PersonalLoanPricingCreateDTO.java) @@ -57,13 +85,21 @@ Expected: FAIL,提示字段不存在或转换逻辑未实现 // 仅断言 PersonalLoanPricingCreateDTO / LoanPricingConverter / ModelInvokeDTO / LoanPricingModelService ``` -- [ ] **Step 4: 再次运行测试确认失败原因稳定** +- [ ] **Step 4: 增加最终模型请求参数断言** + +```java +// 断言 requestBody 包含 serialNum、orgCode、runType、custIsn、custType、custName、 +// idType、idNum、guarType、applyAmt、loanPurpose、loanTerm、bizProof、 +// loanLoop、collThirdParty、collType +``` + +- [ ] **Step 5: 再次运行测试确认失败原因稳定** Run: `mvn -pl ruoyi-loan-pricing -Dtest=LoanPricingModelServicePersonalParamsTest test` Expected: FAIL,失败点与新增字段缺失一致 -- [ ] **Step 5: 提交** +- [ ] **Step 6: 提交** ```bash git add ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/service/LoanPricingModelServicePersonalParamsTest.java @@ -176,7 +212,8 @@ Run: 调用 `POST /loanPricing/workflow/create/personal` Expected: - 返回创建成功 - 请求体包含 `loanPurpose`、`loanTerm` -- 模型请求中带出 `loanLoop` +- 模型请求中完整带出 16 个参数 +- 其中 `bizProof`、`loanLoop`、`collThirdParty` 为 `0/1` - [ ] **Step 3: 验证必填缺失场景** diff --git a/doc/2026-04-09-shangyu-retail-input-params-design.md b/doc/2026-04-09-shangyu-retail-input-params-design.md index 788b827..c92ec67 100644 --- a/doc/2026-04-09-shangyu-retail-input-params-design.md +++ b/doc/2026-04-09-shangyu-retail-input-params-design.md @@ -218,6 +218,63 @@ 5. `LoanPricingModelService` 在调用模型前,将个人链路中的开关字段转换为 `0/1` 6. `ModelService` 继续以 `application/x-www-form-urlencoded` 方式调用模型接口 +### 6.3.1 后端模型调用输入参数确认 + +后端最终发给模型的个人入参,按 Excel 要求确认为以下 16 个字段: + +- `serialNum` + - 来源:`LoanPricingWorkflowServiceImpl#createLoanPricing` 自动生成 +- `orgCode` + - 来源:`LoanPricingWorkflowServiceImpl#createLoanPricing` 默认赋值 + - 当前代码值:`892000` +- `runType` + - 来源:`LoanPricingWorkflowServiceImpl#createLoanPricing` + - 当前值:`1` +- `custIsn` + - 来源:页面输入,经个人创建 DTO 和转换器透传 +- `custType` + - 来源:`LoanPricingConverter#toEntity(PersonalLoanPricingCreateDTO)` + - 当前值:固定 `个人` +- `custName` + - 来源:页面输入 + - 说明:入库时加密,调用模型前解密 +- `idType` + - 来源:页面输入 +- `idNum` + - 来源:页面输入 + - 说明:入库时加密,调用模型前解密 +- `guarType` + - 来源:页面输入 +- `applyAmt` + - 来源:页面输入 +- `loanPurpose` + - 来源:页面输入 + - 当前状态:需补齐到个人 DTO、流程实体映射和模型 DTO +- `loanTerm` + - 来源:页面输入 + - 当前状态:需补齐到个人 DTO、流程实体映射和模型 DTO +- `bizProof` + - 来源:页面开关 + - 模型值:调用模型前统一转换为 `0/1` +- `loanLoop` + - 来源:页面开关 + - 当前状态:需补齐到模型 DTO + - 模型值:调用模型前统一转换为 `0/1` +- `collThirdParty` + - 来源:页面开关 + - 模型值:调用模型前统一转换为 `0/1` +- `collType` + - 来源:页面下拉 + - 模型值:按 `一类/二类/三类` 直接透传 + +后端调用方式确认如下: + +- 参数载体:`ModelInvokeDTO` +- 参数来源:`BeanUtils.copyProperties(loanPricingWorkflow, modelInvokeDTO)` +- 请求构造:`ModelService#entityToMap` +- 请求格式:`application/x-www-form-urlencoded` +- 发送入口:`ModelService#invokeModel` + ### 6.4 展示闭环 为保证输入项可在详情页回看,个人详情页同步补齐: @@ -240,6 +297,7 @@ - 前端源码断言个人新增弹窗已出现 `loanPurpose`、`loanTerm` - 前端源码断言 `loanTerm` 为固定下拉、`collType` 选项为 `一类/二类/三类` - 后端测试或源码断言 `PersonalLoanPricingCreateDTO`、`LoanPricingConverter`、`ModelInvokeDTO` 已补齐字段 +- 后端测试或日志断言调用模型前最终请求参数完整包含以上 16 个字段 - 重启后端后,覆盖以下接口验证: - 正常场景:完整参数创建成功 - 必填缺失场景:缺少 `loanPurpose` 或 `loanTerm` 被拦截 diff --git a/doc/implementation-report-2026-04-09-shangyu-retail-input-params-plans.md b/doc/implementation-report-2026-04-09-shangyu-retail-input-params-plans.md index 7eecfa2..4fcb0cf 100644 --- a/doc/implementation-report-2026-04-09-shangyu-retail-input-params-plans.md +++ b/doc/implementation-report-2026-04-09-shangyu-retail-input-params-plans.md @@ -11,6 +11,7 @@ - 明确 `loanTerm` 使用固定年限下拉,选项按 Excel 组织 - 明确系统字段 `serialNum`、`orgCode`、`runType`、`custType` 继续自动带值 - 明确个人开关字段在模型调用层转换为 `0/1` +- 补充确认后端最终发给模型的 16 个输入参数、来源、请求格式与验证口径 ## 修改文件 - `doc/2026-04-09-shangyu-retail-input-params-design.md`