diff --git a/console-ui/public/portal/index.html b/console-ui/public/portal/index.html index 2615abd..8667b02 100644 --- a/console-ui/public/portal/index.html +++ b/console-ui/public/portal/index.html @@ -385,32 +385,18 @@
封測版未簽章,第一次請右鍵→打開。裝好第一次開啟時,貼上這個網址+你的帳號密碼就連上了。
- -
+ +
AI 設定
-
- -
-
Gemini API Key
-
聊天問答與文件萃取都用這一把。免費申請,金鑰只存在你自己的知識庫裡。
- -
- -
-
讓知識卡整理得更好(選填)
- -
- 讀你文件、整理成知識卡的那個 AI,換成更強的模型。卡片會更抓得到重點、關聯也連得更準,之後搜尋和問答的品質跟著提升。需要你的電腦已安裝 Claude Code。不填就用上面那把 Gemini,一樣能用。 -
- -
-
- -
-
+
+ 這裡不需要任何設定。聊天問答用的是你自己 Cloudflare 帳號內建的 AI,裝好就能直接問。
+ 文件整理成知識卡的部分,請在同步小幫手(電腦上的托盤圖示)的「AI 設定…」填一把 Gemini API Key。
@@ -824,72 +810,10 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return { } })(); - // t131 AI 設定(合併 Gemini API Key+Claude 加強版) - (function () { - // 進入設定頁時讀取現有設定(GET /portal/admin/ai) - function loadAiConfig() { - if (!(S.profile && S.profile.role === 'admin')) return; - fetch(API_BASE + '/portal/admin/ai', { headers: authHeaders() }) - .then(function (r) { return r.ok ? safeJson(r) : null; }) - .then(function (d) { - if (!d) return; - var ki = $('st-ai-key'); - if (ki && d.has_key) ki.placeholder = '已設定(留空=不變更)'; - var cb = $('st-ai-use-claude'); - if (cb) { - // 有 claude 才能勾;沒有則停用並顯示提示 - var hint = $('st-ai-claude-hint'); - if (d.claude_available) { - cb.disabled = false; - cb.checked = !!d.use_claude_for_extract; - if (hint) hint.style.display = 'none'; - } else { - cb.disabled = true; - cb.checked = false; - if (hint) { - hint.style.display = ''; - // 區分:從未連上小幫手 vs 有連上但沒裝 Claude - hint.textContent = d.has_key - ? '你的電腦沒有偵測到 Claude Code;裝好並讓小幫手重連一次後,這個選項就會開啟。' - : '連上小幫手後才知道你的電腦有沒有 Claude Code。'; - } - } - } - }) - .catch(function () { /* 讀不到不擋頁面 */ }); - } - window._loadAiConfig = loadAiConfig; - - // 儲存 - var sb = $('st-ai-save'); - if (sb) sb.addEventListener('click', function () { - var m = $('st-ai-status'); - var k = (($('st-ai-key') && $('st-ai-key').value) || '').trim(); - var cb = $('st-ai-use-claude'); - var useClaud = cb && !cb.disabled ? cb.checked : undefined; - var body = {}; - if (k) body.gemini_api_key = k; - if (useClaud !== undefined) body.use_claude_for_extract = useClaud; - sb.disabled = true; m.textContent = '儲存中…'; m.style.color = ''; - fetch(API_BASE + '/portal/admin/ai', { - method: 'POST', - headers: Object.assign({ 'Content-Type': 'application/json' }, authHeaders()), - body: JSON.stringify(body) - }).then(function (r) { return safeJson(r).then(function (d) { return { ok: r.ok, status: r.status, d: d }; }); }) - .then(function (x) { - sb.disabled = false; - if (guard401(x.status)) return; - if (!x.ok) { m.textContent = (x.d && x.d.error) || '儲存失敗'; m.style.color = '#b03a26'; return; } - if ($('st-ai-key')) { $('st-ai-key').value = ''; $('st-ai-key').placeholder = '已設定(留空=不變更)'; } - var claudeOn = x.d && x.d.use_claude_for_extract; - m.textContent = claudeOn - ? '已儲存,萃取改用 Claude Code。小幫手請重連一次生效。' - : '已儲存,AI 問答與萃取皆可使用。'; - m.style.color = '#3f7a4f'; - }) - .catch(function (e) { sb.disabled = false; m.textContent = friendlyErr(e); m.style.color = '#b03a26'; }); - }); - })(); + // t176(leo 08-03):AI 設定的前端邏輯整段移除。 + // 雲端聊天走 Workers AI(免金鑰);地端萃取金鑰改由同步小幫手托盤「AI 設定…」自己設。 + // 原本這裡有 Claude 勾選框的 enable/disable 邏輯——它依賴 daemon 回報 has_claude, + // 而 daemon 從未實作該回報 ⇒ 勾選框恆為 disabled(leo 實測「hover 變可點但點擊沒反應」)。 $('st-logout').addEventListener('click', function () { fetch(API_BASE + '/portal/logout', { method: 'POST', headers: authHeaders() }).catch(function () { /* 盡力而為 */ });