Skip to content

Creator of reports on the work done by employees of the company📄. Support for multi-layer architecture🔧 + database💽 + console interface🔢

Notifications You must be signed in to change notification settings

psajd/ReportSystem

Repository files navigation

ReportSystem (Приложение с многослойной архитектурой DAL - BLL - PL)

DAL - SQLite
PL - консоль

Постановка задачи:

- Лабораторная 6. Система обработки сообщений

Цель

Реализация многослойной архитектуры.

Предметная область

Требуется реализовать систему обработки входящих сообщений и представление агрегированного отчёта с подробной статистикой о полученных сообщениях в рамках заданного периода. В систему поступают сообщения из различных источников - SMS сообщения, сообщения из мессенджеров, электронная почта. Сотрудник входит в систему используя свой логин и пароль и запрашивает из системы сообщения с подконтрольных ему источников (Рабочая почта, телефон и прочие) для дальнейшей работы с ними. Сотрудник отвечает на входящие сообщения и завершает работу. В конце рабочего дня руководитель формирует отчёт о проделанной работе своих сотрудников.

Acceptance Criteria:

  • Реализовать аутентификацию и авторизацию сотрудников
  • Реализовать необходимые сущности и предусмотреть возможность их расширения в дальнейшем (Например, появление новых источников сообщений)
  • Реализовать иерархическую структуру подразделения и доступов к ним. Т.е. доступ до конкретной почты есть у конкретного набора сотрудников. Отчет по подразделению доступен только руководителям.
  • Отчёт должен быть иммутабельным. Т.е. даже есть объект по которому был построен отчёт изменится, сам отчёт от этого не должен
  • Создать пользовательский интерфейс (Интерактивное меню в консоли)(За реализацию полноценного UI предусмотрены дополнительные баллы)
  • Покрыть UnitTest’ами логику приложения (Application слой)
  • Возможность конфигурации приложение без изменения кода (добавление новых сотрудников и назначение подчинённых, добавление источников сообщений)
  • Система должна уметь сохранять и восстанавливать своё состояние после перезапуска.

Сущности

  • Сотрудник. У сотрудника может быть руководитель либо подчиненные.
  • Сообщение (Под каждый источник и общая базовая модель)
  • Источник сообщений (Телефон, электронная почта, мессенджер)
  • Учётная запись (Может быть закреплена как за источником сообщений, так и за сотрудником)
  • Отчёт

Сообщение может находится в одном из нескольких состояний:

  • Новое (Сообщение поступило на устройство, но ещё не было получено системой)
  • Полученное (Сообщение было загружено с устройства в систему)
  • Обработанное (Сообщение обработано сотрудником)

Система должна поддерживать следующие сценарии работы:

Сотрудник входит в систему, выбирает пункт меню получения сообщений. После загрузки сообщений в систему сотрудник может в течение продолжительного времени обрабатывать сообщения (отвечать на них, просто помечать прочитанными и т.д.). В конце работы выбирает пункт меню “Завершение сеанса”.

Начальник входит в систему, выбирает пункт меню работы с отчётами. Использует поиск по дате чтобы найти уже созданные отчёты. Открывает конкретные отчёты и смотрит информацию в разрезе по устройствам, по сотрудникам, статистику (кол-во сообщений всего и т.д.). После ознакомления создаёт новый отчёт за сегодня и в конце работы завершает свою смену.

Отчёт должен содержать в произвольном формате статистическую информацию

Кол-во сообщений обработанных его подчиненными

Кол-во сообщений полученных на конкретное устройство

Статистика по общему кол-ву сообщений в течение запрошенного интервала (например за сутки/смену и т.д.)

Детали реализации

Для этой лабораторной необходимо использовать классическую трехслойную архитектуру.

Presentation layer (уровень представления): это тот уровень, с которым непосредственно взаимодействует пользователь. Этот уровень включает компоненты пользовательского интерфейса, механизм получения ввода от пользователя. Применительно к данному проекту на этом уровне расположены представления и все те компоненты, который составляют пользовательский интерфейс (если вы делаете полноценный UI), а также модели представлений, запросы и т.д.

Business layer (уровень бизнес-логики): содержит набор компонентов, которые отвечают за обработку полученных от уровня представлений данных, реализует всю необходимую логику приложения, все вычисления, передает уровню представления результат обработки.

Data Access layer (уровень доступа к данным): хранит модели, описывающие используемые сущности, также здесь размещаются специфичные классы для работы с конфигурациями, например, источники сообщений, пользователи и т.д.

About

Creator of reports on the work done by employees of the company📄. Support for multi-layer architecture🔧 + database💽 + console interface🔢

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages