docs(changelog): 住宿安排回配回显+加急显隐契约 canUrge(#6033 / PR #6036)
所有检测均成功
changelog-filename-gate / validate (push) Successful in 2s

这个提交包含在:
API Changelog Bot 2026-08-18 16:40:32 +08:00
父节点 5c84441822
当前提交 82af878a37

查看文件

@ -0,0 +1,89 @@
---
schema: "hl-changelog/v2"
ticket: "6033"
title: "住宿安排回配信息回显hotelGroup.assignments 补全)+ 加急按钮显隐契约 canUrge"
consumer: "admin"
author: "wx"
change_type: "修改接口"
backend_status: "deployed"
gateway_status: "verified"
frontend_status: "pending"
frontend_owner: "mmg"
frontend_ref: ""
target_release: ""
verified_at: "2026-08-18"
status_note: "后端完成PR #6036 已合并 dev-v3d4288c4941并部署 TESThl-order-service-v3 jar 16:30 更新、双实例重启。bug1 改走 listActiveHotelAssignmentsByOrderIdINQUIRINGCONFIRMED补回显;bug2 新增 hotelGroup.canUrge 显隐契约。2849 测试全绿 + ArchTest 54 绿。网关实测 itinerary 的 assignments 非空 + canUrge=false。"
updated_at: "2026-08-18"
base: "dev-v3"
generated: "2026-08-18T16:40:00+08:00"
---
# 住宿安排回配信息回显 + 加急按钮显隐契约 canUrge#6033
## 背景
订单详情-行程安排-住宿安排卡片两个回显 bug对照用车安排卡片的正确模式
- **bug1**:住宿安排只显示「用房需求」(每晚房型/酒店需求),**不显示具体回配结果**——用车安排卡片是「需求 + 具体回配(丰田普拉多/蒙A/司机/日期)」两段都显示,住宿缺了回配段。
- **bug2**:配房已完成,住宿安排卡片右上角**仍显示「⚡加急」按钮**(加急是催房务赶紧配用的,配完还显示不合理)。
## 变更接口
| 接口 | 变更 |
| --- | --- |
| `GET /v3/admin/order/{id}/itinerary``hotelGroup.assignments` | **行为变更**。由空数组 `[]` 改为返回每晚回配明细。根因:原走 `listHotelAssignmentsByOrderId`**CONFIRMED-only** 业务判定语义,配房未完成INQUIRING 询房候选)时被过滤成空 → 前端只剩需求段。改走 `listActiveHotelAssignmentsByOrderId`**INQUIRING CONFIRMED** 纯回显中立只读契约)。其余 8 处 CONFIRMED-only 调用方(核单预览/SignVoucher/结算/TerminateRefund 等)语义零改动 |
| `GET /v3/admin/order/{id}/itinerary``hotelGroup.canUrge` | **新增字段**Boolean。加急按钮显隐契约配房已完成`finalized=true` / `houseStatus=CONFIRMED`)或已加急(`manualUrgent=true`)时 `false`,否则 `true` |
## 行为口径
- **bug1 回显**未完成INQUIRING 候选)行随 assignments 回显hotelName/roomTypeName 中文/roomCount/protocolPrice/stayDate/dayNumber,行内 `returnStatusLabel/finalized` 随需求级 houseStatus未最终确认不显示「已回配」;已完成CONFIRMED回显具体回配明细、`finalized=true``returnStatusLabel=已回配`
- **bug2 canUrge**`canUrge = !finalized && !manualUrgent`。前端**不要**再自行拼接状态判显隐,直接用 `canUrge` 控制「⚡加急」按钮显隐;`requirement.manualUrgent` 仍用于显示「已加急」态。
## 响应示例
`GET /v3/admin/order/{id}/itinerary``data.hotelGroup`(修复后):
```json
{
"requirement": { "requirementId": "2089598371034505218", "status": "DONE", "totalRoomCount": 2, "manualUrgent": false },
"houseStatus": "CONFIRMED",
"houseStatusLabel": "已完成",
"finalized": true,
"returnStatusLabel": "已回配",
"canUrge": false,
"assignments": [
{
"hotelName": "呼伦贝尔香格里拉大酒店",
"roomTypeName": "标准间",
"roomCount": 1,
"protocolPrice": "280.00",
"stayDate": "2026-08-18",
"dayNumber": 1,
"returnStatusLabel": "已回配",
"finalized": true
}
]
}
```
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `assignments[].hotelName` | String | 回配酒店名 |
| `assignments[].roomTypeName` | String | 房型中文名(字典翻译,无则 null |
| `assignments[].roomCount` | Integer | 房间数 |
| `assignments[].protocolPrice` | BigDecimal(字符串) | 协议价 |
| `assignments[].stayDate` | Date | 入住日 |
| `assignments[].dayNumber` | Integer | 第几晚 |
| `assignments[].finalized` / `returnStatusLabel` | Boolean/String | 随需求级状态(完成=已回配/finalized=true |
| **`canUrge`** | Boolean | **加急按钮显隐**false=隐藏(配完/已加急,true=显示可用(未完成且未加急) |
## 前端动作
- 住宿安排卡片把 `assignments` 每晚回配明细渲染出来(对齐用车卡片「需求 + 具体回配」两段模式)。
- 「⚡加急」按钮显隐直接用 `hotelGroup.canUrge`,不要自行拼接 `houseStatus/finalized/manualUrgent`
- 用车安排vehicleGroup回显无变化。
## 验证证据
- 单测OrderDetailServiceTest +1INQUIRING 候选传入 converter、OrderDetailConverterTest +1canUrgeCONFIRMED→false / 未加急→true / 已加急→false;order.core 全量回归 2849 绿 + ArchTest 54 绿(含 HouseModuleBoundaryArchTest
- 部署PR #6036 squash 合并 dev-v3merge commit d4288c4941,Deploy Panel 部署 hl-order-service-v3jar 16:30 更新、双实例重启生效)。
- 网关实测TESTitinerary 的 `hotelGroup.assignments` 由空变 2 条(呼伦贝尔香格里拉大酒店 + stayDate 8-18/19 + roomCount + 已回配 + finalized=true`canUrge=false`