feat(portal): 拔掉雲端「疑難排解」匯出按鈕,改導向本機小幫手(t213 收尾)

leo 08-08:「雲端那個要刪掉?不刪用戶搞不清楚要去哪裏下載」;08-09 追認「通知
完畢可以刪除」——封測者已被通知去更新到有地端匯出的版本(arcrun-app「版本與
更新」頁的疑難排解卡,見 products/arcrun-rag commit 9f1ca58 起),放行條件已滿足。

三處改動:
1. 設定頁「疑難排解」面板:移除 #st-diag-export 按鈕與 #st-diag-status,
   改成純文字指路到電腦上的 Arcrun App。
2. 對應的前端 JS 點擊處理(打 GET /portal/data/diagnostics 的那段 IIFE)整段刪除
   ——按鈕已不存在,留著是死代碼。
3. 語意搜尋降級橫幅(se-banner):原本也教用戶「到設定→疑難排解匯出診斷檔」,
   同步改成指向本機小幫手,否則使用者會照著走進一個不存在的按鈕。

GET /portal/data/diagnostics 端點本身未刪(無害、已無任何 UI 呼叫),純粹清路標
不動後端;已知例外——同步小幫手完全連不上、且封測者是老版本沒有本機匯出時,
會真的無路可走,判斷為可接受(他們已被個別通知升級,且雲端 portal 仍能用文字
指路,不是把人晾在原地不給說明)。

驗證:本機起 static server(config.js 指向 dummy apiBase)+瀏覽器 JS 強制顯示
setting/search view,實際截圖確認按鈕消失、#st-diag-export/#st-diag-status 在
DOM 裡是 null、文案渲染正確無破版;console 只有 dummy apiBase 連不上的預期錯誤,
無語法/參照錯誤。cypher-executor vitest(portal-data/admin/auth)114 通過、2 個
既有失敗(HTML 殼 404,改動前後一致,非本次影響——用 git stash 前後對照過)。

