# 房务详情混合房型逐行出参(Issue #5080) ## 背景 同一晚存在多个房型时,旧兼容标量会把 `rooms[]` 的首行房型与所有房数相加,导致“标间 1 + 大床房 1”被错误展示为“标间 2”。 ## 接口 `GET /admin/house/orders/{orderId}` `GET /v3/admin/order/{orderId}`(订单详情中的住宿需求摘要) ## 新增字段 `data.itinerary[].expectedRooms[]`:当天逐房型预期房间列表,混合房型展示和业务判断以此字段为准。 ```json { "expectedRoom": { "roomCategory": null, "roomCategoryLabel": null, "roomCount": 2 }, "expectedRooms": [ { "roomCategory": "STANDARD", "roomCategoryLabel": "标间", "roomCount": 1 }, { "roomCategory": "KING", "roomCategoryLabel": "大床房", "roomCount": 1 } ] } ``` ## 兼容规则 - 单一房型:`expectedRoom` 继续返回原标量,`expectedRooms[]` 同时提供逐行数据。 - 混合房型:`expectedRoom.roomCategory` 与 `roomCategoryLabel` 返回 `null`,防止形成“首房型 × 总房数”的错误含义;`roomCount` 仍为总间数。 - 未指定房型:房型字段保持 `null`,房数按需求返回。 - `requirement.current.days[].segments[].candidates[].rooms[]` 仍是候选酒店房型行的权威明细。 ## 前端适配要求 1. 房务详情及“选择酒店”弹窗不得再用 `days[].roomCategory` 或首个酒店 `roomCategory` 表示混合房型。 2. 标题按 `expectedRooms[]` 渲染,例如“标间 1 间 + 大床房 1 间”。 3. 候选房型筛选与默认数量应逐条读取 `expectedRooms[]`;不得以首行房型套用总间数。 4. 兼容后端尚未部署时,可从 `segments[].candidates[0].rooms[]` 读取同等权威明细,但不得猜测列表顺序。 ## 订单详情补充(Issue #5082) - `hotelRequirement.days[].hotels[]` 与 `segments[]` 的兼容 `roomCategory/roomCategoryLabel` 仅在对应 `rooms[]` 全部属于同一房型大类时返回。 - 混合房型时,上述兼容房型字段返回 `null`,`roomCount` 仍返回总间数;页面标题必须由 `rooms[]` 逐行生成。 - 这可避免“标间 1 + 大床房 1”被标题错误展示为“标间 2”。