Files
mkt.ose.tw/docs/backend/EXPERIMENT_SYSTEM_SPEC.md
2026-03-23 20:23:58 +08:00

2.1 KiB
Raw Permalink Blame History

Experiment System Spec

目標

定義銷售實驗主線的最小可上線系統範圍MVP

  • Experiment
  • Variant
  • Change Set
  • Release
  • Runtime delivery

這輪規格調整2026-03-22

  1. 實驗匹配規則必須同時支援:
  • URL 規則contains / equals / starts_with / regex
  • 裝置限制mobile / tablet / desktop
  1. 建立 Experiment 時,自動建立一個「原始版本 Variant」
  • 系統自動建立,不讓使用者手動調整該原始版本內容
  1. 移除 is_control
  • 不再讓使用者手動指定對照組
  1. 移除 variant_changes.enabled
  • 每筆 change 預設生效,不提供啟用/停用欄位
  1. key 全改為系統生成:
  • experiment_keyEX+timestamp
  • variant_keyVA+timestamp
  • 使用者不輸入 key
  1. Variant 簡化:
  • 不再有 status
  • 使用者建立/編輯 variant 只可調整 nametraffic_weight

核心流程

  1. 建立 Experiment
  2. 系統自動建立原始版本 Variant不可編輯內容
  3. 建立其他 Variant只編輯 name / traffic_weight
  4. 在 Editor 編輯 Variant changes
  5. Build Release產生 runtime payload
  6. Publish / Rollback
  7. Runtime assign + payload 套用 + event 回傳

Experiment 管理

  • 列表、建立、編輯、狀態流轉schedule / pause / resume / archive
  • 支援 module_type 與 targeting_config
  • targeting_config 最少要包含 url_rulesdevice_targets

Variant 管理

  • 列表、建立、編輯、刪除
  • 使用者可調整:nametraffic_weight
  • 系統管理欄位:variant_key
  • 不提供 statusis_control
  • change set 可讀可寫(不含 enabled 開關)

Release 管理

  • build由 variant_changes 聚合 payload
  • publish將 release 生效
  • rollback回到前一可用 release

Assignment 規則

  • 以 stable seed 決定 bucket
  • bucket 對映 variant weight
  • assignment 結果需可追蹤

第一版成功標準

  • 後台可完成「建立實驗 -> 建立變體 -> 編輯 -> build -> publish」
  • runtime 可正確回傳 assignment 與 payload
  • rollback 可恢復上一版本