From d58a6e152d3eea1fd68235ed2e82920a21182b34 Mon Sep 17 00:00:00 2001 From: uncle6me-web Date: Wed, 12 Aug 2026 14:44:38 +0800 Subject: [PATCH] =?UTF-8?q?fix(portal):=20=E5=AE=89=E8=A3=9D=E5=AE=8C?= =?UTF-8?q?=E6=88=90=E6=B8=85=E5=96=AE=E6=8B=BF=E6=8E=89=E3=80=8C=E5=8E=BB?= =?UTF-8?q?=20Google=20=E7=94=B3=E8=AB=8B=20AI=20=E9=87=91=E9=91=B0?= =?UTF-8?q?=E3=80=8D=E9=82=A3=E4=B8=80=E9=A0=85=EF=BC=88arcrun-rag#81?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit leo 2026-08-12:「已經改用 workers AI,刪掉。」 那一項長在**安裝完成清單裡而且是勾選項** ⇒ 使用者會以為不做這步就沒裝完, 而它要人離開流程、去第三方網站申請帳號、把金鑰貼進表單 ——**這是整條安裝路徑上最重的一個動作,而它現在是白做的**。 連帶:步數不再寫死「還差 2 步」,改成由剩下的項目算出來 (少一項卻還寫 2,是另一種說謊)。 --- console-ui/public/portal/index.html | 49 ++++++++++++++--------------- 1 file changed, 23 insertions(+), 26 deletions(-) diff --git a/console-ui/public/portal/index.html b/console-ui/public/portal/index.html index 06ed13c..70694ec 100644 --- a/console-ui/public/portal/index.html +++ b/console-ui/public/portal/index.html @@ -1108,7 +1108,9 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return { } })(); - // ── t53 完成安裝清單(進站必見,三件做完才消失)───────────────────────────── + // ── t53 完成安裝清單(進站必見,做完才消失)─────────────────────────────── + // 件數演進:t53 三件 → t54 兩件(設定檔改由小幫手憑帳密自取) + // → arcrun-rag#81 一件(AI 問答改走 Workers AI,不再要用戶自備金鑰)。 function setupSteps() { try { return JSON.parse(localStorage.getItem('arcrun_setup_steps') || '{}'); } catch (e) { return {}; } } @@ -1123,7 +1125,10 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return { var p = S.profile || {}; if (p.role !== 'admin') return; var s = setupSteps(); - if (s.daemon && s.key) return; // t54 起只剩兩件:設定改由小幫手輸入帳密自取,不再下載檔案 + // arcrun-rag#81(leo 08-12:「已經改用 workers AI,刪掉」):只剩「下載小幫手」一件。 + // 舊的 s.key(貼 Google AI 金鑰)已整條移除,見下方 innerHTML 處的說明。 + // 相容:舊瀏覽器 localStorage 裡殘留的 s.key 不再被讀 —— 沒設過 key 的人也不會被卡住。 + if (s.daemon) return; // t54 起設定改由小幫手輸入帳密自取,不再下載檔案 var cfg = window.ARCRUN_CONFIG || {}; var dpick = daemonPick(); // t72 OS 分流(同一組判定,見上面 daemonPick) var daemonUrl = dpick.sure ? dpick.pick.url : dpick.mac.url; @@ -1134,7 +1139,20 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return { var el = document.createElement('div'); el.id = 'setup-checklist'; el.style.cssText = 'position:fixed;right:20px;bottom:20px;z-index:60;max-width:400px;width:calc(100% - 40px);padding:18px 20px;border-radius:14px;background:rgba(var(--amber-rgb),.10);border:1px solid rgba(var(--amber-rgb),.45);backdrop-filter:blur(8px);font-size:14px;line-height:1.65'; - el.innerHTML = '還差 ' + (2 - (s.daemon?1:0) - (s.key?1:0)) + ' 步,安裝就真的完成了' + // 🔴 arcrun-rag#81(leo 08-12):第二項「啟用 AI 問答(貼 Google AI 金鑰)」整條刪除。 + // 為什麼不是「一個沒用的欄位」而已:它長在**安裝完成清單裡而且是勾選項** + // ⇒ 用戶會以為不做這步就沒裝完,而它要人離開流程、去第三方網站申請帳號、 + // 把金鑰貼進表單——整條安裝路徑上最重的一個動作,而且是白做的。 + // 真相:雲端問答走 t181(08-04)改好的 Workers AI(`env.AI` binding,免金鑰)—— + // /portal/data/chat → tenant 的 rag_chat workflow → `workers_ai_chat` recipe + // (api-recipe-seeds.ts:150,endpoint `@cf/meta/llama-4-scout-17b-16e-instruct`)。 + // 這裡貼的金鑰是打 POST /portal/admin/ai 存一筆雲端 gemini_api_key credential, + // **現行問答鏈路一個地方都沒有讀它**。 + // 後端 route 本身不動(同 08-09 拿掉檢修孔按鈕的處置:端點無害、已無任何 UI 呼叫, + // 純粹清路標);已經存過金鑰的人那筆 credential 也原封不動,不做刪除。 + // ⚠️ 別把這個跟設定頁「AI 設定」面板講的地端萃取金鑰搞混——那把是填在 + // **同步小幫手**托盤裡的,從來不經過這個清單。 + el.innerHTML = '還差 1 步,安裝就真的完成了' + row(s.daemon, 'daemon', '下載同步小幫手(把資料夾變成知識庫)
' + (daemonUrl @@ -1156,34 +1174,13 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return { // t54(leo:「最好的就是把它的帳密直接輸入」):設定不再是一個要下載的檔案—— // 小幫手第一次開啟會問網址+帳密,自己去換設定。 + '
裝好第一次開啟時,貼上這個網址+你的帳號密碼就連上了,不用下載設定檔。
') - + row(s.key, 'key', - '啟用 AI 問答aistudio.google.com 免費申請)
' - + ' ' - + '' - + '
') + '
'; document.body.appendChild(el); var dl = document.getElementById('sc-daemon'); if (dl) dl.addEventListener('click', function () { markStep('daemon'); }); // t54:config.json 下載鈕已移除(設定由小幫手憑帳密自取) - var kb = document.getElementById('sc-key-save'); - if (kb) kb.addEventListener('click', function () { - var k = (document.getElementById('sc-key').value || '').trim(); - var m = document.getElementById('sc-key-msg'); - if (!k) { m.textContent = '請先貼上金鑰'; return; } - kb.disabled = true; m.textContent = '啟用中…'; - fetch(API_BASE + '/portal/admin/ai', { - method: 'POST', - headers: Object.assign({ 'Content-Type': 'application/json' }, authHeaders()), - body: JSON.stringify({ gemini_api_key: k }) - }).then(function (r) { return safeJson(r).then(function (d) { return { ok: r.ok, status: r.status, d: d }; }); }) - .then(function (x) { - kb.disabled = false; - if (!x.ok || !x.d.success) { m.textContent = (x.d && x.d.error) || '啟用失敗,請再試一次'; return; } - markStep('key'); - }) - .catch(function () { kb.disabled = false; m.textContent = '網路好像有問題,請再試一次'; }); - }); + // arcrun-rag#81:金鑰輸入框的送出邏輯(POST /portal/admin/ai)一併移除—— + // 只藏畫面留著那條路,等於這個要求還在,只是變得更難發現。 var later = document.getElementById('sc-later'); if (later) later.addEventListener('click', function () { el.remove(); }); // 只藏本次,下次進站再提醒 } -- 2.52.0