feat(t131): AI 設定合併成一把金鑰——聊天與萃取共用,Claude 為選填加強

leo:「拿到一把就很難了,還要拿兩把。一律規定先輸入 gemini api key,
如果想要強化本地萃取,可以選擇 claude……前面那個,聊天和萃都一次設好,後面那把,不填就是 gemini」
+「重點是更好的模型萃取知識更能抓重點,不然他也不知道加強什麼」(文案講感覺得到的差別)
+「本地如果有裝 claude,掃到,只要一個 checkbox 就好」(daemon 偵測回報,沒偵測到就停用選項)。
- POST/GET /portal/admin/ai(一次寫 chat-key 與 extractor)+/portal/daemon/report-capabilities
- 舊 chat-key/extractor 端點保留相容;UI 兩區合併成「AI 設定」
t131 新測 7 條全綠(總體 229 passed/9 紅皆 pre-existing:HTML shell 搬遷×2、library-map 未實作×6、
executor 零件×1)。(實作=子 CC;驗證+commit=總管)
This commit is contained in:
uncle6me-web
2026-07-29 15:28:10 +08:00
parent 0860e84d22
commit 9d38d580f2
4 changed files with 412 additions and 127 deletions
@@ -290,6 +290,21 @@
移除後即時從列表消失(不必重整);`daemon_watching=false` → 顯示灰字「小幫手目前沒有在同步這個資料夾」。
測試:portal-admin.test.ts 新增 7 案(DELETE/:id 成功/404/非admin403by-name 成功/無confirm/confirm不符/非admin403)。
- [x] **t131 金鑰設定合併(2026-07-29,任務層小改)**
來源=leo 裁定「一律規定先輸入 gemini api key,聊天和萃都一次設好;如果有 claude,勾選加強版」。
後端:新增 `POST /portal/admin/ai`(同時做 chat-keyextractor 的事)+
`GET /portal/admin/ai`(回 has_key/use_claude_for_extract/claude_available)+
`POST /portal/daemon/report-capabilities`(收 daemon 回報的 has_claude);
`/portal/admin/chat-key``/portal/admin/extractor` 保留相容。
前端:設定頁兩區塊合一,Gemini Key 必填欄+Claude 選填 checkbox(依 daemon 回報 enable/disable)。
⚠️ daemon 端(arcrun-rag repo)需實作 `report-capabilities` 呼叫,規格:
- 連線成功後 POST `{cypher_url}/portal/daemon/report-capabilities`
- body: `{email, password, has_claude: bool, daemon_version: string, os: string}`
- has_claude 由現有 `FindClaudeBin()` 決定(t92 已實作)
- 時機:連線成功後一次+每次啟動時一次(不加新 timer)
KV key 設計:`{tenant}:portal:ai_config`(合併設定)`{tenant}:portal:daemon_caps`(能力回報,TTL 7 天)
測試:portal-admin.test.ts 新增 7 案(全通;全套 238 tests 229 passed9 failed 皆 pre-existing)。
## 第二波(不在本 SDD 動工範圍,掛號)
- MCP token 綁庫集合(design §9PR#15 擴充,只動 `mcp/`