jim800121chen b73c9b7b7e fix(api): 裝置 detail endpoint tunnel 判定給獨立 3s ctx,修 R-3 誤判離線
裝置 detail endpoint(/api/devices/:id)原用單一 2s ctx,先跑 DeviceRepo.Get
殘餘時間才輪到打 relay 的 store.List → tunnel 狀態查詢逾時被靜默判離線
→ 影片分頁 R-3 誤擋上傳(列表頁 3s 判在線、詳情頁 2s 判離線,同裝置相反)。

修法:tunnel 判定改用獨立 ctx(源自 request context、完整 3s、defer cancel),
與 list 對齊;detail 原 2s ctx 保留給 DeviceRepo.Get。list 也一併改獨立 ctx。
未動 resolveTunnelStatus 的逾時判離線 fail-safe 語意,只給足夠時間。

加可觀測性 log(deadline_exceeded / no-matching / 命中三分支,不含敏感資訊),
供 stage 分辨「真逾時」vs「UserID 比對不中」。前端未動(行為正確)。

reviewer 通過(0C/0M)。build/vet/全套 test 綠 + 3 新 test(含 ctx 完整預算斷言)。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-30 18:18:34 +08:00
..