Создание API-сервиса для управления задачами внутри команды. Пользователи могут создавать проекты, добавлять задачи с привязкой к проектам, назначать исполнителей, менять статусы задач, и просматривать результаты работы. Это задание реализуется на базе Express, Prisma и PostgreSQL, с REST-архитектурой и поддержкой CRUD операций.
1. Регистрация пользователя:
-
Пользователь отправляет запрос на регистрацию (с именем и email).
-
Получает ID и токен для последующих действий.
2. Создание проекта:
-
Пользователь отправляет запрос для создания проекта.
-
В теле запроса: название проекта и краткое описание (опционально).
-
Проект сохраняется в базе данных с привязкой к пользователю.
3. Добавление задачи в проект:
-
Пользователь отправляет запрос для создания задачи в определенном проекте.
-
В теле запроса: название задачи, описание (опционально), и срок выполнения.
-
Задача сохраняется в базе данных с привязкой к проекту.
4. Назначение исполнителя задачи:
-
Пользователь отправляет запрос на назначение исполнителем конкретной задачи. Назначить себя исполнителем может только тот пользователь, который отправил запрос.
-
Задача обновляется в БД с привязкой к новому исполнителю.
5. Изменение статуса задачи:
-
У задачи есть статус "создана", "в процессе", "завершена".
-
Пользователь отправляет запрос для изменения статуса задачи (например, с «в процессе» на «завершена»). Поменять статус может только исполнитель задачи.
-
Сервис обновляет статус задачи в базе данных, и если задача завершена, фиксирует в бд время, затраченное на выполнение.
6. Просмотр всех проектов и задач:
-
Пользователь отправляет запрос для получения списка своих проектов и связанных с ними задач.
-
В ответе приходит список всех проектов пользователя с краткой информацией по каждой задаче (например, статус и исполнитель).
7. Просмотр времени работы одного разрабочика:
- Любой пользователь может запросить время работы одного разработчика и отфильтровать по проектам и временным интервалам.
Например:
- все проекты за месяц
- один проект за последнюю неделю
8. Просмотр полного времени работы над проектом:
- Любой пользователь может запросить общее время работы всех разработчиков над конкретным проектом за указанный период: за всё время, за месяц или за неделю.
-
Проект должен быть разработан с использованием Express.js фреймворка и Prisma ORM.
-
API должно соответствовать архитектуре REST.
-
Параметры подключения к базе данных, а также другие конфигурационные параметры (например, порты сервера) должны настраиваться через файл конфигурации и могут быть изменены без изменений в коде.
-
Нужно обеспечить гибкость кода для случая замены или расширения функционала.
-
Необходимо протестировать следующие флоу: регистрация, создание проекта, создание и изменение задач. Тесты должны охватывать успешные результаты, а также случаи с ошибками, такими как:
-
При некорректном вводе данных (например, пустое название задачи)
-
При проблемах с базой данных (например, невозможность подключиться)
-
При нарушении целостности данных (например, задача привязана к несуществующему проекту)
-
Необходимо логировать ошибки, возникающие при взаимодействии с базой данных и в ходе работы API.
-
Проект должен содержать набор скриптов или Postman-коллекцию с запросами для тестирования эндпоинтов.
-
Файл README.md должен содержать краткое описание проекта и инструкцию по запуску и тестированию проекта.
Для написания проекта понадобятся следующие теоретические знания:
1. Express framework
2. PostgreSQL and SQL
3. Prisma ORM
4. Аутентификация и авторизация
5. Rest API