wiki: 落帳檢修孔第一版(embed selftest + diagnostics 端點 + 匯出按鈕)

記錄 2026-08-07 三個 commit(9344562/83aa1f6/5388f40)的狀態、端到端實測方式、
測試結果,以及未完成項(未 push GitHub 待 D20/Oscar 需自行按「立即更新」)。
一併誠實記錄收工時發現本機既有背景機制會把 commit 鏡到 Gitea(非本次操作觸發)。
This commit is contained in:
uncle6me-web
2026-08-07 18:52:30 +08:00
parent 5388f40c03
commit 1e2ef6806a
+40 -1
View File
@@ -3,7 +3,7 @@ name: status
description: 當前進度、進行中 Phase、已知問題、下一步(動態文件,每 session 更新)
metadata:
type: project
last_updated: 2026-07-19
last_updated: 2026-08-07
---
# 當前進度(動態)
@@ -15,6 +15,45 @@ metadata:
## 📍 當前位置
> **2026-08-07 晚(檢修孔第一版,local commit 未 pushmain**leo 直接指令「先把檢修孔做出來
> 發版,不必先知道 Oscar 的病是什麼」——解掉「查不出封測者的病,因為拿不到他那邊資料;拿不到
> 資料是因為沒有檢修孔」的死結。**規格中途被 leo 簡化過一次**:從「免授權層/同意後才交」兩層
> 機制,收斂成「設定頁一顆按鈕、按下去下載一個 JSON 檔、用戶自己把檔案傳出去」(同意天然內建
> 在「他自己按、自己傳」這個動作裡)。
>
> **已完成(3 個 local commit`matrix/arcrun`sha `9344562`→`83aa1f6`→`5388f40`**
> 1. `kbdb/src/embed.ts` `embedSelfTest()` `GET /embed/selftest?owner_id=`——挑一筆已標記
> 「已嵌入」的卡片拿自己的內容查自己,只回 `{enabled,tested,passed,note}`(不回內容/id)。
> 這是唯一能分辨「從沒嵌過」vs「嵌了但 index 查不到自己」(Arcrun#11 那種故障)的方法,
> 單看 backfillStatus 的 pending/embedded 計數看不出後者。
> 2. `cypher-executor/src/routes/portal-data.ts` `GET /portal/data/diagnostics`——聚合
> embed 健康狀態+`library_count`/`triplet_count`(只讀 `/map` 回應的數字,`narrative`/
> `top_entities` 讀完即丟)+`bundle_version``instance_url`。沿用既有 `requirePortalUser`。
> 3. `console-ui/public/portal/index.html` 設定頁「疑難排解」panel+「匯出診斷檔給我們看」按鈕。
>
> **端到端實測方式**(真跑不是模擬):本地起兩個真 `wrangler dev`kbdb:18787
> cypher-executor:18788local D1+KV,真的跑過 migrations),HTTP API 種一個 portal_user
> +一筆 triplet_count=67 的 library_map;瀏覽器工具**真的登入、真的點按鈕**,Network 面板
> 看到 `GET /portal/data/diagnostics → 200`,頁面狀態列顯示「已下載」。兩種故障情境(module
> 未開/embedded=0module 開了但 self_test.found_itself=false)都各自產出可判讀的 JSON,
> 貼給 leo 核對過。
>
> **測試**kbdb 12 新測試+既有 110 全綠;cypher-executor 3 新測試綠(既有 1 個 `/portal`
> HTML 殼 404 失敗案用 `git stash` 驗證是既有問題非本次造成);console-ui 既有輕量測試
> 18/18 綠。隱私紅線有機械測試守(斷言回應 JSON 不含卡片內容/entity 名/entry id)。
>
> **⏸ 未完成/待人****尚未 push GitHub**D20 閘,需 leo 跑 `scripts/github-arm.sh`)→
> push 後版本要走 `products/arcrun-rag/installer/scripts/release.mjs` 注版號 → Oscar 在他
> 自己實例的設定頁按「立即更新」重跑安裝才會真的拿到這顆按鈕(self-hosted,不會自動生效)。
> **這件事沒有 SDD**(leo 直接指令的臨時檢修孔,非任何 active SDD 的 task`workflow-discovery`
> 是目前唯一 active SDD,本次改動與它無關,屬於「有人閘直接授權」的例外路徑,未走 pending-changes
> 提案流程——如需要補一份小 SDD 記錄,下個 session 可以評估)。
>
> **收工時意外發現**(誠實記錄):本機有既有背景機制會把 local commit 自動鏡到 Gitea
> `gitea/main` 在最後一次 commit 後幾秒就更新到同一個 sha`git reflog` 時間戳對得上),
> 全程沒有手動下過 `git push`。與 CLAUDE.md 記載的「Gitea 永 private,只有 GitHub 走 D20」
> 模型一致,非本次操作觸發,僅供下個 session 知悉。
> **2026-07-28t95+t96 搜尋缺陷修復,main)**portal 搜尋兩缺陷修復——t95 CJK/ASCII
> 邊界自動補空白(`normalizeCjkQuery`,查詢端,不動索引);t96 graph 節點精確 0 鄰居
> → fuzzy fallback`findBestNodeMatch`/`fuzzyFindNode`contains 比對+最短名優先)。