# 配房需求「段×候选」候选酒店补真实房型 roomTypeId/roomTypeName（itinerary 接口，已上线测试服·可对接）

> 变更类型：✅ 修改接口（新增字段，已部署测试服并 API + 前端 UI 双实证，可对接）
> 端类型：管理后台（定制师侧·订单详情「行程安排」→「修改需求 / 调整订单」弹窗「酒店安排」）
> 日期：2026-06-24 ｜ 工单：#4351 ｜ PR：#4352 ｜ 服务：hl-order-service-v3
> 关联：补 #4313（#4204 P2）的遗漏——#4313 只给 itinerary 平铺 `hotels[]`（RequirementHotelVO）加了房型，**遗漏了「段×候选」结构 `segments[].candidates[]`（RequirementCandidateVO）**，而调整弹窗实际用后者回显，故房型仍不回显。

---

## ⚠️ 关键说明
- **现象**：调整订单弹窗「酒店安排」每个候选酒店的**房型下拉恒显示「该酒店暂无可选房型」**，提交时已选的真实房型（如「精品标间」「普通标间」）修改时无法回显。
- **根因**：itinerary 接口 `RequirementCandidateVO`（段×候选的候选项）缺 `roomTypeId/roomTypeName`，#4313 只补了平铺 `hotels[]`、漏了这里。后端 `order_hotel_requirement.days` JSON 已存房型，纯属 VO + Converter 透传遗漏。
- **已修复并实证**：候选项补字段 + Converter 透传，已部署测试服，API + 前端 UI 双实证房型正确回显，纯 additive 向后兼容。

## 1. 新增字段（itinerary 接口·段×候选的候选维度）
`GET /v3/admin/order/{id}/itinerary` → `data.hotelGroup.requirement.days[].segments[].candidates[]`（`RequirementCandidateVO`）各**新增**：

| 字段 | 类型 | 说明 |
|---|---|---|
| `roomTypeId` | String（雪花，可空） | 该候选酒店的**真实房型 ID** |
| `roomTypeName` | String（可空） | 该候选酒店的**真实房型名称** |

为 null（旧单 / 无房型候选 / 定制师未录真实房型）时，前端回退展示段级 `roomCategory`（与 #4313 平铺 hotels[] 口径一致）。

## 2. 真实响应示例（测试服 order 2069593503129636865，本次实测）
```json
"segments": [{
  "roomCount": 1, "budget": "320.00", "remark": "测试信仰 要窗户",
  "candidates": [
    {"hotelId":"3001000000000000002","hotelName":"海拉尔海棠酒店","roomTypeId":"3002000000000000002","roomTypeName":"精品标间","remark":"测试信仰 要窗户"},
    {"hotelId":"2023714929877450753","hotelName":"呼伦贝尔香格里拉大酒店","roomTypeId":"2023727403196502017","roomTypeName":"普通标间","remark":"要窗户"}
  ]
}]
```
（未选房型的候选 `roomTypeId/roomTypeName` 为 null / 空串，属正常。）

## 3. 前端动作
- 调整弹窗「酒店安排」候选酒店房型下拉，回显值改从 `segments[].candidates[].roomTypeId/roomTypeName` 取（原先该结构无此字段，致「该酒店暂无可选房型」）。

## 4. 另需前端处理（同弹窗其余回显缺失·非本次后端范围）
排查「修改房需求回显信息不全」时实测发现，同弹窗以下两项后端 itinerary **早已返回**（在 `data.hotelGroup.requirement` 顶层），属**前端未渲染**，后端无需改：

| 缺失项 | 后端返回路径 | 测试服实测值 | 前端待办 |
|---|---|---|---|
| 特殊诉求标签 | `requirement.specialTags`（String 数组） | `["高楼层","安静楼层","无烟房","景观房","可加床","含双早","含早餐","可拆分双床","相邻房间","远离电梯"]` | 调整弹窗补「特殊诉求标签」回显 + 编辑区 |
| 整单备注 | `requirement.remark`（String） | `"客人怕吵"` | 调整弹窗补「整单备注」回显 + 编辑区 |

⚠️ **数据丢失风险**：当前这两项不回显，定制师在弹窗改房需求并「提交调整」时，若提交 payload 不带这两个字段，可能覆盖丢失已填的诉求标签 + 整单备注，建议优先补回显。
