From 9e8f405d6257b799067b9b6d53b885bc2562e0c4 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sat, 20 Jun 2026 18:36:49 +0800 Subject: [PATCH] =?UTF-8?q?docs(v2):=20=E9=85=8D=E6=88=BF/=E9=80=89?= =?UTF-8?q?=E9=85=92=E5=BA=97=E6=B5=81=E7=A8=8B=E8=AF=84=E5=AE=A111?= =?UTF-8?q?=E7=82=B9=E6=94=B6=E5=8F=A3(=E5=80=99=E9=80=89=E6=88=BF?= =?UTF-8?q?=E5=9E=8B=E5=AF=8C=E5=8C=96+=E6=AE=B5=C3=97=E5=80=99=E9=80=89+?= =?UTF-8?q?=E6=B1=A0=E5=86=85=E5=BF=AB=E7=85=A7+=E7=89=B9=E6=AE=8A?= =?UTF-8?q?=E8=AF=89=E6=B1=82=E5=AD=97=E5=85=B8)=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=AF=B9=E6=8E=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...ž‹å¯ŒåŒ–+段候选+池内快照+特殊诉求字典-修改接å£-管ç†åŽå°.md | 142 ++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 changelogs-v2/2026-06/20_é…æˆ¿é€‰é…’店æµç¨‹è¯„审11点_候选房型富化+段候选+池内快照+特殊诉求字典-修改接å£-管ç†åŽå°.md diff --git a/changelogs-v2/2026-06/20_é…æˆ¿é€‰é…’店æµç¨‹è¯„审11点_候选房型富化+段候选+池内快照+特殊诉求字典-修改接å£-管ç†åŽå°.md b/changelogs-v2/2026-06/20_é…æˆ¿é€‰é…’店æµç¨‹è¯„审11点_候选房型富化+段候选+池内快照+特殊诉求字典-修改接å£-管ç†åŽå°.md new file mode 100644 index 0000000..50876ec --- /dev/null +++ b/changelogs-v2/2026-06/20_é…æˆ¿é€‰é…’店æµç¨‹è¯„审11点_候选房型富化+段候选+池内快照+特殊诉求字典-修改接å£-管ç†åŽå°.md @@ -0,0 +1,142 @@ +# ã€ä¿®æ”¹Â·ç®¡ç†åŽå°ã€‘é…æˆ¿/选酒店æµç¨‹è¯„审 11 点收å£ï¼ˆå€™é€‰æˆ¿åž‹å¯ŒåŒ– + 段×候选 + 池内快照 + 特殊诉求字典) + +> æ¶‰åŠ PR:#4126 / #4127 / #4135 / #4136 / #4148 / #4149(hl-order-service-v3ï¼ŒåŒºåŽ¿å¦æ¶‰ hl-resource-service) +> å½±å“页é¢ï¼š**订å•详情 → è°ƒæ•´è®¢å• â†’ 酒店安排**ï¼ˆé…æˆ¿éœ€æ±‚表å•)+ 其中的**「选择酒店ã€å¼¹çª—** +> 状æ€ï¼šå·²åˆå¹¶ dev-v3ã€å·²éƒ¨ç½²æµ‹è¯•æœåŒå®žä¾‹ã€å€™é€‰æŽ¥å£å·²ç½‘å…³ API 实测通过 + +--- + +## âš ï¸ å…³é”®è¯´æ˜Žï¼ˆå…ˆè¯»ï¼‰ + +1. 这是定制师「æäº¤é…房需求ã€è¡¨å• +「选择酒店ã€å¼¹çª—的一轮产å“评审收å£ï¼Œå…± 11 个点,å‰åŽç«¯éƒ½è¦æ”¹ã€‚ +2. 两处契约å˜åŒ–,å‰ç«¯å¿…改: + - **é…æˆ¿éœ€æ±‚æäº¤ä½“** `HotelRequirementReqVO.days` 结构å‡çº§ä¸ºã€Œ**段 × 候选**ã€ï¼ˆè§ §三-2)。 + - **选酒店候选接å£** `GET /v3/admin/hotel-candidates` 出å‚**富化**(真实房型/城市/区县/æ± å†…ï¼Œè§ Â§ä¸‰-1)。 +3. **房型下拉ä¸å†ç”¨é€šç”¨å­—å…¸**,改由「所选酒店的真实房型ã€é©±åŠ¨ï¼›**ä¸é€‰é…’店ä¸èƒ½é€‰æˆ¿åž‹**。 +4. 金é¢å­—段(å议价/标价/预算)å‡ä¸º **String**(åŽç«¯ @JsonSerialize),å‰ç«¯æŒ‰å­—符串收。 + +--- + +## 一ã€é…æˆ¿éœ€æ±‚è¡¨å•æ”¹åЍ + +### 点1 删「当晚备注〠+- æ¯æ™šçš„「当晚备注(当晚整体安排说明)ã€**æ•´æ¡åŽ»æŽ‰**(输入框删除)。 +- åŽç«¯ `DayHotelReq.remark` 字段已移除;行程 Tab çš„ `requirementDays[].remark` 也éšä¹‹åºŸå¼ƒï¼ˆæ–°å•æ’空,å‰ç«¯åˆ«å†å±•示当晚备注)。 +- **ä¿ç•™**「该酒店备注ã€ï¼ˆè¿ä¸ºæ¯ä¸ªå€™é€‰é…’店的备注,è§ç‚¹8 `CandidateHotel.remark`)。 + +### 点2 删「城市/区域ã€è¾“入(纯å‰ç«¯ï¼‰ +- æ¯æ™šé‚£ä¸ªã€ŒåŸŽå¸‚/区域(如 拉è¨å¸‚区)ã€è¾“入框**删掉**——它本就没进åŽç«¯ï¼Œä¸”与「选择酒店ã€å¼¹çª—自带的æœç´¢æ¡†é‡å¤ã€‚ + +### 点3 特殊诉求改字典(多选 + å…许自定义) +- 「特殊诉求ã€ä»Žè‡ªç”±æ–‡æœ¬æ ‡ç­¾æ”¹ä¸º**绑定字典** `house_special_demand`,å‰ç«¯åš**多选**,**ä»å…许回车加自定义**。 +- 字典加载:`GET /admin/dict/data/house_special_demand` → `[{dictValue, dictLabel}]`(当å‰å€¼ï¼šå®‰é™æ¥¼å±‚/高楼层/景观房/无烟房/嫿—©é¤/å«åŒæ—©/å¯åŠ åºŠ/坿‹†åˆ†åŒåºŠ/相邻房间/远离电梯,è¿è¥å¯åœ¨å­—典管ç†å¢žåˆ ï¼‰ã€‚ +- æäº¤å­—段ä¸å˜ï¼Œä»æ˜¯ `specialTags: List`(存字典 value,自定义则存原文)。 + +### 点8 酒店支æŒã€Œæ®µ × 候选ã€ï¼ˆæäº¤ä½“结构å‡çº§ï¼Œé‡ç‚¹ï¼‰ +两个**独立**维度(产å“确认都è¦ï¼‰ï¼š +- **分ä½**:åŒä¸€æ™šä½ä¸¤å®¶ï¼ˆæˆ¿æ•°ç›¸åŠ ï¼‰â€”â€” 一晚有多个 **段(segment)**。 +- **候选**ï¼šå®šåˆ¶å¸ˆå¯¹æŸæ®µæå¤šå®¶å¿ƒä»ªé…’店,**房控åŽå°æ‹©ä¸€**å›žé… â€”â€” 一段有多个 **候选(candidate)**。 + +UI: +- æ¯æ™šå¯ã€Œ+ 加一段ä¸åŒé…’店(åŒä¸€æ™šåˆ†ä½ï¼‰ã€= 加 segmentï¼ˆæ¯æ®µç‹¬ç«‹å¡« 房数/房型/预算/段备注)。 +- æ¯æ®µçš„ã€Œé…’åº—ã€æ¡†æ”¯æŒ**多选**候选酒店(房控择一);æ¯ä¸ªå€™é€‰å¯å¡«è¯¥é…’店备注。 +- 候选酒店会自动进候选接å£çš„「定制师点åã€é«˜äº®ï¼ˆ`isConsultantRecommended`)。 + +--- + +## 二ã€é€‰æ‹©é…’店弹窗 + 房型 + +### 点4 å议价按真实房型 / 点6 å¯ç”¨æˆ¿æŒ‰çœŸå®žæˆ¿åž‹ / 点7 房型按真实酒店 +- 候选接å£çŽ°è¿”å›žæ¯å®¶é…’店的**真实房型列表** `roomTypes[]`(æ¥è‡ª resource 价格日历/库存)。 +- å‰ç«¯ï¼š + - **房型下拉**改由所选酒店的 `roomTypes[]` 驱动(`name`/`bedType`/`maxOccupancy`),**ä¸é€‰é…’店则房型ä¸å¯é€‰**ï¼›ä¸å†ç”¨é€šç”¨ `room_category` 字典。 + - **å议价**显示所选房型的 `roomTypes[].protocolPrice`ï¼ˆä¸æ˜¯é…’店级起步价 `protoPrice`)。 + - **å¯ç”¨æˆ¿**显示所选房型的 `roomTypes[].available`(+ `inventoryStatus` AVAILABLE/FULL/CLOSED)。 +- 注:测试酒店需 resource ä¾§é…了价格日历+åº“å­˜æ‰æœ‰ `roomTypes` æ•°æ®ï¼ˆæ— åˆ™è¯¥é…’店 roomTypes 为空/ä»· null)。 + +### 点5 城市 / 点10 区县 +- 候选项新增 `city`(城市,如 呼伦è´å°”市)+ `district`(区/县,如 满洲里市)。 +- 选酒店列表/候选展示加「城市ã€ã€ŒåŒº/县ã€ä¸¤åˆ—。 + +### 点9+11 池内徽章:按行程天数 + 从订å•产å“å¿«ç…§å– +- 「池内ã€å¾½ç«  `isPoolMatch` 语义修正为:**该酒店在「订å•产å“å¿«ç…§ã€é‡Œå½“天当档(order.tierSeq)的产å“酒店池中**。 + - 按**行程天数**:第1å¤©åªæ ‡ç¬¬1天产å“行程的酒店,第2天标第2天的。 + - 从**订å•产å“快照冻结值**å–ï¼ˆéž live 产å“é…置)——产å“下å•åŽè¢«æ”¹ä¸å½±å“已下å•订å•的池内判定。 +- å‰ç«¯æ— éœ€æ”¹è°ƒç”¨æ–¹å¼ï¼Œç…§å¸¸æŒ‰ `dayNumber` 查候选,`isPoolMatch`/`poolMatchBadge` 直接用。 + +--- + +## ä¸‰ã€æŽ¥å£å¥‘约 + +### 1. 候选接å£å‡ºå‚(新增字段) +`GET /v3/admin/hotel-candidates?orderId=&dayNumber=&roomCategory=&roomCount=&keyword=&limit=` +å‡ºå‚ `data.candidates[]`(`HotelCandidateRespVO.Candidate`)**新增**: + +| 字段 | 类型 | 说明 | +|------|------|------| +| `city` | String | 酒店所在城市(如 呼伦è´å°”市) | +| `district` | String | 酒店所在区/县(如 满洲里市) | +| `roomTypes` | List | 该酒店当日真实房型列表(è§ä¸‹ï¼‰ | + +`roomTypes[]`(`RoomTypeOption`): + +| 字段 | 类型 | 说明 | +|------|------|------| +| `roomTypeId` | String | 房型 ID | +| `name` | String | 房型å称(如 普通标间) | +| `bedType` | String | 床型(如 TWIN_BED) | +| `maxOccupancy` | Integer | 最大入ä½äººæ•° | +| `available` | Integer | 今日å¯ç”¨æˆ¿æ•° | +| `stock` | Integer | 总库存 | +| `protocolPrice` | String | å议价(金é¢å­—符串) | +| `basePrice` | String | 标价 | +| `inventoryStatus` | String | AVAILABLE / FULL / CLOSED | + +`isPoolMatch`(既有字段,语义改为按天+快照)ã€`protoPrice`/`matchedRoomType*`(既有,å‘åŽå…¼å®¹ä¿ç•™ï¼‰ä¸å˜ã€‚ + +### 2. é…æˆ¿éœ€æ±‚æäº¤ä½“(结构å‡çº§ï¼‰ +`HotelRequirementReqVO`(æäº¤é…房需求 / è°ƒæ•´è®¢å• hotelRequirement.days åŒæž„): +``` +{ + "days": [ + { + "dayNumber": 1, + "segments": [ // ↠原 hotels[] 改为 segments[]ï¼ˆåˆ†ä½æ®µï¼‰ + { + "roomCount": 2, + "roomCategory": "TWIN", + "budget": "600.00", // å¯ç©º(åŽç«¯å查å议价覆盖) + "remark": "段备注", + "candidates": [ // ↠候选酒店列表(房控择一) + { "hotelId": 80001, "hotelName": "拉è¨è¥¿è—宾馆", "remark": "é æ¹–一侧" }, + { "hotelId": 80002, "hotelName": "山景酒店", "remark": "å«åŒæ—©" } + ] + } + ] + } + ], + "specialTags": ["安陿¥¼å±‚", "嫿—©é¤"], // å­—å…¸ house_special_demand çš„ value(å…许自定义) + "remark": "æ•´å•备注" +} +``` +- **去掉**:`days[].remark`(当晚备注)ã€`days[].hotels[].source`(死字段)。 +- åŽç«¯å…¼å®¹æ—§ `hotels[]` 结构读å–(存é‡è®¢å•ä¸æŠ¥é”™ï¼‰ï¼Œä½†**æ–°æäº¤è¯·ç”¨ `segments[].candidates[]`**。 + +### 3. 特殊诉求字典 +`GET /admin/dict/data/house_special_demand` → `data: [{dictValue, dictLabel, ...}]`。 + +--- + +## å››ã€curl 实测(候选接å£ï¼Œ2026-06-20 测试æœï¼‰ +``` +GET /v3/admin/hotel-candidates?orderId=2068235380959682562&dayNumber=1&limit=3 +→ 200 +data.candidates[0]: + hotelName=呼伦è´å°”香格里拉大酒店 city=呼伦è´å°”市 district=满洲里市 isPoolMatch=true + roomTypes=[{name:普通标间, bedType:TWIN_BED, available:20, protocolPrice:"280.00", inventoryStatus:AVAILABLE}, ...] +data.candidates[1]: 海拉尔嘉世豪酒店 district=海拉尔区 isPoolMatch=false +``` + +--- + +如对契约/å­—æ®µæœ‰ç–‘é—®éšæ—¶æ‰¾åŽç«¯ï¼ˆçŽ‹éªï¼‰ã€‚