4.9 KiB
4.9 KiB
schema, ticket, title, consumer, author, change_type, backend_status, gateway_status, frontend_status, frontend_owner, frontend_ref, target_release, verified_at, status_note, updated_at, base, generated
| schema | ticket | title | consumer | author | change_type | backend_status | gateway_status | frontend_status | frontend_owner | frontend_ref | target_release | verified_at | status_note | updated_at | base | generated |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| hl-changelog/v2 | 6210 | 调整订单弹窗「客户自订」勾选未回显,重交后自订标记被静默抹掉 | admin | kimi(wx) | 前端缺陷 | deployed | verified | verified | mmg | 97baecb6 | 2026-08-23 | 前端缺陷:调整订单弹窗酒店 tab 未绑定 days[].customerSelfBooked——快照已返回该字段但「客户自订」勾选框恒不勾,且自订晚被按普通晚渲染默认空段;重交时标记丢失(null 落库),该晚变回「待房务配房」,房务会重复配房。后端读/写/换版链路实证无 bug。修复:回显绑定 + 原样重交该字段。 | 2026-08-23 | dev-v3 | 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。
前端缺陷点(三处,同源)
- 回显未绑定:打开弹窗拉快照后,未把
hotelRequirement.days[].customerSelfBooked === true绑定到对应晚的「客户自订」勾选框。 - 自订晚被当普通晚渲染:自订晚(segments 为空)被补了默认空段结构展示(v2 数据形态实证)。
- 重交丢字段:提交调整时未带上
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 可为空(可带备注如「客人自订汉庭,勿重复订」)。
修复要求(前端)
- 弹窗初始化:
days[i].customerSelfBooked === true→ 第 i 晚「客户自订」勾选框置勾,且该晚按自订态渲染(候选/段区域禁用或隐藏,与首次标记自订时的交互一致)。 - 提交组装:每晚原样带上
customerSelfBooked(勾选=true,未勾=false/null),不得因用户没动过该晚而丢键。 - 勾选自订的晚提交时
segments传空数组(与 #5838 提交形态一致),不要补默认空段。
数据善后(TEST 订单 HL20260823145314586)
v2 已丢第 1/3/4/5 晚自订标记,这 4 晚当前对房务显示为「待配房」。待前端修复部署后,由顾问重新打开调整弹窗把这 4 晚重新勾「客户自订」提交即可走正常业务路径恢复(v3);如需立即恢复可联系后端 SQL 补数(另起数据单,需 wx 确认)。