docs(changelog): #6210 调整订单弹窗客户自订未回显重交丢失——前端缺陷交接(DB+网关实证,后端契约完整)
changelog-filename-gate / validate (push) Successful in 2s
changelog-filename-gate / validate (push) Successful in 2s
这个提交包含在:
@@ -0,0 +1,66 @@
|
||||
---
|
||||
schema: "hl-changelog/v2"
|
||||
ticket: "6210"
|
||||
title: "调整订单弹窗「客户自订」勾选未回显,重交后自订标记被静默抹掉"
|
||||
consumer: "admin"
|
||||
author: "kimi(wx)"
|
||||
change_type: "前端缺陷"
|
||||
backend_status: "deployed"
|
||||
gateway_status: "verified"
|
||||
frontend_status: "pending"
|
||||
frontend_owner: "mmg"
|
||||
frontend_ref: ""
|
||||
target_release: ""
|
||||
verified_at: "2026-08-23"
|
||||
status_note: "前端缺陷:调整订单弹窗酒店 tab 未绑定 days[].customerSelfBooked——快照已返回该字段但「客户自订」勾选框恒不勾,且自订晚被按普通晚渲染默认空段;重交时标记丢失(null 落库),该晚变回「待房务配房」,房务会重复配房。后端读/写/换版链路实证无 bug。修复:回显绑定 + 原样重交该字段。"
|
||||
updated_at: "2026-08-23"
|
||||
base: "dev-v3"
|
||||
generated: "2026-08-23T15:45:00+08:00"
|
||||
---
|
||||
|
||||
# 调整订单弹窗「客户自订」勾选未回显,重交后自订标记被静默抹掉(#6210)
|
||||
|
||||
> 前端缺陷,待前端修复。后端契约完整(快照已返回字段、upsert 原样落库),DB 实测 + 网关实证。
|
||||
|
||||
## 现象(TEST 实证,订单 HL20260823145314586 / 团号 26-7603)
|
||||
|
||||
「调整订单」弹窗 → 酒店安排 tab,每晚左侧「**客户自订**」勾选框(#5838 引入):**此前标过自订的晚,打开修改弹窗时框是空的**;更严重的是在该弹窗里做任何修改重交后,自订标记被静默抹掉。
|
||||
|
||||
## 证据链(DB + 调整记录 + 网关实测,三证闭环)
|
||||
|
||||
该订单 2026-08-27 出行、6 天 5 晚、酒店 6 间:
|
||||
|
||||
| 时间 | 事件 | days JSON 事实 |
|
||||
|------|------|----------------|
|
||||
| 14:57:23 | 顾问经弹窗提交需求 v1 | 第 1/3/4/5 晚 `customerSelfBooked: true`、`segments: []`;第 2 晚呼伦贝尔香格里拉大酒店 |
|
||||
| 15:18:25 | 顾问经弹窗再次提交(v2,调整记录仅 HOTEL_REQ 一项,非改期/改人数触发) | **全部 5 晚 `customerSelfBooked: null`**;第 1/3/4/5 晚各自多出一个默认空段(roomCount=1 + 空候选)——自订晚被按普通晚渲染的形态 |
|
||||
|
||||
- `order_adjustment_record`:两次均为徐莱经弹窗提交的「酒店需求已调整」,无 SCHEDULE/PEOPLE 记录 → 排除后端内部换版丢值。
|
||||
- 网关实测(2026-08-23):`GET /v3/admin/order/{id}/adjustment/snapshot?scope=HOTEL_REQ` 返回 200,`hotelRequirement.days[]` **每项均含 `customerSelfBooked` 键**(当前值为 null 是因 v2 数据已丢,契约本身完整)。
|
||||
- 后端代码链路(origin/dev-v3):快照 `AdjustmentService.buildHotelReqFromDb` → `RequirementService.parseHotelDays` 显式读该键(L2927,带防丢注释);upsert 按请求原样落库;改期/改天数换版走同一 parseHotelDays 入口保留标记。**读/写/换版三条链路均无 bug。**
|
||||
|
||||
## 前端缺陷点(三处,同源)
|
||||
|
||||
1. **回显未绑定**:打开弹窗拉快照后,未把 `hotelRequirement.days[].customerSelfBooked === true` 绑定到对应晚的「客户自订」勾选框。
|
||||
2. **自订晚被当普通晚渲染**:自订晚(segments 为空)被补了默认空段结构展示(v2 数据形态实证)。
|
||||
3. **重交丢字段**:提交调整时未带上 `days[].customerSelfBooked`(快照契约注释明确要求「无损回显 + 原样重交」),null 落库后该晚变回「待房务配房」。
|
||||
|
||||
## 涉及接口(后端契约均无需改动)
|
||||
|
||||
| 接口 | 说明 |
|
||||
|------|------|
|
||||
| `GET /v3/admin/order/{id}/adjustment/snapshot?scope=HOTEL_REQ` | 回显源:`hotelRequirement.days[].customerSelfBooked`(Boolean,true=该晚客人自订) |
|
||||
| `POST /v3/admin/order/{id}/adjustment/submit`(updates.hotelRequirement.days) | 重交时必须原样带回 `customerSelfBooked` |
|
||||
| `PUT /v3/admin/order/{id}/hotel-requirement` | 同字段语义(三分支 upsert) |
|
||||
|
||||
字段语义(#5838):`customerSelfBooked=true` → 该晚客人自己订酒店、房务无需配房;不计入配房进度分母、不列「未配房」;自订晚 `segments` 可为空(可带备注如「客人自订汉庭,勿重复订」)。
|
||||
|
||||
## 修复要求(前端)
|
||||
|
||||
1. 弹窗初始化:`days[i].customerSelfBooked === true` → 第 i 晚「客户自订」勾选框置勾,且该晚按自订态渲染(候选/段区域禁用或隐藏,与首次标记自订时的交互一致)。
|
||||
2. 提交组装:每晚原样带上 `customerSelfBooked`(勾选=true,未勾=false/null),**不得因用户没动过该晚而丢键**。
|
||||
3. 勾选自订的晚提交时 `segments` 传空数组(与 #5838 提交形态一致),不要补默认空段。
|
||||
|
||||
## 数据善后(TEST 订单 HL20260823145314586)
|
||||
|
||||
v2 已丢第 1/3/4/5 晚自订标记,这 4 晚当前对房务显示为「待配房」。待前端修复部署后,由顾问重新打开调整弹窗把这 4 晚重新勾「客户自订」提交即可走正常业务路径恢复(v3);如需立即恢复可联系后端 SQL 补数(另起数据单,需 wx 确认)。
|
||||
在新工单中引用
屏蔽一个用户