feat(console): library-map M5 — 總庫搜尋頁藏書地圖首頁區塊(R4) #74

Merged
Leo merged 1 commits from feat/console-library-map-home into main 2026-07-19 09:36:04 +00:00
Owner

library-map SDD M5(GUI 首頁)。關聯 #39。

R4 落點裁定(首頁選點)

console 是 hash-routing 單頁殼,「首頁」隨 profile:full=駕駛艙、rag=總庫搜尋。地圖放總庫搜尋頁搜尋框上方

  • rag profile:該頁就是首頁,R4「首頁從空白搜尋框變全館地圖」字面達成;
  • full profile:總庫搜尋是全館入口(駕駛艙是狀態面不是庫導覽面),「點庫卡片→進該庫搜尋」動線同頁最短;
  • 一份實作兩 profile 全吃,不用在 cockpit/search 各維護一份。

內容

  • console.ts:藏書地圖區塊——每庫一張卡(庫名+narrative+top entities 前 5 帶 degree+triplet_count+commit_hash 短碼/updated 台北時間);跨庫 bridges 有資料才列一小區;兩段式渲染(GET /kbdb/map 先出卡,逐庫 GET /kbdb/map/:library 補 degree/bridges/commit_hash,詳圖失敗維持名字版不擋);點庫卡片=設 library filter(/kbdb/search 既有 library 參數,portal-auth P1 順延項,不新造)進庫搜尋+清除鈕搜回全館;/map 空陣列或錯誤=誠實空狀態(指引 POST /map/recompute backfill),不擋搜尋等其他功能。品牌走 CONSOLE_BRAND 變數(#21),零外部庫,視覺沿現有 kcard/tag/honest 元件。
  • kbdb-proxy.tsGET /kbdb/mapGET /kbdb/map/:library 純轉發(rule 07;聚合真身在 kbdb base M2,不碰 kbdb/D1)。owner_id 不強制注入、只選擇性透傳(同 M4 MCP kbdb_get_map 語意):現行 backfill 的 map block owner_id=NULL,比照 search 強制注入租戶會把 NULL 列全濾掉→首頁永遠假空狀態。仍要求 X-Arcrun-API-Key 同閘;KBDB 不可達誠實 502。

測試

  • kbdb-map-proxy.test.ts 9 測:租戶閘 401/轉發/owner_id 透傳/空陣列透傳/404 透傳/不可達 502(fetchMock 假 host,絕不外連)。
  • console-library-map-page.test.ts 6 測:route 200+區塊在搜尋框上方(DOM 順序)+資料源接線+library 參數+誠實空狀態文案+品牌變數。
  • 15/15 過。誠實回報基線tsc --noEmit 16 行 ExecutionContext.tracing 錯誤與 executor.test.ts 1 失敗=main 基線既有(git stash 對照實證),非本分支引入。

部署

merge 後需 gated redeploy cypher-executor(leo 閘)。不碰 D1、不動引擎、不改 kbdb。

library-map SDD M5(GUI 首頁)。關聯 #39。 ## R4 落點裁定(首頁選點) console 是 hash-routing 單頁殼,「首頁」隨 profile:full=駕駛艙、rag=總庫搜尋。地圖放**總庫搜尋頁搜尋框上方**: - rag profile:該頁就是首頁,R4「首頁從空白搜尋框變全館地圖」字面達成; - full profile:總庫搜尋是全館入口(駕駛艙是狀態面不是庫導覽面),「點庫卡片→進該庫搜尋」動線同頁最短; - 一份實作兩 profile 全吃,不用在 cockpit/search 各維護一份。 ## 內容 - **console.ts**:藏書地圖區塊——每庫一張卡(庫名+narrative+top entities 前 5 帶 degree+triplet_count+commit_hash 短碼/updated 台北時間);跨庫 bridges 有資料才列一小區;兩段式渲染(GET /kbdb/map 先出卡,逐庫 GET /kbdb/map/:library 補 degree/bridges/commit_hash,詳圖失敗維持名字版不擋);點庫卡片=設 library filter(`/kbdb/search` 既有 `library` 參數,portal-auth P1 順延項,不新造)進庫搜尋+清除鈕搜回全館;`/map` 空陣列或錯誤=誠實空狀態(指引 `POST /map/recompute` backfill),**不擋搜尋等其他功能**。品牌走 CONSOLE_BRAND 變數(#21),零外部庫,視覺沿現有 kcard/tag/honest 元件。 - **kbdb-proxy.ts**:`GET /kbdb/map`+`GET /kbdb/map/:library` 純轉發(rule 07;聚合真身在 kbdb base M2,不碰 kbdb/D1)。owner_id **不強制注入、只選擇性透傳**(同 M4 MCP kbdb_get_map 語意):現行 backfill 的 map block owner_id=NULL,比照 search 強制注入租戶會把 NULL 列全濾掉→首頁永遠假空狀態。仍要求 X-Arcrun-API-Key 同閘;KBDB 不可達誠實 502。 ## 測試 - `kbdb-map-proxy.test.ts` 9 測:租戶閘 401/轉發/owner_id 透傳/空陣列透傳/404 透傳/不可達 502(fetchMock 假 host,絕不外連)。 - `console-library-map-page.test.ts` 6 測:route 200+區塊在搜尋框上方(DOM 順序)+資料源接線+library 參數+誠實空狀態文案+品牌變數。 - 15/15 過。**誠實回報基線**:`tsc --noEmit` 16 行 ExecutionContext.tracing 錯誤與 `executor.test.ts` 1 失敗=main 基線既有(git stash 對照實證),非本分支引入。 ## 部署 **merge 後需 gated redeploy cypher-executor(leo 閘)**。不碰 D1、不動引擎、不改 kbdb。
Leo added 1 commit 2026-07-19 09:35:04 +00:00
library-map SDD M5(Arcrun#39):console 首頁從空白搜尋框變全館地圖。

落點裁定:console 是 hash-routing 單頁殼,home 隨 profile(full=駕駛艙、
rag=總庫搜尋)——地圖放總庫搜尋頁搜尋框上方:rag profile 該頁即首頁;
full profile 它是全館入口,「點庫卡片→進該庫搜尋」動線同頁最短,一份實作
兩 profile 全吃。

- console.ts:藏書地圖區塊(lm-section)——每庫一張卡(庫名+narrative+
  top entities 前 5 帶 degree+triplet_count+commit_hash/updated 更新時間感)、
  跨庫 bridges 有資料才列一小區;兩段式渲染(全館列表先出卡,逐庫詳圖補
  degree/bridges,詳圖失敗維持名字版不擋);點庫卡片=設 library filter
  (/kbdb/search 既有 library 參數,不新造)進庫搜尋,附清除鈕搜回全館;
  /map 空陣列或錯誤=誠實空狀態(指引 POST /map/recompute backfill),
  不擋搜尋等其他功能。品牌沿 CONSOLE_BRAND 變數(#21),零外部庫。
- kbdb-proxy.ts:GET /kbdb/map+/kbdb/map/:library 純轉發(rule 07,聚合真身
  在 kbdb base M2)。owner_id 不強制注入只選擇性透傳(同 M4 MCP kbdb_get_map
  語意;現行 backfill map block owner=NULL,強制注入租戶=首頁永遠假空狀態);
  仍要求 X-Arcrun-API-Key 同閘;KBDB 不可達誠實 502。
- 測試:kbdb-map-proxy.test.ts 9 測(租戶閘/轉發/owner 透傳/空陣列/404/502)+
  console-library-map-page.test.ts 6 測(route 200/區塊在搜尋框上方/資料源接線/
  library 參數/誠實空狀態文案/品牌變數)——15/15 過。
- 誠實回報:tsc 16 行 ExecutionContext.tracing 錯誤與 executor.test 1 失敗=
  main 基線既有(git stash 對照實證),非本分支引入。

merge 後需 gated redeploy cypher-executor(leo 閘)。關聯 #39。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JUmjwkHLVBHM3ydhT1WSW3
Leo merged commit 762d2f5141 into main 2026-07-19 09:36:04 +00:00
Sign in to join this conversation.