Sprint 1: 平台基礎 - 認證與權限 (Week 1-2)
狀態: ✅ 已完成 完成日期: 2025-11-03 Story Points: 18 點(5 + 8 + 5)
📋 Sprint 目標
完成用戶認證與角色權限系統,建立基礎 Layout
📊 Sprint Backlog
📝 文檔階段 - ✅ 已完成 (2025-10-31)
| 任務 | 狀態 | 完成日期 | 備註 |
|---|---|---|---|
| 創建 Epic 0 文檔 | ✅ | 2025-10-31 | epic-0-platform-infrastructure.md (436 行) |
| 創建 US-001 文檔 | ✅ | 2025-10-31 | user-login.md (372 行) |
| 創建 US-002 文檔 | ✅ | 2025-10-31 | role-based-access.md (485 行) |
| 創建 US-003 文檔 | ✅ | 2025-10-31 | basic-layout.md (464 行) |
| 創建 US-001 SBE 場景 | ✅ | 2025-10-31 | 3 個場景 |
| 創建 US-002 SBE 場景 | ✅ | 2025-10-31 | 3 個場景 |
| 創建 US-003 SBE 場景 | ✅ | 2025-10-31 | 2 個場景 |
💻 開發階段 - ✅ 已完成
🎯 US-001: 用戶登入 (5 Story Points)
狀態: ✅ 已完成 (2025-11-03)
任務清單
| 任務 | 負責人 | 估時 | 狀態 | 備註 |
|---|---|---|---|---|
| 後端開發 | 1 天 | ✅ 已完成 | Mock API 實作 | |
| └─ 實作 POST /api/v1/auth/login API | - | 0.5 天 | ✅ | src/mocks/handlers/auth.ts |
| └─ JWT Token 生成邏輯 | - | 0.3 天 | ✅ | Access Token + Refresh Token |
| └─ 帳號鎖定邏輯 (Redis 計數器) | - | 0.2 天 | ✅ | Mock API 支援 |
| 前端開發 | 1-1.5 天 | ✅ 已完成 | ||
| └─ 創建 LoginPage 與 LoginForm 組件 | - | 0.5 天 | ✅ | src/pages/LoginPage.tsx |
| └─ 表單驗證邏輯 (React Hook Form + Zod) | - | 0.3 天 | ✅ | Username + Password 驗證 |
| └─ Redux Slice 整合 | - | 0.3 天 | ✅ | src/features/iam/me-slice.ts |
| └─ 路由保護邏輯 | - | 0.4 天 | ✅ | src/routes/ProtectedRoute.tsx |
| 整合與測試 | 0.5 天 | ✅ 已完成 | ||
| └─ 整合測試 (API + UI) | - | 0.2 天 | ✅ | 手動測試驗證 |
| └─ E2E 測試 | - | 0.2 天 | ⏭️ | Sprint 1 後補充 |
| └─ Mock API 更新 | - | 0.1 天 | ✅ | 支援 username 登入 |
完成標準 (Definition of Done)
- 後端 API 實作完成(Mock API)
- 前端 UI 實作完成並符合設計規範
- 整合測試通過(API + UI)
- E2E 測試通過(至少涵蓋 Scenario 1、2、5)- 可選
- 單元測試覆蓋率 > 80% - 可選
- Mock API 已更新
- 手動測試指南已創建(docs/testing/US-001-manual-testing-guide.md)
- API 文檔已更新(docs/api-specs/authentication.md)
🎯 US-002: 角色權限控制 (8 Story Points)
狀態: ✅ 已完成 (2025-11-03)
任務清單
| 任務 | 負責人 | 估時 | 狀態 | 備註 |
|---|---|---|---|---|
| 後端開發 | 1.5 天 | ✅ 已完成 | Mock API 實作 | |
| └─ API 層級權限檢查中間件 | - | 0.5 天 | ✅ | src/mocks/middleware/auth-middleware.ts |
| └─ Token 刷新端點 | - | 0.3 天 | ✅ | POST /api/v1/auth/refresh |
| └─ 數據層級權限過濾 | - | 0.5 天 | ⏭️ | Phase 2 實作 |
| └─ 審計日誌記錄 | - | 0.2 天 | ✅ | Console 審計日誌(403 錯誤) |
| 前端開發 | 1.5-2 天 | ✅ 已完成 | ||
| └─ ProtectedRoute 組件 | - | 0.3 天 | ✅ | src/routes/protected-route.tsx |
| └─ usePermission Hook | - | 0.3 天 | ✅ | src/hooks/use-permission.ts |
| └─ API 攔截器 (Token 附加與刷新) | - | 0.5 天 | ✅ | src/services/apiClient.ts |
| └─ 動態選單顯示 | - | 0.4 天 | ✅ | menu-config.ts + 角色過濾 |
| └─ 403 錯誤頁面 | - | 0.2 天 | ✅ | src/pages/forbidden-page.tsx |
| 整合與測試 | 1 天 | ✅ 已完成 | ||
| └─ 整合測試 (多角色權限檢查) | - | 0.4 天 | ✅ | 手動測試指南 |
| └─ E2E 測試 (3 種角色訪問場景) | - | 0.4 天 | ⏭️ | Sprint 1 後補充 |
| └─ Mock API 更新 | - | 0.2 天 | ✅ | 訂單 API + 權限檢查 |
完成標準 (Definition of Done)
- 後端權限檢查中間件實作完成(Mock API)
- 前端路由保護與組件權限檢查實作完成
- Token 自動刷新機制實作完成
- 整合測試通過(多種角色的權限驗證)
- E2E 測試通過(至少涵蓋 3 種角色的訪問場景)- 可選
- 單元測試覆蓋率 > 80% - 可選
- API 文檔已更新(權限要求)
- Mock API 已更新(支援角色權限檢查)
- 403 錯誤頁面實作完成
- 審計日誌記錄未授權訪問
🎯 US-003: 基礎 Layout 與導航 (5 Story Points)
狀態: ✅ 已完成 (2025-11-03)
任務清單
| 任務 | 負責人 | 估時 | 狀態 | 備註 |
|---|---|---|---|---|
| Layout 組件開發 | 1.5 天 | ✅ 已完成 | ||
| └─ MainLayout 組件 | - | 0.3 天 | ✅ | src/layouts/MainLayout.tsx |
| └─ Header 組件 | - | 0.3 天 | ✅ | src/layouts/Header.tsx |
| └─ Sidebar 組件 | - | 0.5 天 | ✅ | src/layouts/Sidebar.tsx |
| └─ Footer 組件 | - | 0.1 天 | ✅ | src/layouts/Footer.tsx |
| └─ Sidebar 收合邏輯 | - | 0.3 天 | ✅ | SidebarContext + localStorage |
| 動態選單與路由整合 | 0.5 天 | ✅ 已完成 | ||
| └─ 選單配置 (menuConfig.ts) | - | 0.2 天 | ✅ | src/layouts/menuConfig.ts |
| └─ 角色權限過濾 | - | 0.1 天 | ✅ | filterMenuItems 函數 |
| └─ 當前頁面高亮邏輯 | - | 0.1 天 | ✅ | NavLink 自動處理 |
| └─ React Router 整合 | - | 0.1 天 | ✅ | MainLayout + Outlet |
| 用戶選單與通知 | 0.5 天 | ✅ 已完成 | ||
| └─ 用戶選單下拉 | - | 0.2 天 | ✅ | UserMenu 組件 |
| └─ 登出邏輯 | - | 0.2 天 | ✅ | logout action + 重定向 |
| └─ 通知鈴鐺 UI | - | 0.1 天 | ✅ | Phase 2 功能預留 |
| 測試與優化 | 0.5 天 | ✅ 已完成 | ||
| └─ 單元測試 | - | 0.2 天 | ⏭️ | Sprint 1 後補充 |
| └─ 響應式測試 | - | 0.2 天 | ✅ | 手動測試通過 |
| └─ 無障礙性測試 | - | 0.1 天 | ⏭️ | Sprint 1 後補充 |
完成標準 (Definition of Done)
- 所有 Layout 組件實作完成
- Sidebar 收合功能實作完成(含 localStorage 持久化)
- 響應式設計實作完成(桌面、平板、手機)
- Hamburger 選單與 Overlay 模式實作完成
- 動態選單顯示實作完成(根據角色過濾)
- 當前頁面高亮功能實作完成
- 用戶選單下拉實作完成(個人設定、登出)
- 通知鈴鐺 UI 實作完成(Phase 2 功能預留)
- 單元測試通過 - 可選
- E2E 測試通過(至少涵蓋 Scenario 1、2)- 可選
- 響應式測試通過(桌面、平板、手機)
- 手動測試指南已創建(docs/testing/US-003-manual-testing-guide.md)
📋 Sprint 完成檢查清單
- US-001: 用戶登入(已完成 2025-11-03)
- US-002: 角色權限控制(已完成 2025-11-03)
- US-003: 基礎 Layout(已完成 2025-11-03)
- Sprint 1 核心功能開發完成
- 手動測試指南已創建(US-001/002/003)
- API 文檔已更新(authentication.md)
- 單元測試補充(目標 >80% 覆蓋率)- 可選
- E2E 測試補充 - 可選
🔄 Sprint 回顧
完成日期: 2025-11-03
做得好的地方 ✅
- ✅ Mock API 實作快速,支援完整的認證與權限流程
- ✅ 前端組件結構清晰,復用性高
- ✅ 手動測試指南詳細,便於驗收
- ✅ 技術棧驗證成功(React 19 + TypeScript 5.9 + React Hook Form + Zod)
需要改進的地方 ⚠️
- ⚠️ E2E 自動化測試未完成(優先手動測試)
- ⚠️ 單元測試覆蓋率不足(聚焦業務功能)
- ⚠️ 文檔與開發同步需加強
行動項目 📋
- 📋 Sprint 2-3 完成後,統一補充 E2E 測試
- 📋 建立單元測試模板與最佳實踐
- 📋 持續完善手動測試指南
📚 相關文檔
User Story 文檔
SBE 場景
測試文檔
API 文檔
最後更新: 2025-11-04