Контекст
Текущая архитектура таск-трекера требует реализации базового функционала управления досками (Boards) — ключевого элемента группировки задач. Помимо стандартных операций создания и редактирования, необходимо заложить фундамент для гибкого отображения данных. Это позволит пользователям переключаться между различными представлениями (например, Kanban, List, Gantt) на уровне метаданных доски, что критично для UX и будущей масштабируемости интерфейса.
Технические требования
- Локация логики:
services/board-service, api/v1/boards, models/board.model.ts
- Инструменты: PostgreSQL (или текущая СУБД), TypeORM/Prisma, FastAPI/NestJS (согласно стеку проекта).
- Логика работы:
- Реализовать стандартный набор эндпоинтов:
GET /boards, GET /boards/{id}, POST /boards, PATCH /boards/{id}, DELETE /boards/{id}.
- В схему БД добавить поле
view_mode (Enum: kanban, list, calendar, gantt). Значение по умолчанию: kanban.
- При создании доски валидировать входные данные:
title (обязательно), description (опционально), owner_id.
- При обновлении
view_mode обеспечивать консистентность данных и немедленное отражение изменений в API-ответах.
Цель и критерии приемки (Definition of Done)
Важные указания
- Производительность: Добавить индекс на
owner_id и created_at для оптимизации выборок.
- Ошибки: Возвращать
404 Not Found, если доска не существует, и 422 Unprocessable Entity при передаче невалидного view_mode.
- Безопасность: Реализовать проверку прав доступа (Ownership/ACL) — редактировать и удалять доску может только её создатель или администратор.
Контекст
Текущая архитектура таск-трекера требует реализации базового функционала управления досками (Boards) — ключевого элемента группировки задач. Помимо стандартных операций создания и редактирования, необходимо заложить фундамент для гибкого отображения данных. Это позволит пользователям переключаться между различными представлениями (например, Kanban, List, Gantt) на уровне метаданных доски, что критично для UX и будущей масштабируемости интерфейса.
Технические требования
services/board-service,api/v1/boards,models/board.model.tsGET /boards,GET /boards/{id},POST /boards,PATCH /boards/{id},DELETE /boards/{id}.view_mode(Enum:kanban,list,calendar,gantt). Значение по умолчанию:kanban.title(обязательно),description(опционально),owner_id.view_modeобеспечивать консистентность данных и немедленное отражение изменений в API-ответах.Цель и критерии приемки (Definition of Done)
boardsс полямиid,title,description,view_mode,created_at,updated_at.PATCH.GETзапросы при наличии индексов не должно превышать 100мс для коллекции до 1000 элементов.Важные указания
owner_idиcreated_atдля оптимизации выборок.404 Not Found, если доска не существует, и422 Unprocessable Entityпри передаче невалидногоview_mode.