fix(t128+t129): 圖搜尋補 template:triplet+AI 問答出處按頁去重

t128 真因(總管實測定罪):t116 只補 kbdb_base,同一行 URL 還吃 {{input.template}}
⇒ /records/by-template/?owner_id=... 查不到;手動補 template 即 count=1
(企業版功能解鎖→控制→授權系統)。**同種病三犯,已記 mistakes。**
t129:一卡切 3-5 block 每段都算一筆命中 ⇒ dedupeSourcesByPage 後端去重+hit_count。
vitest 52 passed(1 紅=console HTML 搬遷陳舊測試,非本案)。
(實作=子 CC;驗證+commit=總管)
This commit is contained in:
uncle6me-web
2026-07-29 14:11:52 +08:00
parent eb9f2db513
commit ccb86481ae
3 changed files with 183 additions and 3 deletions
@@ -242,6 +242,26 @@
`console-ui/public/portal/index.html` 設定頁新增「萃取引擎」區塊(引擎選擇+金鑰輸入+提示重連)。
測試:vitest 新增 3 案(未設定→下發 gemma 無金鑰;設定後→下發含金鑰;GET 不回明文)。
- [x] **t128 圖搜尋仍回 0——graph_neighbors 補傳 template2026-07-29,任務層小改)**
診斷:t116 只補了 kbdb_base,但 fetch_triplets.url 同時含 `{{input.template}}`
portal 呼叫 executeWebhookGraph 未傳 template → URL 變 `/records/by-template/?owner_id=...` → count=0。
總管實測:手動補 `"template":"triplet"` → count=1(企業版功能解鎖)。
修:portal-data.ts graph_neighbors 呼叫補 `template: 'triplet'`
執行範圍:`cypher-executor/src/routes/portal-data.ts` 一行。
測試:portal-data.test.ts 新增整合案(t128 describeworkflow 執行不崩即代表 template 進到 context)。
workflow input 完整核對清單(portal-data.ts 所有 executeWebhookGraph 呼叫):
- graph_neighborsnode ✅、depth ✅、namespace ✅、owner ✅、kbdb_base ✅(t116)、template ✅(本次)
- rag_chatquestion ✅;namespace/kbdb_base 未核實(rag_chat workflow yaml 在 arcrun-rag,非本 repo
- takedown:不在 portal-data.ts,在 arcrun-rag 端(dashboard/安裝器),超出本 repo 範圍
- [x] **t129 AI 問答出處重複一整頁——後端按 page_name 去重(2026-07-29,任務層小改)**
診斷:一張卡拆成 3-5 block,每 block 各回一筆 source(同 page_name)→ 前端列一整頁重複。
選後端修(/portal/data/chat)理由:出處去重是資料清潔,跟前端渲染無關;改後端不需動 HTML。
修:portal-data.ts 新增純函式 `dedupeSourcesByPage()`Map 按 page_name/page 去重,hit_count > 1 時附計數);
chat 路由 rawSources 先過去重再回。
執行範圍:`cypher-executor/src/routes/portal-data.ts`(新增 export 函式 + chat route)。
測試:portal-data.test.ts 新增 5 案(t129 describe:合併計數/各保一筆/page 備用/空陣列/page_name 優先)。
## 第二波(不在本 SDD 動工範圍,掛號)
- MCP token 綁庫集合(design §9PR#15 擴充,只動 `mcp/`