Как человек обычно делает покупки? Если ему нужен не один продукт, а несколько, то очень вероятно,
что сначала он составит список, чтобы ничего не забыть. Сделать это можно где угодно: на листе бумаги,
в приложении для заметок или, например, в сообщении самому себе в мессенджере.
А теперь представьте, что это список не продуктов, а полноценных дел. И не каких-нибудь простых вроде
«помыть посуду» или «позвонить бабушке», а сложных — например, «организовать большой семейный праздник» или
«купить квартиру». Каждая из таких задач может разбиваться на несколько этапов со своими нюансами и сроками.
А если над их выполнением будет работать не один человек, а целая команда, то организация процесса станет ещё сложнее.
Как системы контроля версий помогают команде работать с общим кодом, так и трекеры задач позволяют эффективно
организовать совместную работу над задачами.
Результатом разработки бэкенда для трекера задач является программа, отвечающая за формирование модели данных для
картинки ниже:
Задачи могут быть трёх типов: обычные задачи, эпики и подзадачи.
Простейшим кирпичиком такой системы является задача (англ. task).
У задачи есть следующие свойства:
- Название, кратко описывающее суть задачи (например, «Переезд»).
- Описание, в котором раскрываются детали.
- Уникальный идентификационный номер задачи, по которому её можно будет найти.
- Статус, отображающий её прогресс. Выделяем следующие этапы жизни задачи:
- NEW — задача только создана, но к её выполнению ещё не приступили.
- IN_PROGRESS — над задачей ведётся работа.
- DONE — задача выполнена.
Иногда для выполнения какой-нибудь масштабной задачи её лучше разбить на подзадачи (англ. subtask). Большую задачу, которая делится на подзадачи, мы называем эпиком (англ. epic). Таким образом, в нашей системе задачи могут быть трёх типов: обычные задачи, эпики и подзадачи. Для них выполняются следующие условия:
- Для каждой подзадачи известно, в рамках какого эпика она выполняется.
- Каждый эпик знает, какие подзадачи в него входят.
- Завершение всех подзадач эпика считается завершением эпика.
- Возможность хранить задачи всех типов (Задача / Эпик / Подзадача).
- Возможности для задач (task):
- Получение списка всех задач. Эндпоинт: GET /task/task
- Удаление всех задач. Эндпоинт: DELETE /task/task
- Получение по идентификатору. Эндпоинт: GET /task/task/?id=
- Создание. Сам объект передается в качестве параметра. Эндпоинт: POST /task/task
- Обновление. Новая версия объекта с верным идентификатором передаётся в виде параметра.
Эндпоинт: POST /task/task/?id= - Удаление по идентификатору. Эндпоинт: DELETE /task/task/?id=
- Возможности для подзадач (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=
- Возможности для эпиков (epic):
- Получение списка всех эпиков. Эндпоинт: GET /task/epic
- Удаление всех эпиков. Эндпоинт: DELETE /task/epic
- Получение по идентификатору. Эндпоинт: GET /task/epic/?id=
- Создание. Сам объект передается в качестве параметра. Эндпоинт: POST /task/epic
- Обновление. Новая версия объекта с верным идентификатором передаётся в виде параметра.
Эндпоинт: POST /task/epic/?id= - Удаление по идентификатору. Эндпоинт: DELETE /task/epic/?id=
При удалении эпика удаляется все его подзадачи.
- Для всех типов звдач:
- получение истории просмотров. Эндпоинт: GET /task/history
- получение списка всех задач. Эндпоинт: GET /tasks
- Управление статусами осуществляется по следующим правилам:
- Менеджер сам не выбирает статус для задачи. Информация о нём приходит менеджеру вместе с информацией о самой задаче.
По этим данным в одних случаях он будет сохранять статус, в других будет рассчитывать.
Правила для эпиков:- если у эпика нет подзадач или все они имеют статус NEW, то статус должен быть NEW.
- если все подзадачи имеют статус DONE, то и эпик считается завершённым — со статусом DONE.
- во всех остальных случаях статус должен быть IN_PROGRESS.
- Менеджер сам не выбирает статус для задачи. Информация о нём приходит менеджеру вместе с информацией о самой задаче.
По этим данным в одних случаях он будет сохранять статус, в других будет рассчитывать.