From 82af878a37a0a31c3db0b1f7a57309ca018dc805 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Tue, 18 Aug 2026 16:40:32 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20=E4=BD=8F=E5=AE=BF=E5=AE=89?= =?UTF-8?q?=E6=8E=92=E5=9B=9E=E9=85=8D=E5=9B=9E=E6=98=BE+=E5=8A=A0?= =?UTF-8?q?=E6=80=A5=E6=98=BE=E9=9A=90=E5=A5=91=E7=BA=A6=20canUrge?= =?UTF-8?q?=EF=BC=88#6033=20/=20PR=20#6036=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...排回配回显与加急显隐契约-修改接口-管理后台.md | 89 +++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 changelogs-v2/2026-08/18_6033_住宿安排回配回显与加急显隐契约-修改接口-管理后台.md diff --git a/changelogs-v2/2026-08/18_6033_住宿安排回配回显与加急显隐契约-修改接口-管理后台.md b/changelogs-v2/2026-08/18_6033_住宿安排回配回显与加急显隐契约-修改接口-管理后台.md new file mode 100644 index 0000000..84f5155 --- /dev/null +++ b/changelogs-v2/2026-08/18_6033_住宿安排回配回显与加急显隐契约-修改接口-管理后台.md @@ -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-v3(d4288c4941)并部署 TEST(hl-order-service-v3 jar 16:30 更新、双实例重启)。bug1 改走 listActiveHotelAssignmentsByOrderId(INQUIRING∪CONFIRMED)补回显;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 +1(INQUIRING 候选传入 converter)、OrderDetailConverterTest +1(canUrge:CONFIRMED→false / 未加急→true / 已加急→false);order.core 全量回归 2849 绿 + ArchTest 54 绿(含 HouseModuleBoundaryArchTest)。 +- 部署:PR #6036 squash 合并 dev-v3(merge commit d4288c4941),Deploy Panel 部署 hl-order-service-v3(jar 16:30 更新、双实例重启生效)。 +- 网关实测(TEST):itinerary 的 `hotelGroup.assignments` 由空变 2 条(呼伦贝尔香格里拉大酒店 + stayDate 8-18/19 + roomCount + 已回配 + finalized=true),`canUrge=false`。