feat: implement workload heatmap module
- Backend (FastAPI):
- Workload heatmap API with load level calculation
- User workload detail endpoint with task breakdown
- Redis caching for workload calculations (1hr TTL)
- Department isolation and access control
- WorkloadSnapshot model for historical data
- Alembic migration for workload_snapshots table
- API Endpoints:
- GET /api/workload/heatmap - Team workload overview
- GET /api/workload/user/{id} - User workload detail
- GET /api/workload/me - Current user workload
- Load Levels:
- normal: <80%, warning: 80-99%, overloaded: >=100%
- Tests:
- 26 unit/API tests
- 15 E2E automated tests
- 77 total tests passing
- OpenSpec:
- add-resource-workload change archived
- resource-management spec updated
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
# 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
|
||||
|
||||
每個任務完成後需確認:
|
||||
- 程式碼無語法錯誤
|
||||
- 相關測試通過
|
||||
- 符合現有程式碼風格
|
||||
Reference in New Issue
Block a user