模組(Module)開發
模組 是資訊頁可拖入的區塊,例如「圖片 + 文字」、「YouTube 影片」、「Instagram 貼文牆」、「心理測驗入口」等。
兩種來源
| 類型 | 定義處 | 可否刪除 |
|---|---|---|
| 內建模組(Built-in) | hypelink-backend-v3/src/admin/builtin-modules.catalog.ts | 否(is_builtin=1) |
| 擴充模組(External) | 管理員在 /hypeadmin/module-items 新增 | 是 |
目前內建 24 個模組,分成 5 類:
- 圖片文字(8)
- 影片聲音(5)
- 社群(4)
- 互動體驗(5)
- 其他擴充(2)
資料模型
module_item 表欄位(關鍵):
slug(唯一識別)package_id(內建為builtin:<slug>)name、description、icon、preview_imagemedia_category(對應module_category.slug,由資料表管理)plan_tier(free/pro/max)price、currencyis_builtin(布林)data_schema(JSON,供ModuleDataEditor渲染表單)
SQL 檔案:
hypelink-backend-v3/sql/add_module_item_media_plan_columns.sqlhypelink-backend-v3/sql/add_module_category_table.sqlhypelink-backend-v3/sql/seed_builtin_module_items.sqlhypelink-backend-v3/sql/apply_module_system.sql(一次套用)
範本 / Catalog 位置
目前模組「範本」並未以獨立 repo 型式對外開放;所有內建模組的定義皆集中在
hypelink-backend-v3/src/admin/builtin-modules.catalog.ts,這份 TypeScript 檔會隨平台 code 發行。
hypelink-backend-v3/src/admin/
builtin-modules.catalog.ts ← DEFAULT_MODULE_CATEGORIES + BUILTIN_MODULES若要新增一個新的 內建模組:
- 在
builtin-modules.catalog.ts的BUILTIN_MODULES陣列新增一筆,包含slug、name、mediaCategory、planTier、完整dataSchema - 部署後管理員到
/hypeadmin/module-items點 「重建內建模組」(呼叫POST /admin/module-items/reseed-builtins)
若要新增 擴充模組:
- 到
/hypeadmin/module-items的「擴充模組」分頁 - 點「新增模組」,填寫
slug、name、mediaCategory、planTier、dataSchema等 - 送出後 DB 新增一筆
is_builtin=0的module_item
分類管理
分類也動態化,儲存於 module_category 表。管理員可在 /hypeadmin/module-items 的「分類管理」分頁:
- 新增/編輯/停用/刪除分類(內建分類不可刪、slug 不可改)
- 刪除前會檢查
module_item.media_category使用中數量
平台側對接
- 資料來源:後端
GET /module-templates為唯一真實來源(前端已移除硬編MODULE_CATEGORIES/MODULE_CATALOG) - 公開分類:
GET /module-categories - 前端 API layer:
hypelink/src/lib/brand-experiences-api.ts的ModuleTemplateRow/ModuleCategoryRow - 資訊頁「新增模組」對話框:
AddModuleDialog.tsx(左側 5 類 + 右側 2 欄網格卡片) - 每個品牌資訊頁上限:
MAX_PAGE_MODULES = 12(page-modules-catalog.ts)
測試方式
1. 本地開發
模組並沒有獨立的前端範本 repo,請在主平台本地端測試:
# 後端
cd hypelink-backend-v3
npm run dev
# 前端
cd hypelink
npm run dev2. 新增內建模組後重建
部署後進 /hypeadmin/module-items → 內建模組 tab → 按「重建內建模組」。
警告:此操作會 硬刪 所有
is_builtin=1 AND package_id LIKE 'builtin:%'的列,再依 catalog 重建。品牌頁已放置的pageModule以slug參照,不受影響。
3. 實際驗證
- 在後台
/dashboard/brands/[hypeId]/links的主內容區點「新增模組」 - 左側選分類,右側挑新模組,點「確認選擇」
- 以
ModuleDataEditor填入dataSchema定義的欄位 - 右側預覽欄會即時顯示
- 發布後到
/@handle驗證公開頁效果
4. dataSchema 設計原則
- 欄位型態支援:
string、number、boolean、enum、asset(圖片/影片)、richtext、array、object - 所有欄位需要 i18n 化的
label/placeholder - 必填欄位用
required: true標註;表單會阻擋空值送出
參考
builtin-modules.catalog.ts— 24 個內建模組的完整定義AddModuleDialog.tsx— 新增模組對話框ModuleDataEditor.tsx— 根據dataSchema動態渲染表單
Last updated on