# 作废需求详情冻结作废时配房快照

## 目标前端

- 端类型：管理后台（Web）
- 目标仓库：`mmg/hl-ui`（`https://git.1814.love:8443/mmg/hl-ui.git`）
- 联调/验收环境：`http://192.168.100.160:9527`
- 小程序、H5 及其他前端：无需处理

## 业务规则

订单调整生成新住宿需求时，旧需求详情必须展示“该需求作废当时”的配房事实，不能复用当前订单的新日期、新行程地点或当前配房。历史数据严格只读，不能恢复或执行任何业务操作。

## 接口

```text
GET /admin/house/orders/{orderId}?requirementId={作废需求ID}
```

历史详情的 `itinerary[].assignments[]` 明确返回冻结字段：

```json
{
  "dayNumber": 1,
  "stayDate": "2026-07-28",
  "assignments": [
    {
      "assignmentId": "2079188886726098945",
      "hotelId": "2023714929877450753",
      "hotelName": "呼伦贝尔香格里拉大酒店",
      "roomTypeId": "2023727403196502017",
      "roomTypeName": "普通标间",
      "roomCategory": "STANDARD",
      "confirmStatus": "CONFIRMED",
      "confirmStatusLabel": "已确认",
      "roomCount": 1,
      "protoPrice": "280.00",
      "settlementPrice": "279.00",
      "settleType": "sign",
      "sellPrice": "280.00",
      "deductInventory": false
    }
  ]
}
```

`stayDate`、酒店、房型、数量、价格、支付方式、库存口径和确认状态均来自作废时快照。后续删除/修改当前配房、资源酒店改名或价格调整，不影响历史详情。

## 管理后台处理要求

1. 作废详情按 `itinerary[]` 展示旧日期；每条配房至少显示酒店、`roomTypeName`、`roomCount` 和 `confirmStatusLabel`。
2. 房型名称优先使用 `roomTypeName`；部署前没有可信名称快照的旧数据才允许回退 `roomCategoryLabel`，不得按 ID 或列表位置猜测。
3. `historicalRequirement=true` 或 `voided=true` 时保持严格只读：仅允许查看、关闭、查看车务；不得出现联系、转单、配房、删除、清空、驳回、最终确认等房务写操作。
4. 禁止用当前订单出发日期推算历史 `stayDate`，禁止调用当前资源结果覆盖后端返回的历史酒店/房型快照。
5. ID 字段按字符串处理，禁止转换为 JavaScript `number`。

## 兼容与验收证据

- 变更为 additive，当前生效需求的接口结构不变。
- 测试订单：`HL20260719151313174`，`orderId=2078739922130243586`。
- 作废需求：`requirementId=2079181505287897090`。
- 测试环境返回 3 晚旧配房：2026-07-28/29/30，酒店“呼伦贝尔香格里拉大酒店”，房型“普通标间”，数量 1/2/3，状态均为“已确认”。
- 浏览器验收使用仓库 CDP 脚本完成，页面无 console error 或 failed request。

