Backend (FastAPI): - Database migration for spaces, projects, task_statuses, tasks tables - SQLAlchemy models with relationships - Pydantic schemas for CRUD operations - Spaces API: CRUD with soft delete - Projects API: CRUD with auto-created default statuses - Tasks API: CRUD, status change, assign, subtask support - Permission middleware with Security Level filtering - Subtask depth limit (max 2 levels) Frontend (React + Vite): - Layout component with navigation - Spaces list page - Projects list page - Tasks list page with status management Fixes: - auth_client.py: use 'username' field for external API - config.py: extend JWT expiry to 7 days - auth/router.py: sync Redis session with JWT expiry Tests: 36 passed (unit + integration) E2E: All APIs verified with real authentication OpenSpec: add-task-management archived 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2.9 KiB
2.9 KiB
Task Management
Purpose
任務管理核心系統,支援多層級架構 (Space > Project > Task > Sub-task)、狀態管理與任務指派功能。
ADDED Requirements
Requirement: Hierarchical Task Structure
系統 SHALL 支援多層級任務架構:空間 (Space) > 專案 (Project) > 任務 (Task) > 子任務 (Sub-task)。
Scenario: 建立空間
- GIVEN 使用者擁有建立空間的權限
- WHEN 使用者建立新空間
- THEN 系統建立空間並設定擁有者
- AND 空間可包含多個專案
Scenario: 建立專案
- GIVEN 使用者在某空間內擁有建立專案的權限
- WHEN 使用者建立新專案
- THEN 系統建立專案並關聯至該空間
- AND 設定專案的 Owner、Budget、Timeline、Security_Level
- AND 自動建立預設任務狀態 (To Do, In Progress, Blocked, Done)
Scenario: 建立任務與子任務
- GIVEN 使用者在專案內擁有建立任務的權限
- WHEN 使用者建立任務或子任務
- THEN 系統建立任務並維護父子關係
- AND 子任務深度限制為 2 層
Requirement: Project Security Level
系統 SHALL 根據專案的安全等級 (Security Level) 控制存取權限。
Scenario: Public 專案存取
- GIVEN 專案設定為 security_level = 'public'
- WHEN 任何已登入使用者嘗試存取
- THEN 系統允許存取
Scenario: Department 專案存取
- GIVEN 專案設定為 security_level = 'department'
- WHEN 使用者嘗試存取
- THEN 系統僅允許同部門使用者或專案成員存取
Scenario: Confidential 專案存取
- GIVEN 專案設定為 security_level = 'confidential'
- WHEN 使用者嘗試存取
- THEN 系統僅允許專案成員存取
- AND 系統管理員不受此限制
Requirement: Task Status Management
系統 SHALL 管理任務狀態,支援專案層級的狀態定義。
Scenario: 預設狀態建立
- GIVEN 使用者建立新專案
- WHEN 專案建立完成
- THEN 系統自動建立預設狀態: To Do, In Progress, Blocked, Done
Scenario: 狀態變更
- GIVEN 使用者擁有更新任務的權限
- WHEN 使用者變更任務狀態
- THEN 系統更新狀態並記錄變更時間
Scenario: 阻礙標記
- GIVEN 任務遇到阻礙無法進行
- WHEN 使用者將任務狀態變更為 "Blocked"
- THEN 系統設定 blocker_flag = true
Requirement: Task Assignment
系統 SHALL 支援任務指派與時間估算。
Scenario: 指派任務
- GIVEN 使用者擁有指派任務的權限
- WHEN 使用者將任務指派給某人
- THEN 系統更新 assignee_id
- AND 任務計入被指派者的工作負載
Scenario: 時間估算與追蹤
- GIVEN 任務已被指派
- WHEN 使用者設定 original_estimate 與回報 time_spent
- THEN 系統記錄並可計算剩餘時間