# Tasks: add-resource-workload ## Phase 1: 資料模型與基礎設施 - [x] **1.1** 建立 WorkloadSnapshot model (`backend/app/models/workload_snapshot.py`) - [x] **1.2** 建立 Alembic migration 建立 `pjctrl_workload_snapshots` 表 - [x] **1.3** 建立 Workload schemas (`backend/app/schemas/workload.py`) ## Phase 2: 核心服務層 - [x] **2.1** 實作 `workload_service.py` 核心邏輯 - ISO 週計算函式 - 使用者週負載計算 - 負載等級判定(normal/warning/overloaded) - [x] **2.2** 實作 Redis 快取整合 - 快取讀取/寫入 - TTL 設定 ## Phase 3: API 端點 - [x] **3.1** 建立 workload router (`backend/app/api/workload/router.py`) - [x] **3.2** 實作 `GET /api/workload/heatmap` - 團隊負載熱圖 - [x] **3.3** 實作 `GET /api/workload/user/{user_id}` - 使用者負載詳情 - [x] **3.4** 實作 `GET /api/workload/me` - 當前使用者負載(替代 3.4 的容量更新) - [x] **3.5** 註冊 workload router 至 main.py ## Phase 4: 權限控制 - [x] **4.1** 實作部門隔離邏輯 - super_admin 可查看所有 - manager 可查看同部門 - engineer 僅可查看自己 ## Phase 5: 測試 - [x] **5.1** 單元測試:負載計算邏輯 - [x] **5.2** 單元測試:週邊界計算 - [x] **5.3** API 測試:heatmap 端點 - [x] **5.4** API 測試:user workload 端點 - [x] **5.5** API 測試:權限控制 ## Phase 6: E2E 測試與驗證 - [x] **6.1** 自動化 E2E 測試:負載熱圖完整流程 - 建立測試使用者與任務資料 - 驗證負載計算正確性 - 驗證負載等級判定 - [x] **6.2** 自動化 E2E 測試:權限控制流程 - super_admin 可查看所有人 - 一般使用者僅能查看自己 - 跨部門存取拒絕 - [x] **6.3** 自動化 E2E 測試:Redis 快取驗證 - 首次請求計算並快取 - 二次請求命中快取 - [x] **6.4** 更新 API 文件(OpenAPI 自動生成) ## Dependencies ``` 1.1, 1.2 → 可平行執行 1.3 → 依賴 1.1 2.1 → 依賴 1.1, 1.3 2.2 → 依賴 2.1 3.1-3.5 → 依賴 2.1, 2.2 4.1 → 依賴 3.1 5.1-5.5 → 可平行執行,依賴 Phase 3, 4 6.1-6.4 → 依賴 Phase 3, 4, 5 ``` ## Validation Criteria 每個任務完成後需確認: - 程式碼無語法錯誤 - 相關測試通過 - 符合現有程式碼風格