5.4 KiB
5.4 KiB
配房「先询房选候选 → 单日确认定一家」流程 — 详情逐日补询房中态/候选清单 + 单日确认同步协议价
变更类型:✨ 新增字段 + 接口接线说明(后端已就绪,房务管家前端需按此接线) 端类型:管理后台(房务管家·配房工作台) 日期:2026-06-26 | 工单:#4427 | PR:#4433 | 服务:hl-order-service-v3(双实例已部署 health UP,测试服 API+DB 实测通过)
背景:房务配房两阶段流程
- 第一次选酒店/房型 = 选「询房候选」(可多家) → 当天进入「询房中」 → 复制话术问酒店。
- 「单日确认」= 从候选挑一家定下来 → 当天配房完成(一天一家)。
后端能力本就齐:候选落 house_inquiry_message(一家一行);确认走询房回填转配房。本次补齐详情把「询房中」显示出来 + 当天候选清单,并让单日确认支持改结算价/同步协议价。
一、配房详情新增字段(GET /admin/house/orders/{orderId} → itinerary[])
1. 逐日状态 arrange 新增「询房中」
itinerary[].arrange 取值由原 pending/confirmed 扩为三态,arrangeLabel 为中文:
pending/ 待配房:当天无询房、无配房。waiting/ 询房中(新):当天有进行中的询房(PENDING 待回复 / REPLIED 已回复)且尚未定稿配房。confirmed/ 已确认:当天已有配房行(优先级最高——即便还有遗留询房,也显已确认)。
2. 逐日新增 inquiries[] 当天询房候选清单
itinerary[].inquiries(数组,无询房则空数组)——供「单日确认」弹窗列候选选保留哪家。每项字段:
| 字段 | 类型 | 说明 |
|---|---|---|
inquiryId |
String(雪花) | 询房记录 ID(回填/确认时用) |
hotelId |
String(雪花) | 酒店 ID |
hotelName |
String | 酒店名 |
roomCategory |
String | 房型类别字典 code(询房只到类别粒度;具体房型 ID 由前端单日确认时从该酒店房型列表现选,故候选不带 roomTypeId) |
roomCount |
Integer | 询问间数 |
status |
String | 询房状态:PENDING/REPLIED/CONFIRMED/REJECTED/TIMEOUT |
statusLabel |
String | 中文:待回复/已回复/已确认/已拒单/已超时 |
replyPrice |
String(金额) | 酒店回复报价(未回则空) |
replyAvailable |
Integer | 酒店回复可用房数(未回则空) |
priority |
String | NORMAL/URGENT |
timeoutAt |
DateTime | 询房超时刻(create + 4h) |
已取消(CANCELLED)的询房不进清单。
二、前端接线(房务管家,mmg 需改)
1. 第一次选房 → 走「发询房」(多候选),不要走「配房」
- 第一次给某天选候选酒店/房型 → 逐个调
POST /v3/admin/order/inquiry/send(一家一调,body 见下),不要调配房保存…/assignments。- 原因:配房保存是「一天一家定稿」模型(按天归集,多家只留一家)——这就是「选多个酒店只存一个」的根因。多候选必须落询房表。
sendbody:{requirementId, hotelId, dayNumber, stayDate, nights, roomCount, roomCategory, messageBody?};返回wechatTemplate(话术,供复制)。
- 复制话术:
POST /v3/admin/order/inquiry/preview(所见即所发,不落库),或直接用 send 返回的wechatTemplate。 - 发起后该天
arrange自动变waiting/询房中,前端据此显示徽章。
2. 「单日确认」→ 弹窗列候选选一家 → 回填转配房
- 弹窗数据源:详情
itinerary[].inquiries(或GET /v3/admin/order/inquiry?requirementId=&...历史)。 - 选定一家 →
POST /v3/admin/order/inquiry/{inquiryId}/reply,convertToAssignment=true→ 落配房,该天变「已确认」。 - 可在确认时改价:
- 改结算价:传
replyPrice(→ 落配房成交售价 sellPrice)。 - 同步到协议价(新):传
syncProtocolPrice=true—— 把本次结算价(replyPrice)同步写回 resource 协议价(与配房syncProtocolPrice同口径,无需另填值)。需同时传roomTypeId(前端从该酒店房型列表带入,写回价格日历定位用)。 - 也可走原显式路径:
syncToCalendar=true+newProtocolPrice/newStock(显式另填协议价/库存)。
- 改结算价:传
接口速查
| 操作 | 接口 |
|---|---|
| 发起询房(一家一调,多候选) | POST /v3/admin/order/inquiry/send |
| 话术预览 | POST /v3/admin/order/inquiry/preview |
| 询房历史/候选 | GET /v3/admin/order/inquiry?requirementId= |
| 单日确认(选一家定稿,可改结算价/同步协议价) | POST /v3/admin/order/inquiry/{inquiryId}/reply(convertToAssignment=true,可带 replyPrice / syncProtocolPrice / roomTypeId) |
| 详情逐日态+候选清单 | GET /admin/house/orders/{orderId} → itinerary[].arrange(+waiting/询房中) / itinerary[].inquiries[] |
测试服实测(已通过)
- 详情逐日
inquiries[]正确归集当天候选:发一条询房 → DAY 候选清单回status=PENDING/待回复、中文 statusLabel、报价/可用房/优先级齐全;该天有配房时arrange保持confirmed(已确认优先)。 - 全量单测 4668 通过(含三态 + 候选归集 + 同步协议价写回 replyPrice 当协议价 UT)。