# 二期 v3 服务标准重构：模板条目改表结构补 6 字段 + 行程点位服务标准实时取资源

> **服务**: hl-product-service-v2 / hl-resource-service / hl-order-service-v3
> **PR**: #3254(模板改表结构)、#3255(点位取资源)、#3256(迁移 hotfix)
> **Issue**: #3253、#3250
> **日期**: 2026-05-29
> **影响**: 🟡 服务标准这一页分两块都有字段变化，前端需按 6 字段渲染模板条目 + 在行程点位渲染新的 `serviceStandard`

---

## 总览（前端 mmg 必读）

服务标准（出团服务说明书）这页分**两块**，本次都动了字段：

1. **模板块**（模板标题/提示语/分组[出团注意事项·退费说明·温馨提示]+条目）——条目字段补全为 6 字段。
2. **行程点位块**（每个酒店/景点/活动/服务点位下那段服务标准）——改为**实时从资源取**。

两块**正交**：模板块=出团总则类，点位块=资源自带。已测试服部署 + 验证。

---

## 1. 服务标准模板条目：3 字段 → 6 字段（#3254）

接口路径不变：`/admin/product/service-standard-template`（create/update/detail/page），**响应形状仍是 `sections[].items[]`**。仅条目字段变化：

| 字段 | 说明 | 备注 |
|---|---|---|
| `title` | 主文案 | 必填 |
| `content` | 正文 | 可空 |
| `remark` | 备注/灰色二级说明 | 新增 |
| `color` | 文案颜色 `#RRGGBB` | 新增 |
| `contactName` | 联系人（如「房务·舒馨」） | 新增 |
| `phone` | 手机号（如 15391131404） | 新增 |

- **旧 `contact` 字段移除**（拆成 `contactName` + `phone`）。
- `color` 校验：必须 `#RRGGBB` 格式；**无值传 `null` 或空串 `""` 均可**（PR #3257 起空串也放行，仍拒 `red` 等非法值）。
- 后端存储由 JSON 列改为关系表（对前端无感，API 形状不变）。
- ✅ 模板详情/列表 RespVO 已返 **`statusLabel`**（`ENABLED→启用` / `DISABLED→停用`，PR #3257 起），前端可直接渲染中文，无需自行映射（与装备建议对齐）。

> **补充更新（PR #3257）**：上面两条「⚠️ 无 statusLabel」「空串会 400」的遗留已修复——`statusLabel` 现已返回；`color` 空串现已放行。

## 2. 订单详情「服务标准」Tab 同步 6 字段（#3254）

`GET /v3/admin/order/{orderId}/detail/service-standard` 的 `serviceStandard.sections[].items[]` 同步上述 6 字段（快照仍冻结，只是字段变多）。

## 3. 行程点位服务标准：实时从资源取（#3255）

`GET /v3/admin/order/{orderId}/itinerary/full` → `days[].nodes[]` **新增 `serviceStandard` 字段**：

- 值**实时按 `resourceId` 从资源（酒店/景点/活动/服务）拉取**，**不冻快照**——运营改了资源的服务标准，**老订单详情同步更新**。
- 资源查不到 / 调用降级时该字段 `null`，不报错。
- 前端在每个点位下渲染这段 `serviceStandard`（区别于点位的电话/联系人）。

## 4. 资源新增「服务标准」字段（#3255）

酒店/景点/活动/服务 4 类资源新增 `serviceStandard` 字段（admin 编辑表单需加该输入框，最长 10000）：

- 酒店：`GET/PUT /admin/hotel/item/{id}` 已含 `serviceStandard`
- 景点/活动/服务 admin create/update/detail 同步含该字段

---

## 验证（测试服 dev-v3 已部署 + 实测）

- 模板 6 字段 admin E2E：创建（含 color/remark/contactName/phone）→ 详情回显，6 字段逐项 round-trip 通过；非法 color「red」被 400 拦截；多分组（2 组）正确。
- 资源 `serviceStandard`：hotel 详情接口已含该字段（DB 列 + 内部批量详情已接通）。
- 点位 `NodeVO.serviceStandard`：字段已上线，实时拉取 + 资源缺失降级 null 逻辑已单测覆盖。
- 三服务（resource/product-v2/order-v3）测试服双实例已部署。

如需任一接口完整响应样例，回我即可。
