SDD‐Domain Model - daniel-qa/Vue GitHub Wiki
Domain Model 關心業務語意與規則
不綁定 API、資料來源或傳輸格式
不反映資料結構,只表達概念與狀態
為什麼「不綁定格式」這件事超重要?
因為你其實是在做三件長線正確的事 👇
1️⃣ Domain 會變最慢
API 改版 3 次,domain 通常 0 次 👉 綁格式 = 每次 API 改都要動核心邏輯
2️⃣ Domain 是 AI / 測試 / 規則的最佳輸入
你之後如果:
用 AI 產測試
用 Agent 操作流程
寫規則引擎
AI 最需要的是:
乾淨、穩定、有語意的模型
不是雜訊滿滿的 DTO。
「業務語言模型」最標準、最被接受的說法是:
Domain Model
在 AI / DDD / 軟體工程裡,幾乎都是用這個詞。
- Data Model 的分類
「如果明天 UI 全砍,用 API / CLI 操作,這個欄位還有意義嗎?」
有 => Data Model
沒有 => UI Model
- 建議做法
先提供這三個資料 → AI / Windsurf 可生成基礎骨架
再補充 domain rules / events / policies → 完整落實 DDD
三個核心 + NOTE = DDD 所需的上下文、規則、流程說明
AI 或 Windsurf 就能生成大部分符合規範的程式碼與流程,減少人工解釋。
- Windsurf DDD 上下文說明
在使用 AI 或生成程式碼時,需提供以下三個維度的上下文給 Windsurf:
| 名稱 | 用法 |
|---|---|
| Data Model | 直接表示資料結構(Schema) |
| Data Domain | 表示聚合根、Bounded Context |
| Workflow | 表示業務流程 |
說明:
- Data Model: 描述每個 Entity 的欄位、型別、關聯等。
- Data Domain: 說明系統的聚合根與邊界,幫助 AI 理解 domain 的邏輯。
- Workflow: 描述業務流程、狀態流轉以及事件觸發規則。
GitHub spec-kit: 這是目前推動 SDD 最核心的開源工具包。
Tessl / Kiro: 這些是新興的平台,旨在實現「人類寫規格,AI 維護程式碼」的願景。
- SDD Level
Spec-first: 先寫好規格,用於當下的開發任務
Spec-anchored: 任務完成後規格保留下來,持續用於功能的演進和維護
Spec-as-source: 規格成為主要的原始檔,人類只編輯規格、不碰程式碼
目前的工具大多只停在第 1 層
Spec-Driven Development (SDD)
DDD:認知層(Cognitive Layer)
對齊人與人
對齊業務與技術
對齊語言與模型
🛠️ SDD:執行層(Execution Layer)
對齊 spec 與 code
對齊設計與實作
對齊意圖與結果
一個負責「想對」,一個負責「做對」。
4️⃣ 放在一起才是完全體(這才是重點) 正確的組合方式是: DDD → 產生 Domain Knowledge ↓ 轉成結構化 Spec ↓ SDD → 驅動 AI / 人類實作