PavelNaymovets / project_management_system

1 stars 0 forks source link

Система управления проектами

Технические требования

Основные блоки и функции, которые необходимо реализовать в программе:

Подробный список требований представлен по _ссылке_.

Реализация

ВАЖНО

Читайте *.md файлы на gitHub. Иначе не будут видны вставленные изображения.

Стэк

OpenJDK 18, Spring framework (Boot, Web, Security, Data JPA), Hibernate, Liquibase, Lombok, Logback, Slf4j, PostgreSQL, Docker, Swagger, RabbitMQ.

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

Проект состоит из 7 логических модулей:

И 3 папок:

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

dock:

docker-compose:

logs:

Архитектура:

Для описания архитектуры программы применены 5 диаграмм: 2 UML, 2 C4, 1 Physical model.

_(первый вариант архитектуры)_

UML:

C4:

Physical model:

Применено для отображения структуру таблиц и связей между таблицами в базе данных.

Use case diagram

Отображены функциональные возможности программы для пользователей согласно основным требованиям.

Image alt

Container diagram

Отображены основные модули программы и их взаимодействие между собой. Отображена легенда в левом верхнем углу схемы.

Image alt

Дополнительно отображены контроллеры, которые поясняют основную функциональность программы более детально.

Image alt

Deployment diagram

Отображено развертывание программы на сервере. В качестве сервера выступает мой рабочий компьютер. Пояснение по диаграмме: х1 значит 1 докер контейнер.

Image alt

Physical model

Отображена структура основных таблицы в которых хранятся данные из программы и связи между этими таблицами. Посмотреть краткое описание таблиц и их атрибутов можно _тут_.

Image alt

Права доступа пользователей

Доступ к ресурсам программы зависит от роли пользователя:

Метод deleteById() требует наличие роли ADMIN среди эндпоинтов:

Удалить данные можно только через панель администратора.

Дополнительный функционал

OpenApi

Для просмотра документации по проекту необходимо:

Log

Программа пишет логи в консоль и в файлы. Файлы расположены в папке _./logs_.

Email

При назначении исполнителя на задачу, программа асинхронно, с помощью rabbitMQ, отправит email уведомление сотруднику которому была поставлена задача:

Image alt

Пример уведомления:

Image alt

Тесты

Произведено функциональное тестирование программы согласно концепциям черного и белого ящика на соответсвие требованиям из ТЗ.

Черный ящик

Составлено и реализовано 160 _тест-кейсов_ для ручного тестирования API с помощью программы postman. Тест-кейсы имеют определенную структуру и скриншоты ожидаемого результата.

Белый ящик

Написаны _модульные и интеграционные тесты_ для автоматизированной проверки функционала каждой из сущностей. Для выполнения интеграционных тестов создается отдельный докер контейнер с базой данных из образа postgres.

Запуск приложения

Файл CI-CD программы _run-app.sh расположен в папке ./docker-compose/app_. Команда запуска из командной строки: bash run-app.sh. При запуске из командной строки необходимо находиться в папке расположения файла run-app.sh.

Во время запуска:

Параметры запуска: