Цель проекта - создать удобную систему для управления задачами, которая позволит пользователям эффективно организовывать и контролировать выполнение своих задач. В первую очередь, проект разработан для закрепления принципов проектирования и разработки бэкенда для современных веб-приложений.
- Проект представлен в виде мультисервиса;
- Spring Boot;
- Spring JPA;
- Hibernate;
- PostgreSQL;
- Spring MVC;
- Spring Security;
- Spring Mail (Для отправки почты с целью верификации пользователя);
- Swagger (К проекту прилагается open api files к каждому сервиису);
- Nginx (Для взаимодействия между сервисами используется nginx);
- Spring Cloud (Для отправки запроса между сервисами используется feign);
- Docker (Проект можно поднять в Docker).
Система должна обеспечивать следующий функционал:
- Права и доступ;
- Операции с Пользователями;
- Операции с Проектами;
- Операции с Задачами;
- Аналитика и отчетность.
- Разграничен доступ к определённым урлам для пользователей и администратора. Далее по тексту будет указано, что может делать пользователь, а что администратор.
- Создание пользователя:
- Пользователя может создать администратор;
- Пользователь может быть создан при самостоятельной регистрации;
- Для шифрования паролей используется PasswordEncoder;
- Информация о создании пользователя отправляется в аудит.
- Просмотр пользователей:
- Только администратор может просматривать страницы пользователей или любого определённого пользователя;
- Пользователь может получить информацию о себе, зайдя на доступный урл для авторизованных пользователей;
- Информация о пользователе для просмотра: id, логин, ФИО, дата создания, дата обновления, роль, статус.
- Обновление Пользователей:
- Обновлять информацию о пользователе может только администратор;
- Что можно обновить: логин, ФИО, роль, статус;
- Информация об обновлении пользователя отправляется в аудит.
- Дополнительный функционал:
- После регистрации пользователь должен пройти верификацию посредством подтверждения; своего email (Пользователю на почту отправляется письмо с просьбой перейти по ссылке. После этого пользователь получает новый статус и может осуществить вход в систему ввдея логин и пароль);
- Зайти в аккаунт можно только после верификации и последующей авторизации пользователя, посредством предоставление ему токена авторизации.
- Создание Проекта:
- Проект может быть создан только администратором;
- В Проект могут быть добавлены только зарегистрированные и верифицированные пользователи;
- Информация о создании Проекта отправляется в аудит.
- Просмотр Проекта:
- Администратор может просматривать как страницы с Проектами так и отдельные проекты;
- Администратор может выбирать для просмотра как активные так и архивные проекты;
- Пользователь может просмотреть только тот проект в котором принимает участие;
- Информация о Проекте для просмотра: id, дата создания, дата обновления, имя Проекта, описание, менеджер проекта, участники проекта, статус проекта.
- Обновление Проекта:
- Обновлять проект может только администратор;
- Что можно обновить: имя Проекта, описание, менеджер проекта, участники проекта, статус проекта;
- При обновлении менеджера или участников, проверяется наличие его на текущий момент в базе пользователей;
- Информация об обновлении Проекта отправляется в аудит.
- Создание Задачи:
- Задача может быть создан только администратором;
- Исполнителем задачи может быть добавлен только зарегистрированный и верифицированный пользователь;
- Информация о создании Задачи отправляется в аудит.
- Просмотр Задачи:
- Администратор может просматривать как страницы с Задачами, а также отдельные задачи;
- Авторизованные пользователи могут выбирать для просмотра задачи проектов в которых они состоят;
- Также для просмотра доступны задачи других пользователей, но только по проектам, в которых участвует запрашиваемый пользователь;
- Информация о Задаче для просмотра: id, дата создания, дата обновления, тема Задачи, описание, статус Задачи, исполнитель.
- Обновление Задачи:
- Обновлять Задачи может только администратор;
- Что можно обновить: тема Задачи, описание, статус Задачи, исполнитель;
- При обновлении исполнителя, проверяется наличие его на текущий момент в базе пользователей;
- Информация об обновлении Задачи отправляется в аудит.
- Создание Аудита:
- Аудит создаётся автоматически при создании или обновлении какой-либо из существующих сущностей;
- Администратор и пользователи не имеют доступа к созданию аудита.
- Просмотр Аудита и Отчетов:
- Администратор имеет доступ к просмотру страницы аудитов или отдельному аудиту, а так же отчетов.
- Создание Отчета:
- Отчет создается пока только по аудиту с входными параметрами: from, to, user. Параметры могут быть указаны, а могут и нет. Отчет формируется сразу.
- Скачивание отчета и проверка его готовноси:
- Предоставляется возможность загрузить готовый отчет, а так же есть отдельный урл для проверки готовности указанного отчёта.