feat: implement task management module
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>
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
# 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** 系統記錄並可計算剩餘時間
|
||||
Reference in New Issue
Block a user