未部署(紅線:本輪只到本機驗過+commit+push gitea,prod 需 leo 開閘)。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
uncle6me-web
2026-08-09 01:09:10 +08:00
parent 894d9abeb1
commit 831cb62d2e
+20 -47
View File
@@ -415,24 +415,25 @@ if (!window.ARCRUN_API_BASE) {
文件整理成知識卡的部分,請在<b style="color:var(--ink)">同步小幫手</b>(電腦上的托盤圖示)的「AI 設定…」填一把 Gemini API Key。
</div>
</div>
<!-- 檢修孔2026-08-07 leo 直接指令):「一顆按鈕在設定裡,按鈕下載一個檔案,
把檔案發給我,你看那個檔」。用戶只做兩件事:按一下、把檔案傳出去——不需要
理解裡面是什麼。檔案內容只有統計/狀態數字(GET /portal/data/diagnostics),
不含任何知識卡內容。
<!-- 檢修孔演進史:
2026-08-07 leo 直接指令「一顆按鈕在設定裡,按鈕下載一個檔案,把檔案發給我」
→「疑難排解」面板+#st-diag-export 按鈕誕生,打 GET /portal/data/diagnostics
t2132026-08-08InkStoneCo 總管交辦)這顆按鈕在**封測者的瀏覽器**裡執行,
2026-08-08t213InkStoneCo 總管交辦)發現這顆按鈕在**封測者的瀏覽器**裡執行,
跟他電腦上的 daemon 是兩個獨立行程,構不到本機資料(檔案總量/失敗分類/
daemon 版本)——那半資料改在 arcrun-app(同步小幫手)本機端匯出(打新端點
GET /portal/daemon/diagnostics)。這顆按鈕**保留**當退路:daemon 完全掛掉時,
這是唯一還按得到的東西。文案誠實講清楚自己只有一半導去完整版。
(總管原話:「這裡只看得到雲端這半,完整診斷請到你電腦上的 Arcrun 匯出。」) -->
daemon 版本)——完整版改在 arcrun-app(同步小幫手)「版本與更新」頁本機端匯出
(打新端點 GET /portal/daemon/diagnostics)。當時按鈕先保留當退路,文案改成
誠實講清楚自己只有一半導去完整版。
2026-08-09leo 拍板拿掉):leo 08-08「雲端那個要刪掉?不刪用戶搞不清楚要去
哪裏下載」,封測者已被通知去更新到有地端匯出的版本後,08-09 追認「通知完畢
可以刪除」。⇒ 按鈕與 #st-diag-export/#st-diag-status 一併移除,面板改成純文字
指路(同步小幫手才是唯一還按得到、也答得出完整診斷的地方)。
GET /portal/data/diagnostics 端點本身留著未刪(無害、未被任何 UI 呼叫,
純粹清路標,不動後端)。 -->
<div class="panel">
<div style="font-size:17px;font-weight:600">疑難排解</div>
<div style="margin-top:4px;font-size:14px;line-height:1.65;color:rgba(var(--ink-rgb),.55)">這裡只看得到雲端這半,完整診斷請到你電腦上的 Arcrun 匯出。同步小幫手完全連不上時,才用下面這顆備用(只有統計數字,不含你的任何文件內容)。</div>
<div style="margin-top:12px">
<button class="btn3" id="st-diag-export" style="padding:11px 18px;border-radius:10px">匯出診斷檔給我們看</button>
<div id="st-diag-status" style="margin-top:8px;font-size:13px;min-height:1.2em;color:rgba(var(--ink-rgb),.5)"></div>
</div>
<div style="margin-top:4px;font-size:14px;line-height:1.65;color:rgba(var(--ink-rgb),.55)">要回報問題,請到你電腦上的 <b style="color:var(--ink)">Arcrun</b>(同步小幫手)「版本與更新」頁——那裡的「疑難排解」按一下就能匯出完整診斷檔給我們(只有統計數字,不含你的任何文件內容)。</div>
</div>
<button class="btn3" id="st-logout" style="padding:14px;font-size:16px;border-radius:11px">登出</button>
</div>
@@ -956,38 +957,10 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return {
dropSession();
});
// ── 檢修孔(2026-08-07 leo 直接指令)──────────────────────────────────────
// 「按鈕下載一個檔案,把檔案發給我」:按下去打 /portal/data/diagnostics
// 存成單一 JSON 檔(不是要解壓的一包)直接觸發瀏覽器下載。不彈視窗、不要求
// 用戶理解內容——他只需要按一下、把跳出來的檔案傳給我們
(function () {
var btn = $('st-diag-export');
if (!btn) return;
btn.addEventListener('click', function () {
var st = $('st-diag-status');
btn.disabled = true;
st.textContent = '匯出中…';
fetch(API_BASE + '/portal/data/diagnostics', { headers: authHeaders() })
.then(function (r) { return safeJson(r).then(function (d) { return { ok: r.ok, status: r.status, d: d }; }); })
.then(function (x) {
btn.disabled = false;
if (guard401(x.status)) return;
if (!x.ok) { st.textContent = '匯出失敗,請稍後再試'; return; }
var blob = new Blob([JSON.stringify(x.d, null, 2)], { type: 'application/json' });
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
var stamp = new Date().toISOString().slice(0, 19).replace(/[:T]/g, '-');
a.href = url;
a.download = 'arcrun-diagnostics-' + stamp + '.json';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
setTimeout(function () { URL.revokeObjectURL(url); }, 2000);
st.textContent = '已下載——把這個檔案傳給我們就可以了';
})
.catch(function (e) { btn.disabled = false; st.textContent = friendlyErr(e); });
});
})();
// 檢修孔前端已於 2026-08-09 移除(t213,leo 拍板「通知完畢可以刪除」)——
// #st-diag-export 元素不再存在,匯出診斷檔改在 arcrun-app(同步小幫手)
// 「版本與更新」頁本機端做。GET /portal/data/diagnostics 端點本身未刪(無害、
// 已無任何 UI 呼叫),只是這裡不再掛按鈕去打它
// t87 07-28 leo:知識庫網址 helper(只有 origin,不含 /portal/# 後綴),兩處 UI 共用
function copyOriginUrl(btn) {
@@ -1189,7 +1162,7 @@ function taipeiMonthDay(ms) { var d = new Date(ms + TAIPEI_OFFSET_MS); return {
// (會出現「叫 CC」「vectorize」「redeploy」這類我們內部的修法指令,不是講給
// 一般用戶聽的)。前端固定顯示「發生了什麼+現在怎麼辦」,不假裝有語意結果,
// 也不留用戶不知道下一步的空白。
$('se-banner').innerHTML = '<div class="honest" style="margin-top:18px"><div class="h">語意搜尋還沒開通</div><div class="b">語意搜尋能理解你問題的「意思」找資料,不只是比對關鍵字。<br>這個知識庫目前還沒開通這個功能,以下顯示的是關鍵字搜尋結果(不會假裝有語意結果)。<br>想開通的話,到「設定」→「疑難排解」匯出診斷檔給我們,我們會幫你打開。</div></div>';
$('se-banner').innerHTML = '<div class="honest" style="margin-top:18px"><div class="h">語意搜尋還沒開通</div><div class="b">語意搜尋能理解你問題的「意思」找資料,不只是比對關鍵字。<br>這個知識庫目前還沒開通這個功能,以下顯示的是關鍵字搜尋結果(不會假裝有語意結果)。<br>想開通的話,請到你電腦上的 Arcrun(同步小幫手)「版本與更新」頁,用「疑難排解」匯出診斷檔給我們,我們會幫你打開。</div></div>';
}
var entries = d.entries || [];
$('se-count').textContent = '命中 ' + entries.length + ' 筆・模式 ' + searchModeLabel(d.mode || 'keyword') + (d.note ? '・' + d.note : '');