Skip to content

Java Kanban - это система управления задачами. Проект представляет собой полнофункциональный трекер задач с поддержкой эпиков, подзадач и истории просмотров.

Notifications You must be signed in to change notification settings

Just-Roman/java-kanban

Repository files navigation

Java Kanban - Система управления задачами

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

Java Kanban - это система управления задачами, реализованная на Java с использованием HTTP API. Проект представляет собой полнофункциональный трекер задач с поддержкой эпиков, подзадач и истории просмотров.

Основные возможности

Типы задач

  • Task - обычные задачи с названием, описанием, статусом, продолжительностью и временем начала
  • Epic - крупные задачи, состоящие из подзадач
  • Subtask - подзадачи, принадлежащие эпику

Статусы задач

  • NEW - новая задача
  • IN_PROGRESS - задача в работе
  • DONE - выполненная задача

Функциональность

  • ✅ Создание, обновление и удаление задач всех типов
  • ✅ Автоматическое управление статусами эпиков на основе подзадач
  • ✅ История просмотров задач
  • ✅ Приоритизация задач по времени начала
  • ✅ Проверка пересечений времени выполнения задач
  • ✅ Сохранение и загрузка данных из CSV файла
  • ✅ HTTP API для взаимодействия с системой
  • ✅ Полное покрытие тестами

Архитектура

Основные компоненты

Модели данных

  • Task - базовый класс для всех задач
  • Epic - эпик, содержащий подзадачи
  • Subtask - подзадача с привязкой к эпику
  • Status - перечисление статусов задач

Менеджеры

  • TaskManager - интерфейс для управления задачами
  • InMemoryTaskManager - реализация в памяти
  • FileBackedTaskManager - реализация с сохранением в файл
  • HistoryManager - управление историей просмотров
  • InMemoryHistoryManager - реализация истории в памяти

HTTP сервер

  • HttpTaskServer - основной HTTP сервер на порту 8080
  • TaskHandler - обработчик для обычных задач
  • EpicHandler - обработчик для эпиков
  • SubtaskHandler - обработчик для подзадач
  • HistoryHandler - обработчик для истории
  • PrioritizedHandler - обработчик для приоритизированных задач

API Endpoints

Задачи (Tasks)

  • GET /tasks - получить все задачи
  • GET /tasks/{id} - получить задачу по ID
  • POST /tasks - создать новую задачу
  • POST /tasks (с ID) - обновить существующую задачу
  • DELETE /tasks/{id} - удалить задачу

Эпики (Epics)

  • GET /epics - получить все эпики
  • GET /epics/{id} - получить эпик по ID
  • GET /epics/{id}/subtasks - получить подзадачи эпика
  • POST /epics - создать новый эпик
  • DELETE /epics/{id} - удалить эпик

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

  • GET /subtasks - получить все подзадачи
  • GET /subtasks/{id} - получить подзадачу по ID
  • POST /subtasks - создать новую подзадачу
  • POST /subtasks (с ID) - обновить существующую подзадачу
  • DELETE /subtasks/{id} - удалить подзадачу

Дополнительные endpoints

  • GET /history - получить историю просмотров
  • GET /prioritized - получить приоритизированные задачи

Особенности реализации

Управление статусами эпиков

Статус эпика автоматически обновляется на основе статусов подзадач:

  • Если все подзадачи имеют статус NEW → эпик NEW
  • Если все подзадачи имеют статус DONE → эпик DONE
  • В остальных случаях → эпик IN_PROGRESS

Приоритизация задач

Задачи автоматически сортируются по времени начала выполнения. Система проверяет пересечения времени выполнения и предотвращает создание конфликтующих задач.

История просмотров

Система ведет историю просмотров задач с автоматическим удалением дубликатов и обновлением при повторных просмотрах.

Сохранение данных

Данные сохраняются в CSV формате в файл tasksFile.csv с поддержкой загрузки при старте приложения.

Структура проекта

src/ru/practicum/task_tracker/
├── task/ # Модели данных
│ ├── Task.java
│ ├── Epic.java
│ ├── Subtask.java
│ └── Status.java
├── manager/ # Менеджеры
│ ├── TaskManager.java
│ ├── InMemoryTaskManager.java
│ ├── FileBackedTaskManager.java
│ ├── HistoryManager.java
│ └── InMemoryHistoryManager.java
├── http/ # HTTP сервер
│ ├── HttpTaskServer.java
│ ├── handler/ # Обработчики запросов
│ ├── adapter/ # Адаптеры для JSON
│ └── Exception/ # Исключения
├── CSVFormatter.java # Форматирование CSV
├── Managers.java # Фабрика менеджеров
└── Main.java # Демонстрация функциональности

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

Проект включает комплексные тесты:

  • Unit тесты для всех менеджеров
  • HTTP API тесты
  • Тесты истории просмотров
  • Тесты приоритизации задач

Зависимости

  • Gson - для JSON сериализации/десериализации
  • JUnit 5 - для тестирования
  • Java HTTP Server - встроенный HTTP сервер

Контакты

  • Telegram - @sobolev_rs

About

Java Kanban - это система управления задачами. Проект представляет собой полнофункциональный трекер задач с поддержкой эпиков, подзадач и истории просмотров.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages