# 产品保险/合同方案验证调整

**日期**: 2026-03-22
**服务**: hl-product-service
**类型**: fix + enhancement

---

## 功能说明

调整产品保险方案和合同方案的验证时机：

1. **创建产品（草稿）时**：`insuranceSchemeId` 和 `contractSchemeId` 改为**可选**，不再强制必填
2. **核心产品/小蒙马上架前**：校验必须已配置保险方案和合同方案，否则上架失败
3. **定制产品完成前**（DRAFT → COMPLETED）：校验必须已配置保险方案和合同方案，否则完成失败

## 影响接口

### POST /admin/product （创建产品）

**变更**：`insuranceSchemeId` 和 `contractSchemeId` 从必填改为可选

| 参数 | 类型 | 必填 | 说明 |
|------|------|------|------|
| insuranceSchemeId | Long | 否（原为是） | 保险方案ID，上架/完成前必须配置 |
| contractSchemeId | Long | 否（原为是） | 合同方案ID，上架/完成前必须配置 |

### PUT /admin/product/{productId}/status （状态变更）

**变更**：新增上架/完成前的方案校验

- **核心产品/小蒙马** 变更为 `PUBLISHED` 时，校验 `insuranceSchemeId` 和 `contractSchemeId` 非空
- **定制产品** 变更为 `COMPLETED` 时，校验 `insuranceSchemeId` 和 `contractSchemeId` 非空
- 校验失败返回错误信息，如：`上架校验不通过: 保险方案不能为空; 合同方案不能为空`

## 前端注意事项

- 产品编辑页保存草稿时，保险方案和合同方案可以留空
- 点击「上架」或定制产品点击「完成」时，后端会校验这两个字段
- 建议前端在上架/完成按钮点击前做前置校验提示，提升用户体验
