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