69 lines
3.6 KiB
Markdown
69 lines
3.6 KiB
Markdown
## ADDED Requirements
|
|
|
|
### Requirement: My Tasks View displays all tasks assigned to the current user across projects
|
|
The system SHALL provide a My Tasks page that displays a unified list of all tasks assigned to the currently logged-in user, aggregated from all projects where the user has access.
|
|
|
|
#### Scenario: User accesses My Tasks page
|
|
- **WHEN** the user navigates to the My Tasks page (e.g., /my-tasks)
|
|
- **THEN** the system SHALL display a list of all tasks assigned to the user across all accessible projects
|
|
|
|
#### Scenario: My Tasks page shows task details
|
|
- **WHEN** the My Tasks list is displayed
|
|
- **THEN** each task item SHALL display at minimum: task name, project name, status, due date, and assignee
|
|
|
|
#### Scenario: User can filter tasks by project
|
|
- **WHEN** the user selects a specific project from the project filter dropdown
|
|
- **THEN** the list SHALL display only tasks from the selected project
|
|
|
|
#### Scenario: User can filter tasks by status
|
|
- **WHEN** the user selects a specific status from the status filter dropdown
|
|
- **THEN** the list SHALL display only tasks with the selected status
|
|
|
|
#### Scenario: User can sort tasks
|
|
- **WHEN** the user clicks a column header to sort
|
|
- **THEN** the list SHALL be sorted by that column in ascending/descending order
|
|
|
|
### Requirement: My Tasks View uses project task page layout and data table
|
|
The system SHALL reuse the existing project task page layout and data table components for rendering the My Tasks list to ensure visual and behavioral consistency.
|
|
|
|
#### Scenario: My Tasks uses consistent layout
|
|
- **WHEN** the My Tasks page is rendered
|
|
- **THEN** it SHALL use the same layout structure as the project task page (header, filters, data table, pagination)
|
|
|
|
#### Scenario: My Tasks uses data table component
|
|
- **WHEN** the task list is rendered
|
|
- **THEN** it SHALL use the same DataTable component used in project task pages
|
|
|
|
#### Scenario: Task columns match project task page
|
|
- **WHEN** the My Tasks data table is displayed
|
|
- **THEN** it SHALL display columns consistent with the project task page (e.g., Name, Project, Status, Priority, Due Date, Assignee)
|
|
|
|
### Requirement: User can navigate to task details from My Tasks
|
|
The system SHALL allow users to click on a task in the My Tasks list to navigate directly to that task's detail page within its project context.
|
|
|
|
#### Scenario: User clicks on a task
|
|
- **WHEN** the user clicks on a task row in the My Tasks list
|
|
- **THEN** the system SHALL navigate to the task detail page in its project (e.g., /projects/{project_id}/tasks/{task_id})
|
|
|
|
### Requirement: My Tasks only shows accessible projects
|
|
The system SHALL only include tasks from projects where the current user has at least read access.
|
|
|
|
#### Scenario: User sees only accessible tasks
|
|
- **WHEN** the My Tasks list is loaded
|
|
- **THEN** tasks from projects where the user lacks access SHALL NOT be displayed
|
|
|
|
### Requirement: API endpoint returns user's tasks across projects
|
|
The system SHALL provide an API endpoint that returns all tasks assigned to the current user, with optional filtering parameters.
|
|
|
|
#### Scenario: API returns user's tasks
|
|
- **WHEN** a authenticated user requests GET /api/tasks/my-tasks
|
|
- **THEN** the system SHALL return a list of tasks assigned to that user
|
|
|
|
#### Scenario: API supports project filter
|
|
- **WHEN** the user requests GET /api/tasks/my-tasks?project_id={id}
|
|
- **THEN** the system SHALL return only tasks from the specified project
|
|
|
|
#### Scenario: API supports status filter
|
|
- **WHEN** the user requests GET /api/tasks/my-tasks?status={status}
|
|
- **THEN** the system SHALL return only tasks with the specified status
|