- 日期:2026-09-02(user 拍板開新 FR)
- 狀態:Phase 0 白話需求(brainstorm/design 未做)
- 緣起:FR-069 收整期間調查「AI key 包版怎麼進去」發現:出貨物(image/安裝包/guidant.env)目前完全沒有 AI/Drive key 的進場機制——落地版裝完這兩類功能無 key 可用;而「包進出貨物」有洩漏風險(user 明確不要)。
§1
白話需求
把 AI 供應商金鑰(Anthropic/OpenAI 等)與 Google Drive OAuth 憑證(CLIENT_ID/SECRET)從環境變數改為存資料庫、由 UI 設定的功能開通機制:
- 儲存:
system_configs 既有表,新 group(如 AI_CONFIG;Drive 併入雲端整合設定群)。加密落庫照 DETECTION_TOOL_ENCRYPTION_KEY/DRIVE_TOKEN_ENCRYPTION_KEY 既有 pattern。
- 設定 UI:系統設定頁新區塊;金鑰欄位遮罩顯示(GuardedSystemConfigService 既有守門殼)。
- 🔴 權限:只開放 admin tenant 設定(user 拍板)——守門用既有軸①
require_platform_admin(root tenant),不另立新軸。
- 服務端讀取:AI 服務(jedi-ai-bot/ai-dashboard 等)與 Drive 整合改「DB 優先、env fallback」(fallback 保 DEV 開發便利;正式環境以 DB 為準)。
- 功能開通語意:沒 key=對應功能顯示「未開通」,不是壞掉;填了 key 即開通。
- 出貨面:key 從此不進 image/安裝包/guidant.env;POC 交付動線=裝完機 → admin tenant 登入 → 設定頁貼 key(與上傳 license 同動線)。
§2
邊界與既有資產
- 憑證進的是「值」,schema 申報制(FR-069 記帳的第四階段議程)若屆時已成形,本 FR 為其 first case 之一;未成形也不阻塞,直接照 SMTP/ISSUE_INTEGRATE_CONFIG 先例做。
- 加密金鑰本身(*_ENCRYPTION_KEY)仍在 guidant.env(裝機生成)——DB 密文+env 金鑰兩件分離,單獨拿到一樣解不開。
- tenant-scoped:system_configs 已有 tenant_id;本 FR 的 AI/Drive 憑證屬系統級(root tenant 持有、全站共用),非各租戶自填——與「只開放 admin tenant 設定」一致。
§3
未定事項(brainstorm 要談)
- AI key 是否分供應商多鍵、還是單一「啟用的供應商+key」;用量/配額顯示要不要做
- Drive OAuth 換 key 時既有授權(refresh token)的遷移語意
- env fallback 要不要有落日條款
- FE 設定頁資訊架構(併儲存設定頁還是獨立頁)