diff --git a/changelogs/2026-03/2026-03-22_product_scheme_validation.md b/changelogs/2026-03/2026-03-22_product_scheme_validation.md new file mode 100644 index 0000000..766718e --- /dev/null +++ b/changelogs/2026-03/2026-03-22_product_scheme_validation.md @@ -0,0 +1,40 @@ +# 产品保险/合同方案验证调整 + +**日期**: 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` 非空 +- 校验失败返回错误信息,如:`上架校验不通过: 保险方案不能为空; 合同方案不能为空` + +## 前端注意事项 + +- 产品编辑页保存草稿时,保险方案和合同方案可以留空 +- 点击「上架」或定制产品点击「完成」时,后端会校验这两个字段 +- 建议前端在上架/完成按钮点击前做前置校验提示,提升用户体验