# 个人模型详情缺失展示字段补齐设计文档

## 1. 背景

个人模型接口返回字段有更新。根据 `doc/上虞对私利率测算_上传字段与展示字段.xlsx` 的 `展示指标` sheet，当前个人详情页仍缺少部分应展示字段，需要补齐页面展示并保证接口链路字段完整。

## 2. 已确认范围

- 仅处理个人客户详情页
- 仅补齐 `展示指标` sheet 中当前缺失的 6 个字段
- 不调整企业客户页面
- 不新增兼容逻辑、兜底逻辑或额外展示区域
- 保持现有页面结构和分组，按最短路径补齐

## 3. 缺失字段

经核对，当前页面缺少以下字段：

- `loanTerm` 借款期限
- `loanRateHistory` 历史利率
- `minRateProduct` 产品最低利率下限
- `smoothRange` 平滑幅度
- `finalCalculateRate` 最终测算利率
- `referenceRate` 参考利率

其中：

- `loanTerm` 属于流程明细字段，来自 `LoanPricingWorkflow`
- 其余 5 个字段属于个人模型输出字段，来自 `ModelRetailOutputFields`
- 其余 5 个字段同时要求 `model_retail_output_fields` 表具备对应列，否则新流程详情无法完整落库展示

## 4. 现状分析

### 4.1 前端现状

个人详情页由两个主要区域组成：

- `PersonalWorkflowDetail.vue` 负责流程详情与左侧关键信息
- `ModelOutputDisplay.vue` 负责个人模型输出分组展示

当前页面已覆盖大部分 `展示指标` 字段，但个人详情页“业务信息”中未展示 `loanTerm`，个人模型输出“测算结果”中也未展示 5 个新增利率相关字段。

### 4.2 后端现状

- `LoanPricingWorkflow` 已包含 `loanTerm`
- `ModelRetailOutputFields` 当前未包含 `loanRateHistory`、`minRateProduct`、`smoothRange`、`finalCalculateRate`、`referenceRate`

因此前端目前无法从个人模型输出对象中读取这 5 个字段。

同时，开发库 `model_retail_output_fields` 表当前也未包含这 5 个字段列。如果只补代码而不补表结构，新的个人流程在模型结果入库时将无法完整保存这些字段。

## 5. 方案对比

### 方案一：在现有分组内补齐字段

做法：

- 在个人详情页“业务信息”区域补 `loanTerm`
- 在个人模型输出“测算结果”区域补 5 个新增利率字段
- 后端仅补 `ModelRetailOutputFields` 缺失字段定义

优点：

- 改动最小
- 不影响现有页面结构
- 与现有字段分组最贴合

缺点：

- 需要同时修改前后端

### 方案二：单独新增“利率结果扩展”分组

做法：

- 新增一个专门的 Tab 或卡片展示 5 个新增利率字段

优点：

- 新增字段集中展示

缺点：

- 页面改动更大
- 用户认知路径变化
- 不符合本次最短路径要求

## 6. 设计结论

采用方案一。

实现方式如下：

- 后端在 `ModelRetailOutputFields` 中新增 5 个字段定义，保证接口对象具备完整返回结构
- 数据库为 `model_retail_output_fields` 新增 5 个对应列，保证模型输出可正常落库
- 前端在 `PersonalWorkflowDetail.vue` 的“业务信息”中补齐 `loanTerm`
- 前端在 `ModelOutputDisplay.vue` 的个人“测算结果”中补齐 `loanRateHistory`、`minRateProduct`、`smoothRange`、`finalCalculateRate`、`referenceRate`

## 7. 验证设计

本次按最小可执行验证：

- 后端新增一个实体字段断言测试，先验证缺失字段不存在并失败，再补齐后验证通过
- 前端新增一个源码断言脚本，先验证缺失展示未实现并失败，再补齐后验证通过
- 对开发库执行表结构迁移
- 创建新的个人流程并打开详情页，确认新增字段可在真实页面展示
- 最后执行前端生产构建，确认页面代码可正常打包

## 8. 非目标

- 不调整企业详情页
- 不修改模型计算逻辑
- 不重构页面布局
