# FR-070 AI／Google Drive 憑證 DB 化與功能開通（需求草稿）

- **日期**：2026-09-02（user 拍板開新 FR）
- **狀態**：Phase 0 白話需求（brainstorm/design 未做）
- **緣起**：FR-069 收整期間調查「AI key 包版怎麼進去」發現：出貨物（image／安裝包／guidant.env）目前完全沒有 AI/Drive key 的進場機制——落地版裝完這兩類功能無 key 可用；而「包進出貨物」有洩漏風險（user 明確不要）。

## 白話需求

把 AI 供應商金鑰（Anthropic／OpenAI 等）與 Google Drive OAuth 憑證（CLIENT_ID/SECRET）從環境變數改為**存資料庫、由 UI 設定的功能開通機制**：

1. **儲存**：`system_configs` 既有表，新 group（如 `AI_CONFIG`；Drive 併入雲端整合設定群）。**加密落庫**照 DETECTION_TOOL_ENCRYPTION_KEY／DRIVE_TOKEN_ENCRYPTION_KEY 既有 pattern。
2. **設定 UI**：系統設定頁新區塊；金鑰欄位遮罩顯示（GuardedSystemConfigService 既有守門殼）。
3. **🔴 權限：只開放 admin tenant 設定**（user 拍板）——守門用既有軸① `require_platform_admin`（root tenant），不另立新軸。
4. **服務端讀取**：AI 服務（jedi-ai-bot／ai-dashboard 等）與 Drive 整合改「DB 優先、env fallback」（fallback 保 DEV 開發便利；正式環境以 DB 為準）。
5. **功能開通語意**：沒 key＝對應功能顯示「未開通」，不是壞掉；填了 key 即開通。
6. **出貨面**：key 從此不進 image／安裝包／guidant.env；POC 交付動線＝裝完機 → admin tenant 登入 → 設定頁貼 key（與上傳 license 同動線）。

## 邊界與既有資產

- 憑證進的是「值」，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 設定」一致。

## 未定事項（brainstorm 要談）

- AI key 是否分供應商多鍵、還是單一「啟用的供應商＋key」；用量/配額顯示要不要做
- Drive OAuth 換 key 時既有授權（refresh token）的遷移語意
- env fallback 要不要有落日條款
- FE 設定頁資訊架構（併儲存設定頁還是獨立頁）
