From 7ee03a8399b11b18d101115a3601df60d267dc8e Mon Sep 17 00:00:00 2001 From: API Changelog Bot Date: Sun, 28 Jun 2026 10:09:59 +0800 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20=E6=88=BF=E5=8A=A1E2E?= =?UTF-8?q?=E6=8F=AA=E5=87=BA3=20bug=E4=BF=AE=E5=A4=8D=E5=AF=B9=E6=8E=A5(#?= =?UTF-8?q?4491=E6=94=B9=E5=A4=A9=E6=95=B0=E7=BA=A7=E8=81=94/#4492?= =?UTF-8?q?=E5=8F=8D=E5=BA=8F=E8=81=8A=E5=A4=A9/#4529=E5=88=87=E8=A7=92?= =?UTF-8?q?=E8=89=B2token)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- ...天级è”é‡ç½®é…’åº—é…æˆ¿è¿˜åŽŸåº“å­˜_å‰ç«¯å¯¹æŽ¥-管ç†åŽå°.md | 31 +++++++++++++++++++ ...¢å•åŽå®šåˆ¶å¸ˆå¼€èŠå¤©ä¼šè¯ä¸é€šå·²ä¿®_知悉-管ç†åŽå°.md | 24 ++++++++++++++ ...§’色与刷新token原å­ä¿å­˜_å‰ç«¯å¿…改-管ç†åŽå°.md | 26 ++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 changelogs-v2/2026-06/36_4491_改行程天数å‡å¤©çº§è”é‡ç½®é…’åº—é…æˆ¿è¿˜åŽŸåº“å­˜_å‰ç«¯å¯¹æŽ¥-管ç†åŽå°.md create mode 100644 changelogs-v2/2026-06/37_4492_房务先抢å•åŽå®šåˆ¶å¸ˆå¼€èŠå¤©ä¼šè¯ä¸é€šå·²ä¿®_知悉-管ç†åŽå°.md create mode 100644 changelogs-v2/2026-06/38_4529_切角色与刷新token原å­ä¿å­˜_å‰ç«¯å¿…改-管ç†åŽå°.md diff --git a/changelogs-v2/2026-06/36_4491_改行程天数å‡å¤©çº§è”é‡ç½®é…’åº—é…æˆ¿è¿˜åŽŸåº“å­˜_å‰ç«¯å¯¹æŽ¥-管ç†åŽå°.md b/changelogs-v2/2026-06/36_4491_改行程天数å‡å¤©çº§è”é‡ç½®é…’åº—é…æˆ¿è¿˜åŽŸåº“å­˜_å‰ç«¯å¯¹æŽ¥-管ç†åŽå°.md new file mode 100644 index 0000000..14b4d55 --- /dev/null +++ b/changelogs-v2/2026-06/36_4491_改行程天数å‡å¤©çº§è”é‡ç½®é…’åº—é…æˆ¿è¿˜åŽŸåº“å­˜_å‰ç«¯å¯¹æŽ¥-管ç†åŽå°.md @@ -0,0 +1,31 @@ +# 改行程天数(å‡å¤©)级è”é‡ç½®é…’åº—é…æˆ¿ + 还原库存(å‰ç«¯å¯¹æŽ¥ï¼‰ + +> 模å—:订å•调整(adjustment)/ æˆ¿åŠ¡é…æˆ¿ï¼ˆç®¡ç†åŽå°ï¼‰ +> 类型:åŽç«¯ bug ä¿®å¤ï¼ˆPR #4491 å·²åˆ dev-v3 + 测试æœå®žæµ‹ç”Ÿæ•ˆï¼‰+ **å‰ç«¯éœ€é…åˆä¸€é¡¹** +> 日期:2026-06-28 + +## 背景 / 修了什么 + +定制师调整订å•**å‡å°‘行程天数**åŽï¼ŒåŽŸå…ˆæˆ¿åŠ¡ä¾§ã€Œè¶…å‡ºæ–°å¤©æ•°èŒƒå›´é‚£å‡ æ™šã€çš„已酿ˆ¿ + 已扣 resource 库存**完全ä¸è¢«æ¸…ç†ã€æ°¸ä¹…泄æ¼**(2 å¤©è¡Œç¨‹å´æŒ‚ç€ 3 æ™šé…’åº—é…æˆ¿ã€ç¬¬ 3 晚库存永久å ç”¨ï¼‰ã€‚ + +现已修å¤ï¼ˆä¸Žã€Œæ”¹å‡ºå‘日期ã€åŒæ¬¾çº§è”):å‡è¡Œç¨‹å¤©æ•°æäº¤åŽï¼ŒåŽç«¯è‡ªåЍ +- **è½¯åˆ è¶…å‡ºæ–°èŒƒå›´çš„é…’åº—é…æˆ¿è¡Œ** + **还原对应 resource 库存**ï¼› +- 把该订å•的酒店需求**é‡ç‰ˆå›žæŠ¢å•æ± **ï¼ˆå›žåˆ°ã€Œå¾…é…æˆ¿ã€ï¼‰ï¼Œæˆ¿åС釿–°è®¤é¢†/é…æˆ¿ï¼› +- è®¢å• room_control 回 PENDINGã€ç”Ÿæˆã€Œéœ€æ±‚å˜æ›´(REQUIREMENT_ADJUSTED)ã€å¾…办。 + +测试æœå®žæµ‹ï¼š4 天 3 æ™šâ†’é… 3 晚确认(扣库存)→å‡åˆ° 2 天 → 第 3 晚 3 è¡Œé…æˆ¿å…¨è½¯åˆ ã€`stock_used` 还原ã€éœ€æ±‚å›žã€Œå¾…é…æˆ¿ã€ã€‚ + +## å‰ç«¯éœ€é…åˆï¼ˆ1 项) + +**å‡è¡Œç¨‹å¤©æ•°æ—¶ï¼Œè¯·åŒæ—¶ä¸‹å‘è£å‰ªåŽçš„酒店需求 `hotelRequirement.days`(åªä¿ç•™æ–°å¤©æ•°èŒƒå›´å†…的晚)。** + +- åŽç«¯åº“存泄æ¼å·²å½»åº•ä¿®å¤ï¼ˆè¶…èŒƒå›´é…æˆ¿è½¯åˆ  + 库存还原,与å‰ç«¯æ˜¯å¦ä¸‹å‘è£å‰ªæ— å…³ï¼‰ã€‚ +- 但若å‰ç«¯å‡å¤©æ•°æ—¶**åªæ”¹ itineraryã€ä¸åŒæ­¥ä¸‹å‘è£å‰ªåŽçš„ `hotelRequirement.days`**,则é‡ç‰ˆåŽçš„æ–°ã€Œå¾…é…æˆ¿ã€éœ€æ±‚çš„ days 模æ¿ä»å«ã€Œé‚£ä¸€æ™šã€çš„天æ¡ç›®ï¼ˆä¸å½±å“库存ã€ä¸å½±å“ active é…æˆ¿=0ï¼Œä»…æˆ¿åŠ¡é‡æ–°é…房时会多看到一晚空档)。å‰ç«¯åŒæ­¥è£å‰ªå³å®Œå…¨å¯¹é½ã€‚ + +å¦ï¼šè¯·ç¡®è®¤å‰ç«¯ã€Œæ”¹è¡Œç¨‹å¤©æ•°ã€å…¥å£å¯¹ CORE(短途/å®šåˆ¶ï¼‰äº§å“æ˜¯å¦å¼€æ”¾ï¼›æœ¬ä¿®å¤å¯¹ä»»ä½•å‡å¤©æ•°è·¯å¾„都生效。 + +## å½±å“æŽ¥å£ +- `POST /v3/admin/order/{orderId}/adjustment/submit`(itinerary å‡å¤©æ•°åˆ†æ”¯ï¼Œè¡Œä¸ºå¢žå¼ºï¼Œå…¥å‚结构ä¸å˜ï¼‰ +- 房务侧详情/日历/待办éšä¹‹åæ˜ ï¼ˆéœ€æ±‚å›žå¾…é…æˆ¿ã€åº“存释放ã€REQUIREMENT_ADJUSTED 待办) + +åŽç«¯æ— éœ€å‰ç«¯æ”¹å³ä¸å†æ³„æ¼åº“存;å‰ç«¯é…åˆä¸‹å‘è£å‰ª days å¯è®©é‡é…体验完全一致。 diff --git a/changelogs-v2/2026-06/37_4492_房务先抢å•åŽå®šåˆ¶å¸ˆå¼€èŠå¤©ä¼šè¯ä¸é€šå·²ä¿®_知悉-管ç†åŽå°.md b/changelogs-v2/2026-06/37_4492_房务先抢å•åŽå®šåˆ¶å¸ˆå¼€èŠå¤©ä¼šè¯ä¸é€šå·²ä¿®_知悉-管ç†åŽå°.md new file mode 100644 index 0000000..59c0327 --- /dev/null +++ b/changelogs-v2/2026-06/37_4492_房务先抢å•åŽå®šåˆ¶å¸ˆå¼€èŠå¤©ä¼šè¯ä¸é€šå·²ä¿®_知悉-管ç†åŽå°.md @@ -0,0 +1,24 @@ +# 房务先抢å•ã€å®šåˆ¶å¸ˆåŽå¼€èŠå¤©ã€Œä¼šè¯ä¸é€šã€å·²ä¿®ï¼ˆå‰ç«¯çŸ¥æ‚‰ï¼Œæ— éœ€æ”¹åŠ¨ï¼‰ + +> 模å—:站内信èŠå¤©ï¼ˆæˆ¿åŠ¡è®¢å•会è¯ï¼‰/ 管ç†åŽå° +> 类型:åŽç«¯ bug ä¿®å¤ï¼ˆPR #4492 å·²åˆ dev-v3 + 测试æœå®žæµ‹ç”Ÿæ•ˆï¼‰â€”— **å‰ç«¯æ— éœ€æ”¹åŠ¨ï¼Œé€æ˜Žä¿®å¤** +> 日期:2026-06-28 + +## 背景 / 修了什么 + +房务订å•ä¼šè¯æ­¤å‰æœ‰ä¸ª**ååºæ–­é“¾**(最常è§çš„生产顺åºä¸­æ‹›ï¼‰ï¼š + +- åºA(原本 OK):定制师**å…ˆ**å¼€èŠå¤©ï¼ˆæŠ¢å•å‰ï¼‰â†’ 房务**åŽ**æŠ¢å• â†’ æŠ¢å•æ—¶è¡¥é½ä¼šè¯ → èŠå¤©æ­£å¸¸ã€‚ +- åºBï¼ˆåŽŸæœ¬æ–­ã€æœ€å¸¸è§ï¼‰ï¼šæˆ¿åŠ¡**å…ˆ**æŠ¢å• â†’ 定制师**åŽ**点「è”系房务ã€å¼€èŠå¤© → 因为定制师ä¸çŸ¥é“房务是è°ã€ä¸ä¼ å¯¹ç«¯ï¼ŒåŽç«¯åªæŒ‚了个å ä½å¯¹ç«¯ï¼ˆpeer=0)→ **定制师å‘çš„æ¶ˆæ¯æˆ¿åŠ¡æ°¸è¿œæ”¶ä¸åˆ°ã€æˆ¿åŠ¡è¯»æ¶ˆæ¯è¢«æ‹’(281002)ã€â‘£æœªè¯»æ¶ˆæ¯å¾…办永ä¸è§¦å‘**。 + +现已修å¤ï¼šå®šåˆ¶å¸ˆå¼€æˆ¿åŠ¡ä¼šè¯æ—¶ï¼Œ**åŽç«¯è‡ªåŠ¨æŒ‰è®¢å•åæŸ¥å½“剿ޥ啿ˆ¿åŠ¡**ä½œä¸ºçœŸå®žå¯¹ç«¯ï¼Œå»ºå‡ºåŒæ–¹çœŸå®žä¼šè¯æˆå‘˜è¡Œã€‚无论「定制师先开ã€è¿˜æ˜¯ã€Œæˆ¿åŠ¡å…ˆæŠ¢ã€ï¼ŒèŠå¤©éƒ½æ­£å¸¸è¿žé€šã€‚ + +测试æœå®žæµ‹ï¼ˆåºBï¼‰ï¼šæˆ¿åŠ¡å…ˆæŠ¢å• â†’ 定制师 open-house(ä¸ä¼ å¯¹ç«¯ï¼‰â†’ åŽç«¯è§£æžåˆ°æˆ¿åŠ¡ → åŒæ–¹æˆå‘˜è¡Œå»ºå‡º → å®šåˆ¶å¸ˆå‘æ¶ˆæ¯ → 房务 `unread_count=1` → æˆ¿åŠ¡è¯»æ¶ˆæ¯ 200(ä¸å† 281002)→ ④未读消æ¯å¾…办触å‘。 + +## å‰ç«¯ + +**无需改动**。`POST /admin/chat/open-house` å…¥å‚/出å‚结构ä¸å˜ï¼›å‰ç«¯**ä¼ ä¸ä¼ å¯¹ç«¯ `peerAdminId` 都å¯**(ä¸ä¼ /ä¼ å ä½æ—¶ç”±åŽç«¯å查解æžï¼‰ã€‚原本在「房务先抢å•ã€é¡ºåºä¸‹èŠä¸é€šçš„é—®é¢˜çŽ°å·²é€æ˜Žä¿®å¤ã€‚ + +## å½±å“æŽ¥å£ +- `POST /admin/chat/open-house`(行为增强:peer 缺çœ/å ä½æ—¶åŽç«¯åæŸ¥å½“å‰æˆ¿åŠ¡ claimerï¼Œå‡ºå‚ `peerAdminId/peerName/peerRole` 现会带真实房务) +- è·¨æœåŠ¡ï¼šorder-v3 `chat-summary-batch` 内部接å£å“应补 `claimerId`(å‰ç«¯ä¸æ„ŸçŸ¥ï¼‰ diff --git a/changelogs-v2/2026-06/38_4529_切角色与刷新token原å­ä¿å­˜_å‰ç«¯å¿…改-管ç†åŽå°.md b/changelogs-v2/2026-06/38_4529_切角色与刷新token原å­ä¿å­˜_å‰ç«¯å¿…改-管ç†åŽå°.md new file mode 100644 index 0000000..47647ae --- /dev/null +++ b/changelogs-v2/2026-06/38_4529_切角色与刷新token原å­ä¿å­˜_å‰ç«¯å¿…改-管ç†åŽå°.md @@ -0,0 +1,26 @@ +# 切角色 / 刷新令牌「掉登ã€å·²ä¿® + å‰ç«¯å¿…改一项(原å­ä¿å­˜ token) + +> 模å—:admin 鉴æƒï¼ˆhl-user-service)/ 管ç†åŽå° +> 类型:åŽç«¯ bug ä¿®å¤ï¼ˆPR #4529 å·²åˆ dev-v3 + 测试æœå®žæµ‹ç”Ÿæ•ˆï¼‰+ **å‰ç«¯å¿…改一项加固** +> 日期:2026-06-28 + +## 背景 / 修了什么(åŽç«¯ï¼‰ + +两个掉登 bug 已修: + +- **Bug1(切角色被登出)**:超管切到「房务ã€ç­‰è§’色åŽåˆ·æ–°é¡µé¢æŠ¥ã€Œåˆ·æ–°ä»¤ç‰Œæ— æ•ˆæˆ–已过期ã€è¢«è¸¢å›žåŽŸè§’è‰²ã€‚æ ¹å› ï¼šåˆ‡è§’è‰²ä¼šè½®è½¬ refresh 令牌ã€ä½¿æ—§ refresh ç«‹å³å¤±æ•ˆï¼Œå‰ç«¯è‹¥æ²¡å­˜ä½æ–° refresh 就被登出。 + - åŽç«¯ä¿®å¤ï¼š**切角色ä¸å†è½®è½¬ refresh**ï¼ˆåªæ¢å‘带新角色的 access,refresh å¤ç”¨ã€ä¿æŒæœ‰æ•ˆï¼‰ã€‚å³ä½¿å‰ç«¯ä¸æ”¹ä¹Ÿä¸ä¼šå†å› åˆ‡è§’色被登出。 +- **Bug2(刷新å¶å‘掉登)**:整页刷新å¶å‘「刷新令牌无效或已过期ã€ã€‚根因:refresh 校验与续期éžåŽŸå­ï¼Œå¹¶å‘刷新读到中间æ€ã€‚ + - åŽç«¯ä¿®å¤ï¼šrefresh 校验+续期改为 Redis åŽŸå­æ‰§è¡Œï¼Œå¹¶å‘刷新ä¸å†è¯¯åˆ¤ã€‚ + +测试æœå®žæµ‹ï¼šåˆ‡è§’色åŽç”¨åŽŸ refresh 刷新 200ï¼ˆä¸æŽ‰ç™»ï¼‰ï¼›åŒä¸€ refresh å¹¶å‘ 3 次刷新全 200;切「定制师/房务ã€å›žå½’全正常。 + +## å‰ç«¯å¿…改(1 项加固) + +**切角色 `POST /admin/auth/switch-role` 与刷新 `POST /admin/auth/refresh` çš„å“应里,`token`(access) 与 `refreshToken` è¦åŽŸå­åœ°ä¸€èµ·ä¿å­˜**ï¼ˆä¸¤è€…åŒæ—¶è½æœ¬åœ°å­˜å‚¨ï¼Œé¿å…åªå­˜å…¶ä¸€ï¼‰ï¼Œåˆ‡è§’色åŽç”¨å“应里的新 `token` è°ƒåŽç»­æŽ¥å£ã€‚ + +- 说明:åŽç«¯æ¯æ¬¡ switch-role / refresh 都æ¢å‘**æ–° access**并把旧 access 轮转出(access 白åå• last-issued-wins)。所以切角色/刷新åŽ**必须改用å“应里的新 access**,旧 access ä¼šå¤±æ•ˆï¼ˆè¿™æ˜¯æ—¢æœ‰è®¾è®¡ï¼Œéžæœ¬æ¬¡æ”¹åŠ¨ï¼‰ã€‚æœ¬æ¬¡ä¿®å¤ä¿è¯çš„æ˜¯ **refresh ä¸ä¼šå› åˆ‡è§’色失效**,刷新链路稳定。 + +## å½±å“æŽ¥å£ +- `POST /admin/auth/switch-role`(行为:refresh ä¸å†è½®è½¬ï¼›å“应结构ä¸å˜ï¼‰ +- `POST /admin/auth/refresh`(行为:校验+续期原å­åŒ–ï¼›å“应结构ä¸å˜ï¼‰