總圖說我一條關聯都沒有,但我有 1854 條 #100

Open
opened 2026-08-12 04:54:52 +00:00 by Leo · 1 comment
Owner

總圖顯示「0 個實體・0 條關聯」,而庫裡有 1854 條。

leo 看到的畫面(2026-08-12)

https://arcrun-rag-ui.leo21c.workers.dev/portal/#/map

總圖                              0 個實體 · 0 條關聯
知識庫還沒有任何關聯——上傳文件後 AI 會自動織網。

同一時間 API 回的是:10 個子庫、三元組合計 1854kb 1851、derivations 3)。

兩個獨立的原因

① 三元組統計整支 500

GET https://kbdb-graph-plugin.leo21c.workers.dev/triplets/stats
→ 500  {"error":"Internal Server Error",
        "message":"[kbdb-base] GET /records/by-template/triplet: Unauthorized"}

kbdb-graph-plugin 拿著的 KBDB_INTERNAL_TOKEN 跟 kbdb 對不上了

🔴 根因:那顆 worker 不在部署清單裡。 2026-08-12 的一次更新部了 23 顆 worker,
逐顆列出來,沒有 kbdb-graph-plugin
⇒ token 一換它就落單,而症狀是「總圖空的」——沒有任何地方會叫

② 卡片數拿錯身分去問

console-dashboard.ts:421const tenant = c.env.CONSOLE_TENANT || 'leo'
而部署上的值就是 CONSOLE_TENANT = leoleo 的資料在 bfezv28v(08-11 回灌時改的名)
⇒ 拿 owner_id=leo 去數卡片,數到 wiki_card_total: 0

要達成什麼

畫面上的「0」只有在真的是 0 的時候才出現。

現在這個畫面對使用者說的是「你還沒有任何關聯,上傳文件後 AI 會自動織網」
——那是一句錯的話,他有 1854 條。他會照那句話去做一件不需要做的事。

怎麼驗才算數

  1. 打開那個網址(看畫面,不是打 API),實體數與關聯數對得上庫裡的數字
  2. 故意讓統計那支掛掉,畫面要說「讀不到」,不准說成 0
  3. 貼實際畫面內容

紅線

  • 不准只修 token 就結案——下次再換一樣會斷。要修的是「那顆 worker 不在部署清單裡」
  • 不准把 CONSOLE_TENANT 寫死成另一個值了事:身分不該由部署設定決定(同 Leo/Arcrun#97 的病根)
  • 讀不到就說讀不到(kb-scale-datatriplets_total 已經誠實回 null
    是畫面把 null 顯示成 0——這一層要一起修)

相關

Leo/Arcrun#97(更新照名字 ensure 資源,弄丟既有的)|Leo/Arcrun#87(藏書地圖)|
Leo/Arcrun#16#17(資產放 KV)——都是同一族:系統把使用者的東西分散在幾個地方,然後只更新其中一部分。

**總圖顯示「0 個實體・0 條關聯」,而庫裡有 1854 條。** ## leo 看到的畫面(2026-08-12) `https://arcrun-rag-ui.leo21c.workers.dev/portal/#/map` ``` 總圖 0 個實體 · 0 條關聯 知識庫還沒有任何關聯——上傳文件後 AI 會自動織網。 ``` 同一時間 API 回的是:**10 個子庫、三元組合計 1854**(`kb` 1851、`derivations` 3)。 ## 兩個獨立的原因 ### ① 三元組統計整支 500 ``` GET https://kbdb-graph-plugin.leo21c.workers.dev/triplets/stats → 500 {"error":"Internal Server Error", "message":"[kbdb-base] GET /records/by-template/triplet: Unauthorized"} ``` `kbdb-graph-plugin` 拿著的 `KBDB_INTERNAL_TOKEN` **跟 kbdb 對不上了**。 🔴 **根因:那顆 worker 不在部署清單裡。** 2026-08-12 的一次更新部了 **23 顆** worker, 逐顆列出來,**沒有 `kbdb-graph-plugin`**。 ⇒ token 一換它就落單,而症狀是「總圖空的」——**沒有任何地方會叫**。 ### ② 卡片數拿錯身分去問 `console-dashboard.ts:421`:`const tenant = c.env.CONSOLE_TENANT || 'leo'` 而部署上的值就是 `CONSOLE_TENANT = leo`。**leo 的資料在 `bfezv28v`**(08-11 回灌時改的名) ⇒ 拿 `owner_id=leo` 去數卡片,數到 `wiki_card_total: 0`。 ## 要達成什麼 **畫面上的「0」只有在真的是 0 的時候才出現。** 現在這個畫面對使用者說的是「你還沒有任何關聯,上傳文件後 AI 會自動織網」 ——**那是一句錯的話**,他有 1854 條。他會照那句話去做一件不需要做的事。 ## 怎麼驗才算數 1. 打開那個網址(**看畫面,不是打 API**),實體數與關聯數對得上庫裡的數字 2. 故意讓統計那支掛掉,畫面要說「讀不到」,**不准說成 0** 3. 貼實際畫面內容 ## 紅線 - 不准只修 token 就結案——**下次再換一樣會斷**。要修的是「那顆 worker 不在部署清單裡」 - 不准把 `CONSOLE_TENANT` 寫死成另一個值了事:**身分不該由部署設定決定**(同 `Leo/Arcrun#97` 的病根) - 讀不到就說讀不到(`kb-scale-data` 對 `triplets_total` 已經誠實回 `null`, **是畫面把 null 顯示成 0**——這一層要一起修) ## 相關 `Leo/Arcrun#97`(更新照名字 ensure 資源,弄丟既有的)|`Leo/Arcrun#87`(藏書地圖)| `Leo/Arcrun#16`/`#17`(資產放 KV)——都是同一族:**系統把使用者的東西分散在幾個地方,然後只更新其中一部分。**
Author
Owner

2026-08-12 傍晚:總圖回來了——leo 本人在他的畫面上確認「有總圖和庫」

併於 cbeddf7(分支 fix/graph-stats-honesty-100)。

wiki_card_total   0 → 142
triplets_total    0 → 3,302
子庫              10 個

(畫面那一格的證據只能是他的話:總圖在登入後面,我不會輸入他的帳密。)

這一格總共穿過四層,每一層都獨立會讓畫面顯示 0

  1. kbdb 綁到空的 D1(Leo/Arcrun#97 造成)
  2. cypher 的 CREDENTIALS_DB 也綁到空的——我第一次修的時候漏了
  3. 呼叫 graph plugin 沒帶認證 ⇒ 401
  4. CONSOLE_TENANT=leo,而他的資料在 bfezv28v(491,107 筆 vs 127 筆)

🔴 前三層我各修一次、各宣布一次「好了」,而他打開都還是空的。
教訓寫在 CP 上:修一塊就宣布,等於把驗收成本轉嫁給使用者。

那條線挖到兩件比原題更嚴重的

  • /triplets/statstotal 是分頁長度不是總數searchByTemplate 預設 limit=100)
    ⇒ 只修 401 的話,畫面會從「0」變成「100」——一樣是假的。改成另外算真正的 COUNT
  • 數 entries 原本不帶 owner 過濾 ⇒ 會混到別的租戶(實測 459,137 vs leo 的 458,732)

驗證

cypher-executor 374 pass(原 357,+17 條),14 個既有失敗數量與內容不變
反向驗證:拿掉帶認證那一行 ⇒ 14 → 17 failed;還原 ⇒ 回到 14

未收

「畫面把 null 畫成 0」這一層改好了,但 CONSOLE_TENANT 的設計問題見 #97

## ✅ 2026-08-12 傍晚:總圖回來了——**leo 本人在他的畫面上確認「有總圖和庫」** 併於 `cbeddf7`(分支 `fix/graph-stats-honesty-100`)。 ``` wiki_card_total 0 → 142 triplets_total 0 → 3,302 子庫 10 個 ``` (畫面那一格的證據只能是他的話:總圖在登入後面,我不會輸入他的帳密。) ### 這一格總共穿過四層,每一層都獨立會讓畫面顯示 0 1. kbdb 綁到空的 D1(`Leo/Arcrun#97` 造成) 2. **cypher 的 `CREDENTIALS_DB` 也綁到空的**——我第一次修的時候漏了 3. 呼叫 graph plugin 沒帶認證 ⇒ 401 4. `CONSOLE_TENANT=leo`,而他的資料在 `bfezv28v`(491,107 筆 vs 127 筆) 🔴 **前三層我各修一次、各宣布一次「好了」,而他打開都還是空的。** 教訓寫在 CP 上:**修一塊就宣布,等於把驗收成本轉嫁給使用者。** ### 那條線挖到兩件比原題更嚴重的 - **`/triplets/stats` 的 `total` 是分頁長度不是總數**(`searchByTemplate` 預設 limit=100) ⇒ 只修 401 的話,畫面會從「0」變成「100」——**一樣是假的**。改成另外算真正的 COUNT - **數 entries 原本不帶 owner 過濾 ⇒ 會混到別的租戶**(實測 459,137 vs leo 的 458,732) ### 驗證 ``` cypher-executor 374 pass(原 357,+17 條),14 個既有失敗數量與內容不變 反向驗證:拿掉帶認證那一行 ⇒ 14 → 17 failed;還原 ⇒ 回到 14 ``` ### 未收 「畫面把 null 畫成 0」這一層改好了,但 `CONSOLE_TENANT` 的設計問題見 `#97`。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Leo/Arcrun#100