Skip to content

turaldinio/ProjectManagementService

Repository files navigation

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

  • Описание :

d

Приложение состоит из 5 основных модулей:

  • app - содержит в себе конфигурационные файлы

  • business -данный модуль представляет из себя бизнес логику приложения, и содержит в себе 3 дополнительных модуля:

    • model - представляет из себя модели сущностей
    • repository -отвечает за получение/изменение/сохранение/удаление данных из хранилища
    • service -модуль, содержащий в себе основную бизнес логику приложения
  • dto - содержит сущности, возвращаемые клиенту

  • web - модуль, содержащий контроллеры

  • common -модуль, содержащий вспомогательные данные

Основные сущности:

  • Employee:сущность сотрудника.

    • Фамилия (обязательное поле)
    • Имя (обязательное поле)
    • Отчество (не обязательное)
    • Должность (не обязательное)
    • Учетная запись (не обязательное), но уникальное значение среди активных сотрудников (у двух активных профилей не может быть одинаковой учетной записи, если оно не пустое).
    • Адрес электронной почты (не обязательное)
    • Статус сотрудника - (обязательное поле) фиксированный набор значений (Активный, Удаленный).
  • Основные операции над проектами * * Создание профиля сотрудника. При создании сотрудника должна создаваться карточка сотрудника с перечисленным выше набором атрибутов, также статус сотрудника становится Активный. * * Изменение сотрудника. При редактировании сотрудника должны редактировать поля профиля сотрудника. Удаленного сотрудника изменить нельзя. * * Удаление сотрудника. При удалении сотрудника, сотрудник переводится в статус Удаленный. * * Поиск сотрудников. Поиск осуществляется по текстовому значению, которое проверяется по атрибутам Фамилия, Имя, Отчество, учетной записи, адресу электронной почты и только среди активных сотрудников. * * Получение карточки сотрудника либо по идентификатору профиля, либо по УЗ с

  • Проект сущность, состоящая из:

    • Код проекта - некоторое уникальное имя проекта. Является обязательным и уникальным среди всех проектов.
    • Наименование - текстовое значение содержащее короткое наименование проекта.. Обязательное поле.
    • Описание - текстовое значение содержащее более детальную информацию о проекте. Не обязательное поле.
    • Статус проекта - текстовое значение, обозначающее состояние проекта. Список статусов фиксированный (Черновик, В разработке, В тестировании, Завершен). Обязательное поле.
  • Основные операции над проектами:

    • Создание проекта. При создании проекта должны быть заполнены все обязательные поля, и выполнена проверка на уникальность кода проекта. Проект создается в статусе Черновик.
    • Изменение проекта. При изменении проекта должны изменяться поля карточки проекта.
    • Поиск проектов. Поиск должен осуществляться по текстовому значению (по полям Наименование проекта, Код проекта) и с применением фильтров по Статусу проекта. Т.е. на вход передается некоторое текстовое значение и список статусов.
    • Перевод в другое состояние проекта. Можно перевести в другой статус проект, согласно диаграмме ниже о возможных изменениях статуса.
    • Черновик -> В разработке -> В тестировании -> Завершен
  • Команда проекта - группа сотрудников объединенных одним проектом

    • В разных командах один сотрудник может принимать различные роли, но только одну роль внутри проекта.
    • Итого команда проекта состоит из списка связей: проект - сотрудник - роль в проекте.
  • Основные операции:

    • Добавить участника проекта. Т.е. добавить сотрудника в команду проекта с определенной ролью.
    • Удалить участника проекта. Т.е. исключить из команды по проекту сотрудника.
    • Получить всех участников проекта.
  • Задача

    • Задача назначает на сотрудника внутри проекта. Структура задач линейная (никаких деревьев и т.п.).
    • Задача обладает следующим набором атрибутов:
    • Наименование задачи - текстовое значение, отражающее краткую информацию о задачи (обязательное поле).
    • Описание задачи - текстовое значение, содержащее детальное описание задачи. (не обязательное поле)
    • Исполнитель задачи - сотрудник, которому необходимо исполнить задачу. (не обязательное поле). Можно выбрать исполнителя только участника проекта ( сотрудник добавленный в команду проекта). Назначить исполнителя можно только сотрудника в статусе Активный.
    • Трудозатраты - оценка, сколько в часах необходимо на ее исполнение. (обязательное поле)
    • Крайний срок - дата, когда задача должна быть исполнена. Нельзя выбрать дату если дата меньше, чем дата создания + трудозатраты. Обязательное поле.
    • Статус задачи - фиксированный список состояний задачи (Новая, В работе, Выполнена, Закрыта).
    • Автор задачи - заполняется автоматически, тем кто создавал задачу. Автором задачи может являться только участник проекта.
    • Дата создания - дата когда задача была создана.
    • Дата последнего изменения задачи - дата последнего редактирования задачи (но не изменение статуса задачи).
    • Новая -> В разработке -> Выполнена -> Закрыта

Отношение между сущностями:

Диаграмма без названия (5)

  • Загрузка файлов

    • Для сущностей задача и проект, есть возможность загружать файлы. Файлы могут иметь любое разрешение.
    • Не допускается наличие двух одинаковых файлов для одной сущности. Файлы сущности скачиваются в формате zip
  • Spring Security

    • В системе предусмотрена аутентификация по токенам.
    • Для получения токена необходимо направить GET запрос на /auth/login и передать данные для авторизации:

{

"login":"login,

"password":"password

}

    • Токен проверяется перед каждым запросом содержащий в себе /private url
  • Sl4j

    • Каждый сервис ведет логирование своих действий в файл : ProjectManagementSystem/logs/SERVICE_NAME.log Также действия всех логеров записывается в общий файл : ProjectManagementSystem/logs/allServices.log
  • RabbitMq

    • При назначении на сотрудника задачи, при наличии у сотрудника почты,ему направляется уведомление о назначенной задачи.
    • Для проверки работоспособности уведомления, можно подменить почту сотрудника на свою .Для этого необходимо в pm-service -> resources -> service.properties указать mail.mock почту, на которую необходимо направить уведомление
    • Для отправки уведомлений со своей почты, замените spring.mail.username(ваша почта) и spring.mail.password(пароль, сгенерированный google двухфакторной аутентификаций)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages