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