Skip to content

CrodiYa/java-kanban

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

113 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Java Kanban - Менеджер задач

Описание проекта

Java Kanban - это бэкенд-система для управления задачами, реализующая менеджер задач и HTTP-сервер.

Система поддерживает три типа задач: обычные задачи(Task), эпики(Epic) и подзадачи(SubTask).

Функциональные возможности

Управление задачами

  • Создание, обновление и удаление задач всех типов
  • Хранение истории просмотров задач
  • Очистка всей истории просмотров
  • Обработка ошибок при создании и обновлении задач

Получение информации

  • Получение списков всех задач/эпиков/подзадач
  • Поиск задач по ID
  • Получение всех подзадач конкретного эпика
  • Получение задач в порядке приоритета (по времени начала)

Технологический стек

  • Java - основной язык программирования
  • JUnit 5 - фреймворк для модульного тестирования
  • Gson - библиотека для работы с JSON

API

Поддерживаемые форматы времени

Система поддерживает следующие форматы для полей startTime:

  • DateTimeFormatter.ISO_LOCAL_DATE_TIME - 2023-10-15T14:30:00
  • DateTimeFormatter.ISO_DATE_TIME - 2023-10-15T14:30:00.000+03:00
  • yyyy-MM-dd HH:mm:ss.SSS - 2023-10-15 14:30:00.000
  • yyyy-MM-dd HH:mm:ss - 2023-10-15 14:30:00
  • dd.MM.yyyy HH:mm:ss - 15.10.2023 14:30:00

Коды состояния HTTP

Система использует следующие HTTP коды состояния для обработки запросов:

Код Описание
200 Успешный запрос (GET, HEAD, DELETE, OPTIONS)
201 Успешное создание или обновление ресурса (POST)
400 Неверный формат JSON или отсутствуют обязательные поля, неверный формат времени, id не число или меньше 0
404 Задача не найдена или неверный путь
405 Метод не разрешен для ресурса
406 Пересечение временных интервалов с существующими задачами
500 Внутренняя ошибка сервера

Задачи (Tasks)

Метод Путь Действие Коды ответа
HEAD /tasks или /tasks/{id} Получить заголовки 200, 404
GET /tasks Получить все задачи 200
GET /tasks/{id} Получить задачу по ID 200, 404
POST /tasks Создать новую задачу 201, 400, 406
DELETE /tasks Удалить все задачи 200
DELETE /tasks/{id} Удалить задачу по ID 200, 404
OPTIONS /tasks или /tasks/{id} Получить разрешенные методы 200

Формат JSON для задачи

{
  "taskId": 0,           // 0 - для создания, >0 - для обновления (обязательное)
  "title": "string",     // обязательное поле
  "description": "string", // обязательное поле
  "status": "NEW|IN_PROGRESS|DONE", // обязательное поле
  "duration": 10,        // продолжительность в минутах (опционально)
  "startTime": "1970-01-01T00:00:00.000" // дата и время ISO (опционально)
}

Эпики (Epics)

Метод Путь Действие Коды ответа
HEAD любой путь Получить заголовки 200, 404
GET /epics Получить все эпики 200
GET /epics/{id} Получить эпик по ID 200, 404
GET /epics/{id}/subtasks Получить все подзадачи эпика 200, 404
POST /epics Создать новый эпик 201, 400, 406
DELETE /epics Удалить все эпики 200
DELETE /epics/{id} Удалить эпик по ID 200, 404
DELETE /epics/{id}/subtasks Удалить все подзадачи эпика 200, 404
OPTIONS любой путь Получить разрешенные методы 200

Формат JSON для эпика

{
  "taskId": 0,           //0 - для создания, >0 - для обновления (обязательное)
  "title": "string",     // обязательное поле
  "description": "string", // обязательное поле
  "status": "NEW|IN_PROGRESS|DONE", // только для чтения
  "subtasks": [1, 2, 3], // только для чтения
  "duration": 10,        // только для чтения
  "startTime": "1970-01-01T00:00:00.000" // только для чтения
}

Подзадачи (Subtasks)

Метод Путь Действие Коды ответа
HEAD /subtasks или /subtasks/{id} Получить заголовки 200, 404
GET /subtasks Получить все подзадачи 200
GET /subtasks/{id} Получить подзадачу по ID 200, 404
POST /subtasks Создать новую подзадачу 201, 400, 406
DELETE /subtasks Удалить все подзадачи 200
DELETE /subtasks/{id} Удалить подзадачу по ID 200, 404

Формат JSON для подзадачи

{
  "taskId": 0,           // 0 - для создания, >0 - для обновления (обязательное)
  "title": "string",     // обязательное поле
  "description": "string", // обязательное поле
  "status": "NEW|IN_PROGRESS|DONE", // обязательное поле
  "epicId": 123,         // обязательное поле - ID родительского эпика
  "duration": 10,        // продолжительность в минутах (опционально)
  "startTime": "1970-01-01T00:00:00.000" // дата и время ISO (опционально)
}

История просмотров (History)

Метод Путь Действие Коды ответа
HEAD /history Получить заголовки 200
GET /history Получить историю просмотров 200
OPTIONS /history Получить разрешенные методы 200

Список приоритетов (Prioritized)

Метод Путь Действие Коды ответа
HEAD /prioritized Получить заголовки 200
GET /prioritized Получить отсортированный список задач 200
OPTIONS /prioritized Получить разрешенные методы 200

Тестирование

Проект включает модульные тесты с использованием JUnit 5 для проверки функциональности менеджера задач и HTTP-сервера.

About

Repository for homework project

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages