Files
PROJECT-CONTORL/openspec/changes/archive/2025-12-28-add-resource-workload/tasks.md
beabigegg 61fe01cb6b 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>
2025-12-29 01:13:21 +08:00

76 lines
2.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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
每個任務完成後需確認:
- 程式碼無語法錯誤
- 相關測試通過
- 符合現有程式碼風格