From 70f9e64dcbe66af842695607223324c61ce562b2 Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Mon, 22 Jun 2026 14:56:03 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20#4220=20=E9=85=8D=E6=88=BF?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E5=9B=9E=E6=98=BE=E4=BF=AE=E5=A4=8D=20?= =?UTF-8?q?=E2=80=94=20=E6=AE=B5=C3=97=E5=80=99=E9=80=89=E7=BB=93=E6=9E=84?= =?UTF-8?q?+=E6=99=9A=E6=95=B0dayNumber+=E5=80=99=E9=80=89=E2=89=A0?= =?UTF-8?q?=E5=88=86=E4=BD=8F(=E5=90=8E=E7=AB=AF=E5=B7=B2=E4=BF=AE+?= =?UTF-8?q?=E5=89=8D=E7=AB=AF=E5=BE=85=E6=94=B9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...¤_段×候选结构+晚数+候选vs分ä½_管ç†åŽå°+å‰ç«¯BUG.md | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 changelogs-v2/2026-06/22_4220_é…æˆ¿éœ€æ±‚回显修å¤_段×候选结构+晚数+候选vs分ä½_管ç†åŽå°+å‰ç«¯BUG.md diff --git a/changelogs-v2/2026-06/22_4220_é…æˆ¿éœ€æ±‚回显修å¤_段×候选结构+晚数+候选vs分ä½_管ç†åŽå°+å‰ç«¯BUG.md b/changelogs-v2/2026-06/22_4220_é…æˆ¿éœ€æ±‚回显修å¤_段×候选结构+晚数+候选vs分ä½_管ç†åŽå°+å‰ç«¯BUG.md new file mode 100644 index 0000000..c2f86c3 --- /dev/null +++ b/changelogs-v2/2026-06/22_4220_é…æˆ¿éœ€æ±‚回显修å¤_段×候选结构+晚数+候选vs分ä½_管ç†åŽå°+å‰ç«¯BUG.md @@ -0,0 +1,54 @@ +# ã€åŽç«¯å·²ä¿® + å‰ç«¯å¾…改·管ç†åŽå°ã€‘é…æˆ¿éœ€æ±‚回显修å¤ï¼šæ®µÃ—候选结构 + 晚数 + å€™é€‰â‰ åˆ†ä½ (#4220) + +> **åŽç«¯ PR**: #4220ï¼ˆå·²åˆ dev-v3 + å·²éƒ¨ç½²æµ‹è¯•æœ + API 实测通过) | **æœåŠ¡**: hl-order-service-v3 | **æ›´æ–°**: 2026-06-22 +> **å‰ç«¯è´Ÿè´£äºº**: @mmg —— 本文åŽåŠã€Œå‰ç«¯å¾…æ”¹ã€æ˜¯å›žæ˜¾ bug,需å‰ç«¯é…åˆæ”¹æ¸²æŸ“。 + +## 1. 背景(å‰ç«¯å馈的回显 bug) + +3 天 2 晚的订å•ï¼Œé…æˆ¿å›žæ˜¾å‡ºçŽ°ä¸¤ç±»é”™è¯¯ï¼š +- **订å•详情「ä½å®¿å®‰æŽ’ã€**:2 晚的行程显示æˆã€Œç¬¬ 1-2 晚 / 第 3-4 晚ã€ï¼ˆå…± 4 晚)。 +- **æŠ¢å•æ± ã€Œé…房行程ã€**:åŒä¸€æ®µé‡Œæˆ¿æŽ§æ‹©ä¸€çš„ 2 个候选酒店,被标æˆã€ŒåŒæ™šåˆ†ä½ 1/2ã€2/2ã€ã€‚ + +排查(直查测试库 + 调真实 API)定论:**éœ€æ±‚æ•°æ®æœ¬èº«æ­£ç¡®**(2 å¤©ã€æ¯å¤© 1 æ®µã€æ¯æ®µ 2 候选)。根因有二——åŽç«¯ç¼ºæ•°æ® + å‰ç«¯æ¸²æŸ“å£å¾„错。 + +**核心语义(务必对é½ï¼‰**:一晚的用房 = `segments[]`ï¼ˆåˆ†ä½æ®µï¼Œ**å¤šæ®µæ‰æ˜¯åŒæ™šåˆ†ä½ï¼Œæˆ¿æ•°ç›¸åŠ **);一个 segment 内 = `candidates[]`(**房控择一的候选,房数/预算ä¸å åŠ **)。**候选 ≠ 分ä½**。本例æ¯å¤©åªæœ‰ 1 æ®µã€æ®µå†… 2 候选 → 是「2 个候选择一ã€ï¼Œä¸æ˜¯ã€Œ2 晚ã€ä¹Ÿä¸æ˜¯ã€Œ2 个分ä½ã€ã€‚ + +## 2. åŽç«¯å·²ä¿®ï¼ˆ#4220,数æ®çŽ°å·²å°±ç»ªï¼‰ + +两个真实åŽç«¯ç¼ºé™·å·²ä¿®å¤å¹¶éƒ¨ç½²ï¼š + +| # | 缺陷 | ä¿®å¤ | +|---|------|------| +| A | 候选 `hotelId` æ’为 `null`(JSON 里 hotelId 是字符串,åŽç«¯æ—§è§£æžåªè®¤æ•°å­—跳过了)→ 点å高亮/跳转酒店失效 | ç»Ÿä¸€è§£æž String/Number,hotelId 现正确返回 | +| B | 订å•详情 `/itinerary` çš„ `requirement.days[]` åªæœ‰æ‰å¹³ `hotels[]`ã€æ—  `hotelName`ã€æ—  `segments` → å‰ç«¯æ— æ³•区分候选/分ä½ã€æ— æ³•å±•ç¤ºå®Œæ•´è¯­å¥ | 新增 `days[].segments[]`(段×候选)+ `hotels[].hotelName`ï¼Œå¯¹é½æˆ¿åС侧 | + +**实测确认**(`GET /v3/admin/order/{id}/itinerary` 已返回): +- `days[].hotels[].hotelId` / `hotelName` éž nullï¼› +- 新增 `days[].segments[]`ï¼šæ¯æ®µå« `roomCategory`/`roomCategoryLabel`/`roomCount`/`budget`/`remark` + `candidates[]`(`hotelId`/`hotelName`/`remark`)。 +- 房务侧 `GET /admin/house/orders/{id}` çš„ `requirement.current.days[]` 本就有 `segments[]`(åŒç»“构),hotelId 现也修å¤ã€‚ + +## 3. å‰ç«¯å¾…改(回显修å¤ï¼‰ + +### 3.1 订å•详情「ä½å®¿å®‰æŽ’ã€ï¼ˆè¡Œç¨‹å®‰æŽ’ Tabï¼Œæº `/v3/admin/order/{id}/itinerary`) + +- **晚数标签用 `days[].dayNumber`**(第 1 晚 / 第 2 晚)。**ä¸¥ç¦æŠŠåŒä¸€å¤©çš„多个 `hotels[]`/候选æ¡ç›®å½“æˆå¤šæ™šç´¯åŠ ** —— 这正是「2 晚显示æˆç¬¬ 1-2 / 3-4 晚ã€çš„æ ¹å› ï¼ˆday1 çš„ 2 个候选被当æˆç¬¬ 1ã€2 晚,day2 çš„ 2 候选被当第 3ã€4 晚)。 +- **改用新增的 `days[].segments[]` 渲染**:一个 segment 一行(房型 × `roomCount` é—´ × `budget` 预算/晚),段内 `candidates[]` 作为「候选酒店(择一)ã€åˆ—表展示(带 `hotelName`)。仅当æŸå¤© `segments.length > 1` æ‰æ˜¯çœŸÂ·åŒæ™šåˆ†ä½ï¼ˆæˆ¿æ•°ç›¸åŠ ï¼‰ã€‚ +- **完整结构化语å¥**(解决「语å¥ä¸å…¨ã€ï¼‰ï¼šæ¯æ™š = 房型(`roomCategoryLabel` 优先,é™çº§ `roomCategory`) + `roomCount` é—´ + `budget` 预算/晚 + 候选酒店å(`candidates[].hotelName`);整å•级 = `specialTags`(诉求)+ `remark`(备注)。 +- æ—§ `hotels[]` æ‰å¹³å­—段åŽç«¯**加性ä¿ç•™**(ä¸ç ´å现有渲染),但建议è¿ç§»åˆ° `segments[]`。 +- **「已回é…ã€å¾½ç« **:仅当 `assignments[]` éžç©ºæ‰æ˜¾ç¤ºã€‚当å‰éœ€æ±‚ `status=PENDING`ã€`assignments=[]` æ—¶ä»æ˜¾ç¤ºã€Œå·²å›žé…ã€å±žè¯¯å¯¼ï¼Œåº”改为按实é…存在性判定。 + +### 3.2 æŠ¢å•æ±  / æˆ¿åŠ¡è¯¦æƒ…ã€Œé…æˆ¿è¡Œç¨‹ã€ï¼ˆæº `/admin/house/orders/{id}` → `requirement.current.days[]`) + +- **æŠ¢å•æ± é¢„览(未抢å•ï¼‰ä¸æ˜¾ç¤ºéœ€æ±‚酒店å**ï¼Œåªæ˜¾ç¤ºè¡Œç¨‹ï¼š`dayNumber` / `stayDate` / `city` / 房型 / é—´æ•° / 预算å³å¯ï¼ˆæŒ‰åé¦ˆã€Œåªæ˜¾ç¤ºè¡Œç¨‹å°±è¡Œã€ï¼‰ã€‚ +- 若需展示候选:用 `days[].segments[].candidates[]`,标「**候选 X/N(房控择一)**ã€ï¼Œ**ä¸è¦æ ‡ã€ŒåŒæ™šåˆ†ä½ X/Nã€**ã€‚ã€ŒåŒæ™šåˆ†ä½ã€åªé€‚用于 `segments.length > 1` 的场景(åŒä¸€æ™šä½å¤šå®¶ã€æˆ¿æ•°ç›¸åŠ ï¼‰ã€‚ + +## 4. å½±å“ / 兼容 + +- åŽç«¯çº¯åŠ æ€§ï¼ˆæ–°å¢ž `segments`/`hotelName`,ä¿ç•™ `hotels`),ä¸ç ´å现有å‰ç«¯ï¼›hotelId ç”±æ’ null å˜ä¸ºçœŸå€¼ï¼ˆä¿®å¤ï¼Œéžç ´å)。 +- å‰ç«¯æ”¹å®ŒåŽå›žæ˜¾åº”为:本例 = 第 1 晚(普通标间×1,¥380,候选:香格里拉/嘉世豪择一)ã€ç¬¬ 2 æ™šï¼ˆä¿„å¼æ ‡å‡†æˆ¿Ã—1,¥280,候选:瓦西里民宿/香格里拉择一)。 + +## 5. å…³è” + +- **åŽç«¯ PR**: [#4220](https://git.1814.love:8443/wx/HL/pulls/4220)(å‰ç«¯åé¦ˆé©±åŠ¨ï¼Œæ— å…³è” Issue) +- **åŽç«¯è´Ÿè´£äºº**: @wx | **å‰ç«¯**: @mmg +- 备注:「内部留言显示定制师需求ã€ä¸€é¡¹æ¶‰åŠç«™å†…ä¿¡/èŠå¤©ç³»ç»Ÿï¼ˆå½“å‰ deferred 等新原型),未纳入本次,由 wx å¦å®šã€‚