---
schema: "hl-changelog/v2"
ticket: "5549"
title: "司机保险切换到可售产品 + 不可售产品友好报错"
consumer: "admin"
change_type: "修改接口"
author: "wx(GIT)"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "implemented"
frontend_owner: "pi-main-session"
frontend_ref: "hl-admin@085f4d7b58c3d61414df8d0461ab51e9eb61ea47"
target_release: "v2.1"
verified_at: "2026-08-05"
status_note: "管理后台现有投保弹窗已完全消费 driver-plan-options 动态计划，540034 由全局拦截器展示后端友好文案且页面不重复 toast；补充回归测试锁定计划 ID 字符串透传、动态选项和错误分支。后端完成：PR #5553/#5556/#5557 合并 dev-v3 并部署 TEST；网关实测畅心游真实投保成功（保单 11209006600507256500）、不可售产品 540034 友好报错、plan-options 过滤真实生效。"
updated_at: "2026-08-05"
base: "dev-v3"
---

# 司机保险切换到可售产品 + 不可售产品友好报错（#5549）

> **服务**: hl-order-service-v3
> **PR**: #5553 / #5556 / #5557
> **Issue**: #5549（P1）
> **联系人**: @wx
> **日期**: 2026-08-05
> **影响范围**: 管理后台-司机档案-保险投保；fleet 司机保险页（Feign 消费 driver-purchase / driver-plan-options）

---

## 背景

畅心游产品费率码旧值（BY919212138521）失效导致投保必 404（#5545 排查）；保游 GetProductList 下架产品本地不更新、司机端仍可选。需求：司机保险切到可售产品（未来星等）、不可售产品报错友好。

## 变更接口

| 方法 | 路径 | 来源 |
|---|---|---|
| POST | /v3/internal/insurance/driver-purchase | fleet 司机保险投保（Feign） |
| GET | /v3/internal/insurance/driver-plan-options | fleet 司机保险计划下拉（Feign） |

## 变更说明

1. **同步链路**（保险产品同步 /v3/admin/insurance/sync-products）：以保游 GetProductList 为权威可售列表，列表外的存量启用产品标记 INACTIVE（下架自动失效）
2. **投保链路** driver-purchase：
   - 本地拦截：产品 INACTIVE（下架标记）→ 新错误码 **540034**
   - 保游 404（费率码失效）→ 翻译 **540034**
   - 保游业务拒绝（501 URL 地址受限 / 地址受限 / 下架 / 失效）→ 翻译 **540034**（替代 540030 裸透传）
3. **plan-options**：过滤 INACTIVE 产品与孤儿计划的计划；司机端不再看到下架产品

## 接口行为变化

| 接口 | 修复前 | 修复后 |
|---|---|---|
| `POST driver-purchase`（不可售产品） | 540030「为投保人投保失败: [501]url地址受限」/ 裸 404 | **540034「该产品已下架/不可售，请更换可售产品」** |
| `POST driver-purchase`（可售产品） | 不变 | 不变（畅心游真实投保成功，保单号非 MOCK） |
| `GET driver-plan-options` | 仅畅心游 20万计划 | 畅心游 20万 + 未来星 20/30/50万（未来星产品计划 usage_category 已标注 BOTH）；INACTIVE 产品被过滤 |

## 新增错误码

| 错误码 | 消息 |
|---|---|
| 540034 | 该产品已下架/不可售，请更换可售产品 |

## 验证证据

- 网关实测（2026-08-05，内部接口 SSH 直连 8086）：
  - 畅心游投保 → 200，extOrderNo=BX2026080517395620000670，回调后 INSURED + 真实保单号 **11209006600507256500**（非 MOCK）
  - 未来星投保 → **540034**「该产品已下架/不可售，请更换可售产品」（保游 501 URL 受限翻译）
  - plan-options → 4 计划（畅心游+未来星 20/30/50万）；临时标 INACTIVE 后过滤只剩畅心游，恢复后 4 计划
- 定向测试：InsuranceCreateServiceTest/InsuranceManageServiceTest/InsuranceQueryServiceTest 111/111（新增 5 用例：540034 本地拦截/404 翻译/501 翻译/plan-options 过滤/同步标 INACTIVE）

## 关联/联系人

### 链接

- [后端工单 #5549](https://git.1814.love:8443/wx/HL/issues/5549)
- [后端 PR #5557](https://git.1814.love:8443/wx/HL/pulls/5557)
- Merge commit: `269b565cd9`

### 联系人

- **后端负责人**: @wx
