# System Spec Master ## 目的 這份是 `mkt.ose.tw` 的系統主規格單一入口,統一以下內容: - 系統整體架構與模組責任 - Frontend / Backend / Runtime 的邊界 - 開發與上線主線(MVP 優先) - 重要文件與驗收標準的定位 ## 系統組成 ### 1. Frontend(mkt.ose.tw) - 商家後台入口 - 實驗管理與發布流程 - 同頁 Visual Editor ### 2. FastAPI(mktapi.ose.tw) - 產品業務 API 入口 - 實驗編排、發布、runtime payload 組裝 - editor / runtime 對外服務 ### 3. Directus(mktcms.ose.tw) - 帳號、權限、內容與 schema 底座 - CMS 型資料管理 ### 4. Runtime SDK / Snippet - 網站端載入 - 分流 assignment - payload 套用與事件上報 ## 核心原則 - Frontend 正式業務資料以 `FastAPI` 為主入口,不直接以 Directus 當主要 API。 - `Directus schema`、`Domain model`、`API DTO`、`runtime payload` 不混用。 - Visual Editor 以「頁面為主角、控制最小化」為產品原則。 - 先完成可上線 MVP,再做大型 UI polish 與 legacy 深重構。 ## API 與資料寫入策略(明確版) - `FastAPI` 是對外唯一產品 API 入口(Admin / Editor / Runtime)。 - Frontend 與 SDK 不直接呼叫 Directus 作為業務 API。 - 內容型資料的 `C/U/D` 由 FastAPI 編排,透過 Directus adapter 寫入 Directus。 - Directus 負責 CMS 資料底座與 revision/audit 追蹤能力。 - 高頻系統型資料(如 assignment、runtime event、system log)由 FastAPI 直接處理與儲存,不走 Directus revision 流。 ## 實驗模型簡化規則(這輪) - 實驗匹配必須以 `URL 規則 + 裝置限制` 共同決定。 - 建立實驗時由系統自動建立「原始版本 Variant」。 - 使用者不手動輸入 `experiment_key` / `variant_key`(系統生成 `EX+timestamp` / `VA+timestamp`)。 - Variant 僅給使用者調整 `name` 與 `traffic_weight`。 - 移除 `is_control` 與 `variant_changes.enabled` 這兩個使用者認知成本高的欄位。 ## 主線交付範圍(MVP) 1. Editor 主幹穩定 - 穩定選取與可視回饋 - 即時編輯文字/連結/圖片/樣式 - 結構操作與 undo/redo 可回復 2. 管理流可跑通 - Experiment / Variant / Release 建立與更新 - Publish / Rollback 3. Runtime 可運行 - Bootstrap / Assign / Payload / Events 主流程 4. 驗證與營運 - validation、readiness、go/no-go、rollback 文件可執行 ## 模組邊界 - Frontend 規格:見 [FRONTEND_ARCHITECTURE_SPEC.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/frontend/FRONTEND_ARCHITECTURE_SPEC.md) - Visual Editor:見 [VISUAL_EDITOR_SPEC.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/frontend/VISUAL_EDITOR_SPEC.md) - Backend 架構:見 [BACKEND_ARCHITECTURE_SPEC.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/backend/BACKEND_ARCHITECTURE_SPEC.md) - 實驗系統:見 [EXPERIMENT_SYSTEM_SPEC.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/backend/EXPERIMENT_SYSTEM_SPEC.md) - API 契約:見 [API_CONTRACT_MASTER.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/backend/API_CONTRACT_MASTER.md) - Runtime/SDK:見 [RUNTIME_SDK_SPEC.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/backend/RUNTIME_SDK_SPEC.md) - 安全與環境:見 [ENV_SECURITY_SPEC.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/backend/ENV_SECURITY_SPEC.md) - 資料歸屬矩陣:見 [DATA_OWNERSHIP_MATRIX.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/backend/DATA_OWNERSHIP_MATRIX.md) ## 新模組開發治理 - 新模組開發流程: [MODULE_DEVELOPMENT_PLAYBOOK.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/MODULE_DEVELOPMENT_PLAYBOOK.md) - 模組規格模板: [MODULE_SPEC_TEMPLATE.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/templates/MODULE_SPEC_TEMPLATE.md) - 所有新模組都必須先完成 data ownership 判斷,再開 API 與 UI 開發。 ## 執行節奏 - 任務主控: [EXECUTION_PLAN.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/EXECUTION_PLAN.md) - 目前細項: [CURRENT_WORK_ITEMS.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/CURRENT_WORK_ITEMS.md) - 延後細修: [DEFERRED_POLISH_BACKLOG.md](/Users/chirs/Documents/workspace/marketing/mkt.ose.tw/docs/DEFERRED_POLISH_BACKLOG.md)