# 个人模型详情缺失展示字段补齐实施记录

## 实施时间
- 2026-04-03

## 修改内容
- 补齐个人详情页“业务信息”中的 `借款期限`
- 补齐个人模型输出“测算结果”中的 5 个字段：
  - `历史利率`
  - `产品最低利率下限`
  - `平滑幅度`
  - `最终测算利率`
  - `参考利率`
- 在后端 `ModelRetailOutputFields` 中新增对应 5 个字段定义
- 在零售模型 mock 数据中补齐对应 5 个字段样例值
- 新增零售模型输出表结构迁移脚本，并同步更新建表基线 SQL
- 新增后端字段断言测试与前端源码断言脚本

## 修改文件
- `ruoyi-loan-pricing/src/main/java/com/ruoyi/loanpricing/domain/entity/ModelRetailOutputFields.java`
- `ruoyi-loan-pricing/src/main/resources/data/retail_output.json`
- `ruoyi-loan-pricing/src/test/java/com/ruoyi/loanpricing/domain/entity/ModelRetailOutputFieldsTest.java`
- `ruoyi-ui/src/views/loanPricing/workflow/components/PersonalWorkflowDetail.vue`
- `ruoyi-ui/src/views/loanPricing/workflow/components/ModelOutputDisplay.vue`
- `ruoyi-ui/tests/retail-display-fields.test.js`
- `ruoyi-ui/package.json`
- `sql/add_model_retail_output_rate_fields_20260403.sql`
- `sql/model_retail.sql`
- `sql/loan_pricing_schema_20260328.sql`
- `sql/loan_pricing_prod_init_20260331.sql`
- `doc/2026-04-03-retail-display-fields-design.md`
- `doc/2026-04-03-retail-display-fields-backend-plan.md`
- `doc/2026-04-03-retail-display-fields-frontend-plan.md`
- `doc/implementation-report-2026-04-03-retail-display-fields.md`

## 验证方式
1. 新增后端测试，断言 `ModelRetailOutputFields` 包含 5 个新增字段，先失败后通过
2. 新增前端源码断言脚本，断言个人详情页与模型输出页已补齐字段，先失败后通过
3. 执行前端生产构建，确认页面代码可正常打包
4. 检查开发库 `model_retail_output_fields` 表结构，确认最初缺少 5 个新列
5. 执行 `sql/add_model_retail_output_rate_fields_20260403.sql` 到开发库，并再次确认 5 个新列存在
6. 重新编译并重启后端，确保新的实体字段已进入运行中的 SQL 映射
7. 创建新的个人流程 `20260403100514909`，调用详情接口确认返回以下真实值：
   - `loanRateHistory = 6.40`
   - `minRateProduct = 5.50`
   - `smoothRange = -0.10`
   - `finalCalculateRate = 6.05`
   - `referenceRate = 5.95`
8. 启动前端开发服务并使用浏览器自动化打开详情页，确认：
   - 页面出现 `借款期限`
   - 切换到“测算结果”页签后，5 个新增字段及对应值均可见
9. 验证结束后，停止本次启动的前后端进程

## 验证结果
- `mvn -pl ruoyi-loan-pricing -Dtest=ModelRetailOutputFieldsTest test` 首次失败，补齐后通过
- `npm --prefix ruoyi-ui run test:retail-display-fields` 首次失败，补齐后通过
- `npm --prefix ruoyi-ui run build:prod` 成功，输出包含 `Build complete.`
- 已确认开发库 `model_retail_output_fields` 初始缺少：
  - `loan_rate_history`
  - `min_rate_product`
  - `smooth_range`
  - `final_calculate_rate`
  - `reference_rate`
- 已执行迁移脚本并确认以上 5 列存在
- 已确认旧后端进程因未加载最新依赖导致 SQL 仍缺新列，重编译并重启后问题消失
- 已创建个人流程 `20260403100514909` 并通过详情接口拿到 5 个新增字段的真实值
- 已通过浏览器自动化确认个人详情页展示位与“测算结果”页签展示均正确
- 本次验证期间启动的前后端进程均已停止

## 说明
- `loanTerm` 本次仅补齐详情页展示位；个人创建表单当前无该字段录入入口，不属于本次“模型返回字段更新”范围
- 为保证新字段在新环境中也可正常落库，本次同步更新了零售模型输出表的建表基线 SQL
