# 【说明补齐·管理后台】服务标准模板与产品的关联方式（产品 Step5）

> PR: #3375  服务: hl-product-service-v2 | 更新时间: 2026-06-03
> 存放目录: changelogs-v2/2026-06/  影响范围: 管理后台「产品编辑 / Step5 补充信息」（服务标准模板绑定）

## ⚠️ 关键说明

前端反馈「服务标准模板怎么和产品关联」一直没有同步说明，本文补齐，含完整接口、字段、请求/响应示例。

- 服务标准模板是一份**统一维护的全局模板库**，产品通过**纯引用一个模板 ID**（`serviceStandardTemplateId`）与它关联，不复制模板正文。
- 所有产品（含私人定制）的服务标准都**实时按模板 ID 查询展示**，模板改了已绑定产品实时跟随。
- 原私人定制完成设计冻快照的机制（`service_standard_snapshot`）已废除（PR #3375），**接口结构不变，前端无需改动**。

## 1. 接口背景

产品编辑 Step5「补充信息」里需要给产品绑定一份服务标准模板。绑定关系存在产品的 `serviceStandardTemplateId` 字段（纯引用，可空）。前端需要：拉模板下拉、预览模板内容、保存绑定、回显当前绑定。

## 2. 接口清单

| # | 用途 | 方法 | 路径 |
|---|------|------|------|
| 1 | 启用模板下拉 | GET | `/admin/product/service-standard-template/enabled` |
| 2 | 模板详情（预览） | GET | `/admin/product/service-standard-template/{id}` |
| 3 | 保存绑定 | PUT | `/admin/product/item/{id}/supplement` |

## 3. 详细用法与示例

### 3.1 拉模板下拉（接口 1）

```bash
curl -H "Authorization: Bearer <admin-token>" \
  "https://api.test.1814.love:9443/admin/product/service-standard-template/enabled"
```

响应（只返 id + name，供下拉选择）：

```json
{
  "code": 200,
  "data": [
    { "id": "2061281473171775490", "name": "6字段服务标准模板" }
  ]
}
```

### 3.2 预览选中模板内容（接口 2）

```bash
curl -H "Authorization: Bearer <admin-token>" \
  "https://api.test.1814.love:9443/admin/product/service-standard-template/2061281473171775490"
```

响应（含分组 sections 与每条 6 字段）：

```json
{
  "code": 200,
  "data": {
    "id": "2061281473171775490",
    "name": "6字段服务标准模板",
    "intro": "全国统一的服务标准",
    "applicableScope": "本周期本产品全部出团人群",
    "sections": [
      {
        "title": "用车服务",
        "items": [
          {
            "title": "专业司机",
            "content": "持有A1驾照，8年以上驾龄",
            "remark": "提供接送指引",
            "color": "#FF6600",
            "contactName": "李师傅",
            "phone": "13800000000"
          }
        ]
      }
    ],
    "status": "ENABLED",
    "statusLabel": "启用"
  }
}
```

模板条目 6 字段说明：

| 字段 | 类型 | 说明 |
|------|------|------|
| title | String | 条目标题，如「专业司机」 |
| content | String | 条目正文 |
| remark | String | 备注，可空 |
| color | String | 标题色值 `#RRGGBB`，可空 |
| contactName | String | 联系人，可空 |
| phone | String | 联系电话，可空 |

### 3.3 保存绑定（接口 3）

Step5 保存时在 supplement 请求体里带上 `serviceStandardTemplateId` 即可（解绑传 `null`）：

```bash
curl -X PUT -H "Authorization: Bearer <admin-token>" -H "Content-Type: application/json" \
  -d '{"serviceStandardTemplateId": 2061281473171775490}' \
  "https://api.test.1814.love:9443/admin/product/item/2056938821550747650/supplement"
```

> 注：supplement 请求体含 Step5 全量字段，此处仅示意服务标准模板字段，实际提交按 Step5 既有结构整体提交。

### 3.4 回显当前绑定

产品 / Step5 读取接口返回的 `serviceStandardTemplateId` 即当前绑定（未绑定为 `null`），前端据此回填下拉选中项。

## 4. 前端动作

1. 进入 Step5 服务标准区，用接口 1 拉下拉。
2. 选中某模板，用接口 2 拉详情做内容预览。
3. 保存时把 `serviceStandardTemplateId` 随接口 3（supplement）整体提交。
4. 回显时读 Step5 数据里的 `serviceStandardTemplateId` 回填下拉。

无破坏性变更，按需接入即可。
