Skip to content

"Менеджер задач" - REST приложение на основе Java Core для организации совместной работы над задачами

Notifications You must be signed in to change notification settings

Serg-Shapkin/Task-manager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Task-manager

(англ. "Менеджер задач")

REST приложение на Java Core для совместной работы над задачами.

Идея

Как человек обычно делает покупки? Если ему нужен не один продукт, а несколько, то очень вероятно, что сначала он составит список, чтобы ничего не забыть. Сделать это можно где угодно: на листе бумаги, в приложении для заметок или, например, в сообщении самому себе в мессенджере. А теперь представьте, что это список не продуктов, а полноценных дел. И не каких-нибудь простых вроде «помыть посуду» или «позвонить бабушке», а сложных — например, «организовать большой семейный праздник» или «купить квартиру». Каждая из таких задач может разбиваться на несколько этапов со своими нюансами и сроками. А если над их выполнением будет работать не один человек, а целая команда, то организация процесса станет ещё сложнее. Как системы контроля версий помогают команде работать с общим кодом, так и трекеры задач позволяют эффективно организовать совместную работу над задачами. Результатом разработки бэкенда для трекера задач является программа, отвечающая за формирование модели данных для картинки ниже: Untitled-120_1696414230

Типы задач

Задачи могут быть трёх типов: обычные задачи, эпики и подзадачи.
Простейшим кирпичиком такой системы является задача (англ. task).
У задачи есть следующие свойства:

  1. Название, кратко описывающее суть задачи (например, «Переезд»).
  2. Описание, в котором раскрываются детали.
  3. Уникальный идентификационный номер задачи, по которому её можно будет найти.
  4. Статус, отображающий её прогресс. Выделяем следующие этапы жизни задачи:
    • NEW — задача только создана, но к её выполнению ещё не приступили.
    • IN_PROGRESS — над задачей ведётся работа.
    • DONE — задача выполнена.

Иногда для выполнения какой-нибудь масштабной задачи её лучше разбить на подзадачи (англ. subtask). Большую задачу, которая делится на подзадачи, мы называем эпиком (англ. epic). Таким образом, в нашей системе задачи могут быть трёх типов: обычные задачи, эпики и подзадачи. Для них выполняются следующие условия:

  • Для каждой подзадачи известно, в рамках какого эпика она выполняется.
  • Каждый эпик знает, какие подзадачи в него входят.
  • Завершение всех подзадач эпика считается завершением эпика.

Реализованный функционал

  1. Возможность хранить задачи всех типов (Задача / Эпик / Подзадача).
  2. Возможности для задач (task):
    • Получение списка всех задач. Эндпоинт: GET /task/task
    • Удаление всех задач. Эндпоинт: DELETE /task/task
    • Получение по идентификатору. Эндпоинт: GET /task/task/?id=
    • Создание. Сам объект передается в качестве параметра. Эндпоинт: POST /task/task
    • Обновление. Новая версия объекта с верным идентификатором передаётся в виде параметра.
      Эндпоинт: POST /task/task/?id=
    • Удаление по идентификатору. Эндпоинт: DELETE /task/task/?id=
  3. Возможности для подзадач (subtask):
    • Получение списка всех подзадач. Эндпоинт: GET /task/subtask
    • Получение списка всех подзадач определенного эпика. Эндпоинт: GET /task/subtask/epic/?id=
    • Удаление всех подзадач. Эндпоинт: DELETE /task/subtask
    • Получение по идентификатору. Эндпоинт: GET /task/subtask/?id=
    • Создание. Сам объект передается в качестве параметра. Эндпоинт: POST /task/subtask<
    • Обновление. Новая версия объекта с верным идентификатором передаётся в виде параметра.
      Эндпоинт: POST /task/subtask/?id=
    • Удаление по идентификатору. Эндпоинт: DELETE /task/subtask/?id=
  4. Возможности для эпиков (epic):
    • Получение списка всех эпиков. Эндпоинт: GET /task/epic
    • Удаление всех эпиков. Эндпоинт: DELETE /task/epic
    • Получение по идентификатору. Эндпоинт: GET /task/epic/?id=
    • Создание. Сам объект передается в качестве параметра. Эндпоинт: POST /task/epic
    • Обновление. Новая версия объекта с верным идентификатором передаётся в виде параметра.
      Эндпоинт: POST /task/epic/?id=
    • Удаление по идентификатору. Эндпоинт: DELETE /task/epic/?id=
      При удалении эпика удаляется все его подзадачи.
  5. Для всех типов звдач:
    • получение истории просмотров. Эндпоинт: GET /task/history
    • получение списка всех задач. Эндпоинт: GET /tasks
  6. Управление статусами осуществляется по следующим правилам:
    • Менеджер сам не выбирает статус для задачи. Информация о нём приходит менеджеру вместе с информацией о самой задаче. По этим данным в одних случаях он будет сохранять статус, в других будет рассчитывать.
      Правила для эпиков:
      • если у эпика нет подзадач или все они имеют статус NEW, то статус должен быть NEW.
      • если все подзадачи имеют статус DONE, то и эпик считается завершённым — со статусом DONE.
      • во всех остальных случаях статус должен быть IN_PROGRESS.

About

"Менеджер задач" - REST приложение на основе Java Core для организации совместной работы над задачами

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages