# 配房「选酒店一步定房型+房间数」（后端提交链路 + 回显已就绪,前端做弹窗交互；已上线测试服）

> 变更类型：✅ 修改接口（回显补 roomCount,additive）+ 📖 提交契约说明（提交链路本就支持,前端按此对接）
> 端类型：管理后台（房务管家·配房「选择酒店」弹窗）
> 日期：2026-06-24 ｜ 工单：#4367 ｜ PR：#4368 ｜ 服务：hl-order-service-v3
> 关联：配合产品需求「配房选酒店时选房型+填房间数,一天多酒店多房型,房间数与房型绑定」。

---

## ⚠️ 关键说明
- **后端提交链路早就支持**多酒店多房型 + 房间数绑房型,前端按下方契约对接即可;本次后端只补了**回显** `roomCount`(原漏接)。
- 「房间数与房型绑定」= 提交时 `roomTypeId` 和 `roomCount` 在**同一个 item** 里;一天多酒店多房型 = 一天提交多个 item。

## 1. 提交配房方案（房控选酒店实配）
`POST /v3/admin/order/hotel-requirements/{requirementId}/assignments`

请求体 `AssignmentSubmitReqVO`：
```json
{
  "items": [
    {"dayNumber":1, "hotelId":3001000000000000002, "roomTypeId":3002000000000000002, "roomCategory":"STANDARD", "roomCount":2, "sellPrice":320.00, "remark":"靠湖"},
    {"dayNumber":1, "hotelId":2023714929877450753, "roomTypeId":2023727403196502017, "roomCategory":"STANDARD", "roomCount":1, "sellPrice":320.00, "remark":""}
  ]
}
```
`items[]`（`AssignmentItemReqVO`）字段：

| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| `dayNumber` | Integer | ✓ | 第几晚（1-based）。**一天多酒店多房型 = 多个 item 用同一 dayNumber** |
| `hotelId` | Long | ✓ | 酒店 ID（取自 hotel-candidates 候选） |
| `roomTypeId` | Long | ✓ | 房型 ID（取自候选的 `roomTypes[].roomTypeId`） |
| `roomCategory` | String | ✓ | 房型字典 code（取 `roomTypes[].roomCategory`，如 STANDARD/TWIN/KING） |
| `roomCount` | Integer | ✓ | **间数（≥1）。与本 item 的 roomTypeId 同行 = 房间数绑房型** |
| `sellPrice` | BigDecimal | ✓ | 售价（元/间·晚） |
| `remark` | String | — | 备注 |

→ 后端每个 item 落一行 `house_hotel_assignment`（含 room_type_id + room_count）。

## 2. 回显（本次后端补 roomCount）
`GET /v3/admin/order/{id}/itinerary` → `data.hotelGroup.assignments[]`（`HotelAssignmentVO`）**新增**：

| 字段 | 类型 | 说明 |
|---|---|---|
| `roomCount` | Integer | 本晚本酒店本房型的间数（房间数与房型同行绑定回显；原漏接,本次补） |

（assignments 其余字段 dayNumber/stayDate/hotelName/roomType/plannedCost/remark 不变。）

## 3. 前端动作（弹窗交互,后端无需再改）
- 「选择酒店」弹窗每个候选酒店行,操作区加：
  1. **房型下拉**：用 `candidate.roomTypes` 生成（展示 name + 协议价 + 可用房;`inventoryStatus≠AVAILABLE` 置灰）。
  2. **房间数输入**：整数,默认 1。
- 支持**一天加多行**（同一晚选多个酒店 / 同酒店多房型）,每行 = 一个酒店+房型+房间数。
- 提交时构造 `items[]`（每行一个 item,同晚多行用同 dayNumber）,调上面的 assignments 接口。
- 详情回显读 `assignments[].roomCount` 展示已配间数。
