From d7fab7c6aa2a17b43e076dc45bc5478c1e68727c Mon Sep 17 00:00:00 2001 From: richblack Date: Mon, 27 Jul 2026 16:26:52 +0800 Subject: [PATCH] =?UTF-8?q?fix(portal):=20=E6=8B=BF=E6=8E=89=E7=99=BB?= =?UTF-8?q?=E8=A8=98=E6=96=B0=E5=BA=AB=EF=BC=8F=E8=A8=AD=E5=AE=9A=E9=A0=81?= =?UTF-8?q?=E8=A3=9C=E5=B8=B8=E9=A7=90=E5=85=A5=E5=8F=A3=EF=BC=88=E4=B8=8B?= =?UTF-8?q?=E8=BC=89=E5=B0=8F=E5=B9=AB=E6=89=8B=EF=BC=8BAI=20=E9=87=91?= =?UTF-8?q?=E9=91=B0=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit leo 07-27 走完安裝後三點回饋: 1) 「登記新庫」是設計錯誤 —— leo:「應該是同步小幫手抓到的庫就顯示在上面, 沒有人工登記的選項。」人工登記只會製造對不上的空庫。 移除表單+對應 JS;說明改為「裝好同步小幫手並選好資料夾後,每個資料夾會自動 成為一個庫出現在下面,不需要人工新增。下面還是空的,代表小幫手還沒裝好或還沒選資料夾。」 2) AI 金鑰與下載連結只存在一次性的「還差 N 步」卡片,按了「稍後再說」或裝完就 再也找不到 —— 換金鑰/換電腦重新下載都沒入口。 設定頁新增兩個常駐面板:「同步小幫手」(下載)與「AI 問答金鑰」(可隨時更換), 共用既有 API POST /portal/admin/chat-key。 3) 修 window.ARCRUN_CFG → ARCRUN_CONFIG(與 721 行既有用法一致,原為筆誤) 驗證:ad-nl-create 殘留 0 / st-daemon-dl 2 / st-key-save 2 / ARCRUN_CFG 0 抽出頁面 3 個 script 區塊 node --check 語法通過 --- console-ui/public/portal/index.html | 85 ++++++++++++++++++----------- 1 file changed, 52 insertions(+), 33 deletions(-) diff --git a/console-ui/public/portal/index.html b/console-ui/public/portal/index.html index d1669f4..fa5f21c 100644 --- a/console-ui/public/portal/index.html +++ b/console-ui/public/portal/index.html @@ -331,6 +331,25 @@
+ +
+
同步小幫手
+
把你電腦上的資料夾變成知識庫。換電腦或重裝時可以再下載一次。
+
+ 下載 Mac 版 +
封測版未簽章,第一次請右鍵→打開。裝好第一次開啟時,貼上這個網址+你的帳號密碼就連上了。
+
+
+
+
AI 問答金鑰
+
用來啟用「問 AI」。到 aistudio.google.com 免費申請。金鑰只存在你自己的知識庫裡。
+
+ + +
+
+
@@ -356,17 +375,9 @@
庫目錄管理
- 這裡是「庫」的登記簿——條目歸哪個庫由資料導入(ingest)時蓋章決定;未蓋章的舊資料一律視同 general。標了「圖譜來源」的庫決定誰能用圖譜模式(全都沒標=預設 general)。 -
-
-
登記新庫
-
- - - - -
-
+ + 裝好同步小幫手並選好要看守的資料夾之後,每個資料夾會自動成為一個「庫」出現在下面——不需要人工新增。下面還是空的,代表小幫手還沒裝好或還沒選資料夾。標了「圖譜來源」的庫決定誰能用圖譜模式(全都沒標=預設 general)。
載入中…
@@ -656,6 +667,36 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return { }) .catch(function (e) { $('login-submit').disabled = false; $('login-status').textContent = friendlyErr(e); }); } + // 07-27:設定頁的常駐入口(下載小幫手/換 AI 金鑰)——與一次性卡片同一組 API + (function () { + var dl = $('st-daemon-dl'); + if (dl) { + var u = (window.ARCRUN_CONFIG && window.ARCRUN_CONFIG.daemonDownload) + || 'https://raw.githubusercontent.com/youlinhsieh/arcrun-rag-bundles/main/daemon/ArcrunRAG-mac-unsigned.zip'; + dl.setAttribute('href', u); + } + var kb = $('st-key-save'); + if (kb) kb.addEventListener('click', function () { + var k = ($('st-key').value || '').trim(); + var m = $('st-key-status'); + if (!k) { m.textContent = '請先貼上金鑰'; m.style.color = ''; return; } + kb.disabled = true; m.textContent = '儲存中…'; m.style.color = ''; + fetch(API_BASE + '/portal/admin/chat-key', { + method: 'POST', + headers: Object.assign({ 'Content-Type': 'application/json' }, authHeaders()), + body: JSON.stringify({ key: k }) + }).then(function (r) { return r.json().then(function (d) { return { ok: r.ok, d: d }; }); }) + .then(function (x) { + kb.disabled = false; + if (guard401(x.status)) return; + if (!x.ok) { m.textContent = (x.d && x.d.error) || '儲存失敗'; m.style.color = '#b4462f'; return; } + $('st-key').value = ''; + m.textContent = '已儲存,AI 問答可以用了'; m.style.color = '#3f7a4f'; + }) + .catch(function (e) { kb.disabled = false; m.textContent = friendlyErr(e); m.style.color = '#b4462f'; }); + }); + })(); + $('st-logout').addEventListener('click', function () { fetch(API_BASE + '/portal/logout', { method: 'POST', headers: authHeaders() }).catch(function () { /* 盡力而為 */ }); dropSession(); @@ -1369,28 +1410,6 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return { .catch(function (e) { $('ad-nu-create').disabled = false; st.textContent = friendlyErr(e); }); }); - // 登記新庫 - $('ad-nl-create').addEventListener('click', function () { - var name = $('ad-nl-name').value.trim(); - var st = $('ad-nl-status'); - if (!name) { st.textContent = '請填庫名(英數 _ -)'; return; } - st.textContent = ''; - $('ad-nl-create').disabled = true; - adminApi('POST', '/portal/admin/libraries', { - name: name, - display_name: $('ad-nl-display').value.trim(), - description: $('ad-nl-desc').value.trim() - }) - .then(function (x) { - $('ad-nl-create').disabled = false; - if (guard401(x.status)) return; - if (!x.ok) { st.textContent = x.d.error || ('登記失敗(HTTP ' + x.status + ')'); return; } - $('ad-nl-name').value = ''; $('ad-nl-display').value = ''; $('ad-nl-desc').value = ''; - toast('庫已登記'); - loadAdmin(); - }) - .catch(function (e) { $('ad-nl-create').disabled = false; st.textContent = friendlyErr(e); }); - }); // 「全部知識庫」勾選 → 其餘庫勾選框連動停用(存的就是 ["*"],個別勾選無意義) document.addEventListener('change', function (ev) {