93b1140bf1
InkStoneCo 總管交辦(arcrun-rag repo t213):leo 拿真診斷檔實測四個真實問題,只答得出一題 ——其餘三題需要地端資料(daemon 本機 manifest 總量/失敗分類/自我更新狀態),而現有 GET /portal/data/diagnostics 只有 portal session 認證,daemon 背景行程沒有 session (密碼只在連線精靈當下用過就丟,不落地),構不到這支端點。 本次只做 matrix/arcrun 半部(雲端這半): - 把 /portal/data/diagnostics 的核心查詢邏輯抽成 buildDiagnostics(env, tenant) (portal.ts),薄殼原則:能力只實作一次 - 新增 GET /portal/daemon/diagnostics,認證比照既有 /portal/daemon/extract (X-Arcrun-API-Key,非 session);apiKey 當 owner_id 用,不與 portalTenant(env) 比對(t189 教訓:daemon 的 api_key 不保證等於 worker 的 CONSOLE_TENANT) - /portal/data/diagnostics 改呼叫共用函式,回應形狀完全不變 - 按 leo 指示刪掉「需在失敗當下由封測者截圖」那句 notes(本機那半資料到位後這句話 失去意義) 地端那半(arcrun-app 讀 manifest 合併 + 匯出按鈕)在 products/arcrun-rag repo 進行, 待另一隻處理 t210 的 agent 落地 app.go/main.js 改動後再接線,本次不動 arcrun-app。 驗證: - npx tsc --noEmit:與 stash 前錯誤數相同(4 個),零新增(pre-existing,與本次改動無關) - npx vitest run:314→315 通過(+3 新測試涵蓋 401/apiKey 當 owner_id 不比對 tenant/ 回應形狀與 session 版一致),14 個既有失敗與改動前完全相同(HTML 殼 404,測試環境 static asset 問題,與 portal.ts/portal-data.ts 邏輯無關) Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>