Files
beabigegg daca7798e3 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>
2025-12-29 00:31:34 +08:00

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 系統記錄並可計算剩餘時間