Крупной компании требуется веб-сервис для обработки поставок оборудования. Предполагается, что с этим сервисом одновременно работает несколько внутренних информационных систем компании.
Сущности системы:
Поставщик:
-
Наименование
-
Телефон
-
Адрес
-
Электронная почта
Тип оборудования:
- Наименование
Поставка:
-
Поставщик
-
Тип оборудования
-
Количество поставленных единиц оборудования
-
Дата поставки
Необходим следующий функционал:
Работа со справочниками:
-
Работа со справочником поставщиков (Создание, Удаление, Редактирование, Получение полного списка)
-
Работа со справочником оборудования (Создание, Удаление, Редактирование, Получение полного списка)
Работа с поставками:
-
Создание поставки оборудования на определенную дату с указанием поставщика, типа оборудования и его количества.
-
Редактирование поставки (все поля)
-
Удаление одной поставки
-
Получение поставок за определенный промежуток времени
Аналитика:
-
Показать общее количество товаров, ранжированное от большего к меньшему, по типам оборудования, поставленного заданным поставщиком в текущем месяце. Формат вывода: Тип оборудования, Количество.
-
Вывести список поставщиков, ранжированный от большего к меньшему по процентному соотношению количества единиц поставленного оборудования за текущий календарный год. Формат вывода: Поставщик, Процент.
Уведомления:
-
Для мониторинга процесса поставок менеджерами в сервис необходимо встроить систему уведомлений. При создании или удалении поставки должно генерироваться уведомление с текстовым описанием произошедшего события (Операция, Поставка). На первом этапе предлагается создать транспорт уведомлений на основе email (один адрес, задается в конфигурационном файле).
-
Необходимо предусмотреть настройку (в конфигурационном файле) — частота уведомлений (в секундах). Если за этот интервал произошло более одного события по
конкретной поставке (к примеру, создание и несколько событий редактирования), то информация о них должна быть отправлена в одном уведомлении.
Требования к архитектуре приложения:
-
Использование ASP.NET Сore
-
JSON как формат передачи данных.
-
Технология хранения данных на выбор кандидата (с обоснованием).
-
Предусмотреть возможность замены хранилища данных на другую технологию, с минимальными затратами на рефакторинг системы.
-
Предусмотреть возможность замены транспорта уведомлений на другую технологию, к примеру Telegram, с минимальными затратами на рефакторинг системы.
-
Уведомление должно быть гарантированно отправлено, если операция с поставкой прошла успешно.
-
Данные о поставках могут генерироваться с высокой интенсивностью, что не должно спровоцировать лавинообразный рост нагрузки на подсистему уведомлений.
Требования к выполнению задания:
-
Спроектируйте и реализуйте предложенный функционал с использованием языка С# и Microsoft Visual Studio 2017, максимально использовав накопленный вами опыт и современные принципы построения информационных систем.
-
Наполните хранилище данных достаточным для проверки результатов объемом информации.
-
Снабдите проект интеграционными тестами, демонстрирующими работу реализованного функционала.