CubeLV 動態 Plugin 與 Schema 實作機制

由 文鴻 黃 分享的筆記

整理自 2026-06-27 與 Claude 的架構對話,接續「CubeLV 系統架構深度解析」 一、PostgreSQL:JSONB 存所有動態欄位 核心問題:每個 plugin 的 itemType 欄位都不同,傳統 RDBMS 要 ALTER TABLE 才能加欄位。 實際 table 結構 為什麼用 JSONB 而非 EAV?EAV 查一個 item 要 JOIN N 次,JSONB 一次 SELECT 全拿,且支援 GIN index。 Item Server 寫入時的欄位分離 二、Schema 註冊:TypeScript class 即 schema 一個 class 同時定義三件事:前端 TS 型別、Item Server 驗證白名單、前端表單元件(string→text input,boolean→toggle,number→數字輸入)。 pluginpublish 時從 class 反射出 schema JSON → INSERT INTO itemtypeschemas → S3 mirror + runtime invalidate。 三、前端動態渲染 Host 框架模式:plugin 只宣告(registerSection、registerFolderType、children),host 負責實際渲染 sidebar、列表、表單。卡片模板系統用 cardFieldsDef + templateHtml({{欄位名}} 變數)+ templateCss(主題變數 var(--xxx))。 四、完整流程 五、如何確保動態資料正確與程式安全載入:五層安全鏈 層級 防護內容 失敗後果 第 0 層:tsc 型別正確、模組存在 bundle 產不出來 第 1 層:esbuild import 解析、語法 編譯失敗 第 2 層: validator.sh e…