LinkDesk/openspec/changes/align-my-task-layout-to-shot/specs/my-tasks-view/spec.md

2.8 KiB

MODIFIED Requirements

Requirement: My Tasks View uses Shot Task page layout instead of project task page layout

The system SHALL use the Shot Task page layout and styling for the My Tasks page to ensure visual consistency across the application.

Scenario: My Tasks uses Shot Task layout style

  • WHEN the My Tasks page is rendered
  • THEN it SHALL use the same layout structure as the Shot Task page (header with filters, data table, pagination)

Scenario: My Tasks uses Shot Task visual styling

  • WHEN the My Tasks page components are rendered
  • THEN they SHALL use the same visual styling (colors, spacing, typography) as the Shot Task page

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

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})

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

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 selected status