Coder Social home page Coder Social logo

oldmanfrosthelper's Introduction

OldManFrostHelper

Описание:

Система учета подарков для Деда Мороза.


Каждый год Дед Мороз отвозит кучу подарков детям в разные города. Заблаговременно до наступления нового года 
Дед Мороз читает письма, которые прислали ему дети и заготавливает сани с подарками. Так как все дети хотят 
разные игрушки, лесные зверюшки - верные помощники Деда Мороза - делают подарки разных типов. 
При прочтении письма Дед Мороз обращает внимание на пожелание ребенка, после чего, в случае, 
если поведение за год было хорошим, он отправляет ребенку подарок запрошенного типа.


Дед мороз решил вести статистику подарков, а заодно и облегчить работу себе и зверятам, 
автоматизировав их производство. По его задумке, программное обеспечение должно 
автоматически отправлять заказы на предприятие, которое производит подарки типа M, 
если количество подарков данного типа на складе стало меньше, чем N. 


Для решения поставленной задачи он издал федеральный указ “О разработке информационной системы”, 
которая будет обладать следующими основными функциональными возможностями:
1. Выполнять учет доступных подарков различного типа на складе
2. Предоставлять возможность автоматической обработки писем от детей по внешнему запросу:
   1. Уменьшать количество подарков запрошенного типа на складе
   2. Сохранять данные в хранилище об отправленном подарке для конкретного человека.
3. Отправлять заявку на производство подарков типа N, если количество подарков данного типа на складе стало меньше, чем Q.


Нефункциональные требования к ИС:
1. Должна принимать и отправлять запросы, используя REST API.
2. Должна быть написана на языке программирования Java версии 8+.
3. Должна использовать фреймворк Spring (web, data), библиотеки Hibernate.
4. Должна использовать in memory БД H2 для хранения данных.




Сценарии использования:
Сценарий 1:
1. Потребитель вызывает REST API метод ИС, передавая данные письма в json формате (ФИО ребенка, тип подарка)
2. Система запрашивает данные о поведении ребенка за год у внешнего сервиса (на первое время предлагается использовать заглушку, 
которая локально определяет поведение случайным образом, используя равномерное распределение)
3. В случае, если поведение было неудовлетворительным, система возвращает потребителю ошибку и прекращает обработку запроса.
4. Система выделяет подарок со склада для ребенка и логирует выделение в БД сервиса.
Сценарий 2:
1. Если количество подарков типа N стало меньше, чем Q, то система отправляет заказ на производство подарков 
соответствующего типа для пополнения запасов на складе. Для отправки система использует REST API.
Сценарий 3:
1. Когда подарки были произведены, внешняя система запрашивает разрабатываемую ИС используя REST API, чтобы уведомить, 
что количество доступных подарков увеличилось.

При запуске создаются таблицы и в них записываются значения(см.morozov.ru.util.DataInit).
Количество подврков записывается Q - 2 где Q - контрольная точка для проверки Инспектором.
(см. morozov.ru.oldmanfrostservice.services.Inspector)
Инспектор запускается через минуту и проводит проверку склада каждые 5 минут.
Инспектор формирует (при необходимости) заказы для фабрики.

frost.jar - исполняемый фаил.

http://localhost:8080/h2-console - H2 БД. http://localhost:8080/v2/api-docs - документация запросов от Swagger.

Запросы: POST /frost/letter Приниает:
{
"name" : String,
"middleName" : String,
"lastName" : String,
"giftType" : String
}
Возвращает: При успехе:
{
NoteOfDone
}
При плохом поведении:
(редирект на frost/bad)
{
StringMessageUtil
}
При отстутствии подарка на складе:
(редирект на frost/wait)
(И создаёт запись в таблице с ожидающими(NoteOfWaiting))
{
StringMessageUtil
}
При отсутствии нужного типа подарка:
(редирект на frost/unknown)
{
StringMessageUtil
}

GET /frost/exit Просто на всякий случай- выключение приложения.

oldmanfrosthelper's People

Contributors

romanmorozov88 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.