# n8n-nodes-kbdb KBDB 的 n8n 節點(community node,薄殼)。讓 n8n 使用者用 **sheet/field/record** 三個詞操作 KBDB,不用寫 SQL、不用懂底層。 - 詞彙定案:InkStoneCo `system-dev/wiki/kbdb-詞彙表.md`(2026-08-15) - 動作集=`system-dev/docs/4-guides/kbdb-動作對照表.md` 標 ✅ 的那半 - 薄殼鐵律:`.claude/rules/07-thin-shell.md`——每個動作恰好一個 API 呼叫, API 沒有的能力**不拼裝**(`nodes/Kbdb/actions.ts` 是唯一映射點,有測試釘死) ## 動作 ↔ API | 動作 | API(cypher-executor `/kbdb/*` proxy) | |---|---| | Append Record | `POST /kbdb/records` | | Get a Record | `GET /kbdb/records/:recordId` | | Get Many Records | `GET /kbdb/records/by-template/:sheet` | | Update a Record | `PATCH /kbdb/records/:recordId` | | Create a Sheet | `POST /kbdb/templates` | | Get Sheet Schema | `GET /kbdb/templates/:idOrName` | | List Sheets | `GET /kbdb/templates` | | Search | `GET /kbdb/search` | ### 刻意不在清單上的(不是漏做) - **Add a Field**:對外門(proxy)沒有 `PATCH /kbdb/templates`(實測 404); base 端的 `PATCH /templates/:id` 語意是 **slots 整組覆蓋**(實測:`["name","phone"]` PATCH `["hired_at"]` → 剩 `["hired_at"]`),不是「加一欄」。等 API 有真的 add-field 能力再掛上來。 - **Archive(record/sheet)**:record 只有 DELETE(真的刪掉,語意不符); sheet 連 DELETE 都沒有。 - **關係整組**(Link/Add record to sheet/Get linked/Unlink):沒有 API (等 `Arcrun#132` 資料模型提案 confirm)。 ## 認證 Credential「KBDB API」= Base URL(你的 Arcrun 實例 cypher-executor 網址)+ API Key(namespace,走 `X-Arcrun-API-Key` header)。資料按 namespace 租戶隔離; sheet(template)定義是全域共享的。 ⚠️ 不要直連 kbdb worker 本體——它只收系統內部 Bearer,外面打一定 401(設計)。 ## 開發 ```bash npm install npm run build # tsc → dist/ npm test # vitest:動作↔API 映射(對照表的機器版) ``` 本地 n8n 驗證:把本套件 `npm pack` 出 tarball,裝進 `$N8N_USER_FOLDER/.n8n/nodes/`(`npm install `),啟動 n8n 即可在 節點清單看到 KBDB。