# 房务订单详情「配房行程」itinerary 收口为一个父数组 `assignments`（每项带 confirmStatus + confirmStatusLabel）

> 模块：管理后台 · 房务订单详情弹窗 · 配房行程
> 接口：`GET /admin/house/orders/{orderId}` → `data.itinerary[]`
> 类型：后端结构收口（破坏性变更，前端必改；已合并 dev-v3 + 部署测试服 + API 实测闭环）
> 日期：2026-06-30 · 关联 PR #4672

## 背景
原 `itinerary[].` 把同一批配房按状态拆进**多个并列父数组**，且彼此重叠（前端没法简单回显、不知道读哪个）：
- `currentAssignment`（已废弃单数）、`currentAssignments`（CONFIRMED 子集）、`inquiringAssignments`（INQUIRING 子集）、`currentSelections`（INQUIRING∪CONFIRMED 全集）。

经与前端讨论拍板：**同一种数据的不同状态用一个父数组、每项自带状态**（以后类似接口同此约定）。

## 变更（前端必改）
`itinerary[]` 每个 Day：

### ❌ 删除的字段（不再返回）
- `currentAssignment`
- `currentAssignments`
- `inquiringAssignments`
- `currentSelections`（改名为 `assignments`）

### ✅ 新增/保留：唯一父数组 `assignments[]`
当天**全部 active 配房**（询房中 INQUIRING ∪ 已确认 CONFIRMED 各态**混在一个数组**），无配房返空数组 `[]`（不返 null）。每项：

```json
{
  "assignmentId": "2071869830406815746",
  "hotelId": "2029926129876320258",
  "hotelName": "海拉尔嘉世豪酒店",
  "roomTypeId": "2029944763138936834",
  "roomTypeName": "豪华大床房",
  "roomCategory": "DELUXE",
  "confirmStatus": "INQUIRING",        // INQUIRING=询房中 / CONFIRMED=已确认
  "confirmStatusLabel": "询房中",       // 新增：confirmStatus 的中文 label
  "roomCount": 4,
  "protoPrice": "420.00",
  "sellPrice": "420.00"
}
```

### 前端怎么用
- **直接渲染 `assignments[]`** 这一个列表，每项按自己的 `confirmStatusLabel` 显示状态徽章（询房中/已确认）。
- 要某**状态子集**自行过滤：
  - 询房中候选（原 `inquiringAssignments`，如单日确认弹窗的 keepAssignmentIds）→ `assignments.filter(a => a.confirmStatus === 'INQUIRING')`；
  - 已确认（原 `currentAssignments`）→ `assignments.filter(a => a.confirmStatus === 'CONFIRMED')`。

## 不变（无需改）
- Day 级整体状态徽章 **`arrange` / `arrangeLabel`**（待配房 pending / 询房中 waiting / 已确认 confirmed）**保留不变**——这是「整天」状态，与「单项」`confirmStatus` 是两回事。
- `dayNumber` / `stayDate` / `cityCode` / `cityName` / `expectedRoom` / `candidatePoolSummary` / `primaryAction` 等其它 Day 字段不变。

## 约定（团队级，后续接口同此）
凡「同一种数据有多种状态」的列表，统一返**一个父数组**、每项带 `xxxStatus` + `xxxStatusLabel`，前端按状态字段渲染/过滤；**不再按状态拆成多个并列父数组**。
