Nodejs-разработка

Присоединяйтесь к нашей программе обучения

Третье задание: Таск-менеджер для команды

Создание API-сервиса для управления задачами внутри команды. Пользователи могут создавать проекты, добавлять задачи с привязкой к проектам, назначать исполнителей, менять статусы задач, и просматривать результаты работы. Это задание реализуется на базе Express, Prisma и PostgreSQL, с REST-архитектурой и поддержкой CRUD операций.

User Flow

1. Регистрация пользователя:

  • Пользователь отправляет запрос на регистрацию (с именем и email).

  • Получает ID и токен для последующих действий.

2. Создание проекта:

  • Пользователь отправляет запрос для создания проекта.

  • В теле запроса: название проекта и краткое описание (опционально).

  • Проект сохраняется в базе данных с привязкой к пользователю.

3. Добавление задачи в проект:

  • Пользователь отправляет запрос для создания задачи в определенном проекте.

  • В теле запроса: название задачи, описание (опционально), и срок выполнения.

  • Задача сохраняется в базе данных с привязкой к проекту.

4. Назначение исполнителя задачи:

  • Пользователь отправляет запрос на назначение исполнителем конкретной задачи. Назначить себя исполнителем может только тот пользователь, который отправил запрос.

  • Задача обновляется в БД с привязкой к новому исполнителю.

5. Изменение статуса задачи:

  • У задачи есть статус "создана", "в процессе", "завершена".

  • Пользователь отправляет запрос для изменения статуса задачи (например, с «в процессе» на «завершена»). Поменять статус может только исполнитель задачи.

  • Сервис обновляет статус задачи в базе данных, и если задача завершена, фиксирует в БД время, затраченное на выполнение.

6. Просмотр всех проектов и задач:

  • Пользователь отправляет запрос для получения списка своих проектов и связанных с ними задач.

  • В ответе приходит список всех проектов пользователя с краткой информацией по каждой задаче (например, статус и исполнитель).

7. Просмотр времени работы одного разработчика:

  • Любой пользователь может запросить время работы одного разработчика и отфильтровать по проектам и временным интервалам.

  • Например:

    • все проекты за месяц

    • один проект за последнюю неделю.

8. Просмотр полного времени работы над проектом:

  • Любой пользователь может запросить общее время работы всех разработчиков над конкретным проектом за указанный период: за всё время, за месяц или за неделю.

Требования

  • Проект должен быть разработан с использованием Express.js фреймворка и Prisma ORM.

  • API должно соответствовать архитектуре REST.

  • Параметры подключения к базе данных, а также другие конфигурационные параметры (например, порты сервера) должны настраиваться через файл конфигурации и могут быть изменены без изменений в коде.

  • Нужно обеспечить гибкость кода для случая замены или расширения функционала.

  • Необходимо протестировать следующие флоу: регистрация, создание проекта, создание и изменение задач. Тесты должны охватывать успешные результаты, а также случаи с ошибками, такими как:

    • При некорректном вводе данных (например, пустое название задачи)

    • При проблемах с базой данных (например, невозможность подключиться)

    • При нарушении целостности данных (например, задача привязана к несуществующему проекту)

  • Необходимо логировать ошибки, возникающие при взаимодействии с базой данных и в ходе работы API.

  • Проект должен содержать набор скриптов или Postman-коллекцию с запросами для тестирования эндпоинтов.

  • Файл README.md должен содержать краткое описание проекта и инструкцию по запуску и тестированию проекта.

менеджер программы обучения

По любым вопросам по программе обучения пишите Светлане в Telegram