chore(changelog): 22_frontend 空 id 塌缩交接件回写 verified(ref b7c20a81)
changelog-filename-gate / validate (push) Failing after 2s

这个提交包含在:
Mimingguang
2026-09-22 10:34:40 +08:00
父节点 ea7a01e674
当前提交 66d2737a3d
@@ -7,14 +7,14 @@ author: "wx(GIT)"
change_type: "前端缺陷"
backend_status: "deployed"
gateway_status: "not_required"
frontend_status: "pending"
frontend_owner: ""
frontend_ref: ""
target_release: ""
verified_at: ""
frontend_status: "verified"
frontend_owner: "mmg"
frontend_ref: "b7c20a81945f986f9e5edc6e09adbe5da93220d4"
target_release: "v2.1"
verified_at: "2026-09-22"
updated_at: "2026-09-22"
base: dev-v3
status_note: "2026-09-22 测试服 test.1814.love:9443 实测:账号 admin/团期管理员从团期详情页切换到 /notification/my-messages 后弹出三条报错(两条 400『参数 groupBatchId 格式错误』+ 一条 404『接口不存在』)。order-v3 日志(8186/8086 两实例,09:06:44/50)显示 MethodArgumentTypeMismatchException 收到 value=requirement-summary/vehicle-requirement,NoHandlerFoundException 命中 GET /v3/admin/order/group-batch/requirement/hotel-households;同一时段 09:06:48 带真实 id 的请求全部成功,hl-gateway 两实例 0 条路由未命中记录。根因是前端 order-v2/batch/detail/index.vue 用 computed(() => decodeURIComponent(String(route.params.code || ''))) 反应式推导 id,该页 keep-alive 缓存,切到消息中心(meta keepAlive/hidden/noTabs)后 route.params.code 变 undefined,id 求值为空串;『查看需求』Tab 下 RoomSummarySection/RoomHouseholdsSection/GroupVehicleRequirementSection 三个 watcher 缺空值守卫,重放请求把空串拼进本该是路径参数的位置,导致两个后缀字面量落进 GET /v3/admin/order/group-batch/{groupBatchId}(A2 团期详情)的 groupBatchId 位,另一个因少了中间段直接 404。同页 DisbandBanner 组件已有判空守卫,调用全程 200,是本页面内的阳性对照。三条后端接口路径/参数/权限码均未变更、已在测试服部署并正常工作;既有交接件 10_7316/15_7441/20_8046 记录的实现与本次核对一致。建议修法:三个子组件 watcher 照 DisbandBanner 写法补判空;或详情页不用 useRoute() 反应式推导 code,改挂载时快照/onDeactivated 停 watcher。同页 confirm-check/orders/status-logs 三个 Tab 本次未复现报错,是否另有 active 门控,列为待排查项。"
status_note: "2026-09-22 测试服 test.1814.love:9443 实测:账号 admin/团期管理员从团期详情页切换到 /notification/my-messages 后弹出三条报错(两条 400『参数 groupBatchId 格式错误』+ 一条 404『接口不存在』)。order-v3 日志(8186/8086 两实例,09:06:44/50)显示 MethodArgumentTypeMismatchException 收到 value=requirement-summary/vehicle-requirement,NoHandlerFoundException 命中 GET /v3/admin/order/group-batch/requirement/hotel-households;同一时段 09:06:48 带真实 id 的请求全部成功,hl-gateway 两实例 0 条路由未命中记录。根因是前端 order-v2/batch/detail/index.vue 用 computed(() => decodeURIComponent(String(route.params.code || ''))) 反应式推导 id,该页 keep-alive 缓存,切到消息中心(meta keepAlive/hidden/noTabs)后 route.params.code 变 undefined,id 求值为空串;『查看需求』Tab 下 RoomSummarySection/RoomHouseholdsSection/GroupVehicleRequirementSection 三个 watcher 缺空值守卫,重放请求把空串拼进本该是路径参数的位置,导致两个后缀字面量落进 GET /v3/admin/order/group-batch/{groupBatchId}(A2 团期详情)的 groupBatchId 位,另一个因少了中间段直接 404。同页 DisbandBanner 组件已有判空守卫,调用全程 200,是本页面内的阳性对照。三条后端接口路径/参数/权限码均未变更、已在测试服部署并正常工作;既有交接件 10_7316/15_7441/20_8046 记录的实现与本次核对一致。建议修法:三个子组件 watcher 照 DisbandBanner 写法补判空;或详情页不用 useRoute() 反应式推导 code,改挂载时快照/onDeactivated 停 watcher。同页 confirm-check/orders/status-logs 三个 Tab 本次未复现报错,是否另有 active 门控,列为待排查项。 前端修复(2026-09-22): 已交付 hl-admin b7c20a81——三个组件(RoomSummarySection/RoomHouseholdsSection/GroupVehicleRequirementSection)load() 首行照阳性对照 DisbandBanner 补 if(!props.groupBatchId) return 空值守卫,watcher/immediate/reload 统一被拦;待排查项实证闭环:ItineraryTab/SuppliesPanel/RoomPlansTab/FinanceTab/StatusLogsPanel/OverviewTab 本就有 active&&id 或 if(id) 守卫,RequirementTab 只 watch active 不在塌缩链路;三 spec 各补塌缩不重放/恢复重拉/首开空 id 不拉取回归(Vitest 定向 42/42,checkpoint 全绿)。"
---
# 团期详情页切走后重放请求导致 groupBatchId 塌缩(前端侧修复)