Основные блоки и функции, которые необходимо реализовать в программе:
Подробный список требований представлен по _ссылке_.
Читайте *.md файлы на gitHub. Иначе не будут видны вставленные изображения.
OpenJDK 18, Spring framework (Boot, Web, Security, Data JPA), Hibernate, Liquibase, Lombok, Logback, Slf4j, PostgreSQL, Docker, Swagger, RabbitMQ.
Проект состоит из 7 логических модулей:
И 3 папок:
docker
Dockerfile
. Запуск CI-CD - run-app.sh
init.sh
, при развертывании контейнера базы данныхdocker
Для описания архитектуры программы применены 5 диаграмм: 2 UML, 2 C4, 1 Physical model.
_(первый вариант архитектуры)_
Применено для отображения структуру таблиц и связей между таблицами в базе данных.
Отображены функциональные возможности программы для пользователей согласно основным требованиям.
Отображены основные модули программы и их взаимодействие между собой. Отображена легенда в левом верхнем углу схемы.
Дополнительно отображены контроллеры, которые поясняют основную функциональность программы более детально.
Отображено развертывание программы на сервере. В качестве сервера выступает мой рабочий компьютер. Пояснение по диаграмме: х1
значит 1 докер контейнер.
Отображена структура основных таблицы в которых хранятся данные из программы и связи между этими таблицами. Посмотреть краткое описание таблиц и их атрибутов можно _тут_.
Доступ к ресурсам программы зависит от роли пользователя:
/api/v1/employee/**
- роль ADMIN
/api/v1/project/**
- роль MANAGER
/api/v1/team/**
- роль MANAGER
/api/v1/task/**
- роль USER
/api/v1/auth/**
- доступно всем пользователям/swagger-ui/**
- доступно всем пользователямМетод deleteById()
требует наличие роли ADMIN
среди эндпоинтов:
/api/v1/employee/**
/api/v1/project/**
/api/v1/team/**
/api/v1/task/**
Удалить данные можно только через панель администратора.
Для просмотра документации по проекту необходимо:
bash run-app.sh
. При запуске из командной строки необходимо находиться в папке расположения файла run-app.sh
.http://localhost:8080/pms/swagger-ui/index.html
Программа пишет логи в консоль и в файлы. Файлы расположены в папке _./logs_.
При назначении исполнителя на задачу, программа асинхронно, с помощью rabbitMQ
, отправит email уведомление сотруднику
которому была поставлена задача:
Пример уведомления:
Произведено функциональное тестирование программы согласно концепциям черного и белого ящика на соответсвие требованиям из ТЗ.
Составлено и реализовано 160 _тест-кейсов_ для ручного тестирования API с помощью программы postman
. Тест-кейсы имеют определенную
структуру и скриншоты ожидаемого результата.
Написаны _модульные и интеграционные тесты_ для автоматизированной проверки функционала каждой из сущностей.
Для выполнения интеграционных тестов создается отдельный докер контейнер с базой данных из образа postgres
.
Файл CI-CD программы _run-app.sh расположен в папке ./docker-compose/app_.
Команда запуска из командной строки: bash run-app.sh
. При запуске из командной строки необходимо находиться в папке расположения файла run-app.sh
.
Во время запуска:
pms-instance-exec.jar
pms-app:latest
docker-compose
файлpostgres
, контейнер системы миграции liqubase
(выполнит миграцию базы данных
в контейнер с базой данных postgres
), контейнер очереди RabbitMQ
, контейнер приложения pms-app
,Параметры запуска:
docker
, maven
, git bash
java
, которую использует maven
, должна быть 18.0.2.1
. Убедитесь, что в переменной среды JAVA_HOME
указана
именно эта версия. Иначе проект не скомпилируется, так как maven
берет значение из этой переменной.