From eae29984090b54cc1f07d147f0470dd0b796276e Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Tue, 30 Jun 2026 16:56:52 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog-v2):=20=E6=96=B0=E5=A2=9E60=5F?= =?UTF-8?q?=E6=88=BF=E5=8A=A1=E8=AE=A2=E5=8D=95=E8=AF=A6=E6=83=85itinerary?= =?UTF-8?q?=E6=94=B6=E5=8F=A3=E4=B8=BA=E5=8D=95=E7=88=B6=E6=95=B0=E7=BB=84?= =?UTF-8?q?assignments(=E6=AF=8F=E9=A1=B9=E5=B8=A6confirmStatus+confirmSta?= =?UTF-8?q?tusLabel),=E5=88=A0currentAssignment/currentAssignments/inquiri?= =?UTF-8?q?ngAssignments/currentSelections?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...nerary收口为单父数组assignments_前端对接-管理后台.md | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 changelogs-v2/2026-06/60_房务订单详情配房行程itinerary收口为单父数组assignments_前端对接-管理后台.md diff --git a/changelogs-v2/2026-06/60_房务订单详情配房行程itinerary收口为单父数组assignments_前端对接-管理后台.md b/changelogs-v2/2026-06/60_房务订单详情配房行程itinerary收口为单父数组assignments_前端对接-管理后台.md new file mode 100644 index 0000000..d816128 --- /dev/null +++ b/changelogs-v2/2026-06/60_房务订单详情配房行程itinerary收口为单父数组assignments_前端对接-管理后台.md @@ -0,0 +1,53 @@ +# 房务订单详情「配房行程」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`,前端按状态字段渲染/过滤;**不再按状态拆成多个并列父数组**。