Контекст
После внедрения функционала досок необходимо реализовать основной модуль системы — задачи. Модуль задач является центральной единицей данных, вокруг которой строится взаимодействие пользователя с системой. Это требует создания масштабируемой структуры, поддерживающей связь с досками, учет сложности (Story Points), статусы выполнения и метаданные исполнителей.
Технические требования
- Локация логики:
src/tasks, api/v1/tasks
- Инструменты: PostgreSQL, бибилиотека валидации (Zod/Class-validator).
- Логика работы:
- Создать сущность
Task со связью "многие к одному" (ManyToOne) к сущности Board.
- Реализовать поле
status, поддерживающее кастомные состояния (по умолчанию: BACKLOG, IN_PROGRESS, DONE).
- Добавить поддержку полей:
title (string), description (text), priority (enum), due_date (timestamp).
- Интегрировать созданную ранее ролевую модель
CASL для проверки прав на создание задач внутри конкретной доски.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Реализовать поддержку пагинации (Limit/Offset или Cursor-based) для эндпоинта получения списка задач, чтобы избежать деградации производительности на больших досках.
- Ошибки: Выбрасывать
400 Bad Request при попытке привязать задачу к несуществующей доске и 403 Forbidden при отсутствии прав доступа к родительской доске.
- Безопасность: Обеспечить атомарность операций через транзакции СУБД, особенно при смене статусов, влияющих на агрегированные показатели доски.
Контекст
После внедрения функционала досок необходимо реализовать основной модуль системы — задачи. Модуль задач является центральной единицей данных, вокруг которой строится взаимодействие пользователя с системой. Это требует создания масштабируемой структуры, поддерживающей связь с досками, учет сложности (Story Points), статусы выполнения и метаданные исполнителей.
Технические требования
src/tasks,api/v1/tasksTaskсо связью "многие к одному" (ManyToOne) к сущностиBoard.status, поддерживающее кастомные состояния (по умолчанию:BACKLOG,IN_PROGRESS,DONE).title(string),description(text),priority(enum),due_date(timestamp).CASLдля проверки прав на создание задач внутри конкретной доски.Цель и критерии приемки (Definition of Done)
tasksс внешним ключомboard_idи индексами по статусу и приоритету.GET /tasks(с фильтрацией поboard_id),POST /tasks,PATCH /tasks/{id},DELETE /tasks/{id}.Lokiи экспортирует события создания/изменения статуса.Важные указания
400 Bad Requestпри попытке привязать задачу к несуществующей доске и403 Forbiddenпри отсутствии прав доступа к родительской доске.