DDD 架構輔助技能
觸發條件
| 用戶說法 | 觸發 |
|---|---|
| 新增功能、新模組 | ✅ |
| 架構檢查、設計 | ✅ |
| 建立新檔案時 | ✅ 自動檢查 |
可用工具
此技能使用標準檔案操作:
| 操作 | 工具 |
|---|---|
| 搜尋 import | grep_search(query="from.*import", isRegexp=True) |
| 檢查目錄 | list_dir() |
| 讀取檔案 | read_file() |
| 建立檔案 | create_file() |
DDD 層級結構
code
src/
├── domain/ # 領域層(核心業務邏輯)
│ ├── entities/ # 實體
│ ├── value_objects/# 值物件
│ ├── aggregates/ # 聚合根
│ ├── repositories/ # Repository 介面(抽象)
│ └── services/ # 領域服務
├── application/ # 應用層
│ ├── use_cases/ # 用例
│ └── dtos/ # 資料傳輸物件
├── infrastructure/ # 基礎設施層
│ ├── persistence/ # 資料庫實作
│ └── services/ # 外部服務實作
└── interfaces/ # 介面層
├── api/ # REST API
└── mcp/ # MCP Server
依賴規則
code
✅ 允許的依賴方向: Presentation → Application → Domain Infrastructure → Domain (實作介面) ❌ 禁止的依賴: Domain → Infrastructure Domain → Application Application → Presentation
標準工作流程
流程 A:建立新功能腳手架
python
# 「新增 Order 領域」
# 1. 建立 Domain 層
create_file("src/domain/entities/order.py", "class Order: ...")
create_file("src/domain/repositories/order_repository.py", "class IOrderRepository(ABC): ...")
# 2. 建立 Application 層
create_file("src/application/use_cases/create_order.py", "class CreateOrder: ...")
create_file("src/application/dtos/order_dto.py", "@dataclass class OrderDTO: ...")
# 3. 建立 Infrastructure 層
create_file("src/infrastructure/persistence/order_repository.py", "class OrderRepository(IOrderRepository): ...")
流程 B:架構違規檢查
python
# 檢查 Domain 層是否導入 Infrastructure
grep_search(
query="from.*infrastructure.*import",
isRegexp=True,
includePattern="**/domain/**/*.py"
)
# 如果有結果 → 違規!
違規類型與修復
| 違規 | 問題 | 修復 |
|---|---|---|
| Domain → Infrastructure | 領域層不應依賴基礎設施 | 使用 Repository 介面 |
| 直接 SQL 在 Domain | 資料存取應在 Infrastructure | 抽出到 Repository |
| Application → DB | 應用層不應直接操作資料庫 | 透過 Repository |
輸出範例
code
🏗️ DDD 架構檢查
✅ 依賴方向正確
✅ DAL 正確分離
⚠️ 警告:
- src/domain/services/user_service.py:15
導入了 infrastructure 模組
建議:
將資料庫操作移至 Repository
相關技能
- •
code-refactor- 重構違規程式碼 - •
code-reviewer- 審查程式碼品質