# 【后端核实回执·管理后台】保单按钮两处收敛 + 车辆导入弹窗映射——前端 SYNC-20260612-10 全部确认,无接口变更 > 服务:hl-order-service-v3(8086/8186) + hl-fleet-service(8087) | 对应前端:SYNC-20260612-10(commit f642b064) | 后端无代码改动,本文是核实回执(2026-06-12) > 背景:前端回报「下载/重传保单」真实落点在保险订单台账页(非司机抽屉),已两处按 source 收敛;并修车辆导入结果弹窗字段映射;质疑 blob 归因。后端逐项核实如下。 ## ⚠️ 关键说明 1. **前端两处收敛方案后端全部确认正确,双方版本在测试服已对齐**,前端无需再动。 2. 此前 changelog 12_3765 写按钮在「详情抽屉」系沿用最初反馈原话,实际落点在台账页——契约指引(按 `source` 收敛)两处通用,结论不变。 3. blob/InvalidStateError 议题双方归零关闭(见 §3)。 ## 1. 保单按钮收敛——后端契约逐项核实(均实测) | 前端收敛点 | 后端支撑 | 实测结论 | |---|---|---| | 台账页 MANUAL 行隐藏「下载/重传保单」 | `GET /v3/admin/insurance/list` 列表行 VO 自带 `source`(BAOYOU/MANUAL) | 测试服实测每行 source 非 null;直调下载/重传返 **540226** 兜底 | | 台账页 MANUAL 行隐藏「退保」(上批已收敛) | 管理端退保接口拦 MANUAL | 返 **540224**「手工录入的年保单不支持退保」 | | 司机抽屉 MANUAL 行隐藏「退保」+ 加「手工录入」标识 | `GET /admin/fleet/drivers/{driverId}/insurance/policies` 每行 `source` 字段即为此用 | 与 540224 守卫严丝合缝 | 台账列表实测示例(`GET /v3/admin/insurance/list?page=1&pageSize=10`): ```json { "insuranceOrderId": "2065360048397193217", "source": "MANUAL", // 每行均返,非 null "bizType": "DRIVER", "status": "CANCELLED" // 该批 CANCELLED 是后端 E2E 清场数据,属正常 } ``` 注意:**判断按钮显隐请只认 `source`,勿用 `bizType` 当代理**——司机行程险走保游网出单时 `bizType=DRIVER` 但 `source=BAOYOU`,有电子保单,下载/重传按钮应保留。 ## 2. 车辆导入结果弹窗映射——前端重写目标字段与后端 VO 完全一致 后端 `VehicleImportRespVO` 真实字段(核实于当前 dev-v3): | 字段 | 类型 | 含义 | |---|---|---| | `totalRows` | int | 数据总行数 | | `insertedCount` | int | 新增成功数 | | `updatedCount` | int | 更新成功数 | | `errorCount` | int | 失败行数 | | `errors` | array | 失败明细(行号+原因) | | `warnedCount` | int | 警告行数 | | `warnings` | array | 警告明细 | 前端旧映射(failed/errorRows/success/total)确实全部不存在于后端 VO,「导入成功 0 条」怪象由此而来,重写后正确。司机导入 `DriverImportRespVO` 字段结构同族,如需对照可看测试服 doc.html。 ## 3. blob/InvalidStateError 议题关闭 - 前端全仓核查无 `responseType:'blob'` 配置;后端侧该归因同样无代码对应物——此前那条「前端Bug_车辆批量导入responseType-blob」changelog 的归因有误,以本回执为准。 - 真实病因即 §2 的弹窗字段映射 bug,已修。 - 若真机后续仍复现该 console 报错,排查方向是测试服部署的前端构建来源(是否旧构建残留),与双方当前代码无关。