DynamicCalculation

Разработка сервиса динамических расчётов

Java 17.

Архитектурные требования:

Ядро системы должно разрабатываться по ООП и TDD - требование к coverage 80-90%. Архитектурный слои: доменная модель, сервисы, контроллеры, DTO, ДАО. Хранение данных осуществляем в БД postgres Фреймворк Spring boot/ Spring test / Junit5 / testcontainers(для базы) - ожидается классическое spring boot приложение покрытое unit-тестами (тест должен быть у каждого класса), помимо классических тестов ожидается компонентные и микросервисные (ожидаю глобальный интеграционный тест на весь процесс) тесты. (см. аннотации @DataJdbcTest, @Testcontainers, @WebMvcTest) Описание ядра системы:

Задается сущность «формула». Формула - это строка, которая передается с клиента. Строка вычислимая, может иметь параметры. Примеры таких строк смотрите в вариантах.

Приложение должно уметь хранить созданные формулы и производить расчёты по ним. Все расчёты сохраняются в базу и пользователь в любой момент времени может получить результат расчётов.

Разработать механизмы обмена информацией с внешним миром с помощью SOAP - синхронные вычисления.

Работа с базой через Spring JDBC Data.

Для проверок использовать Been Validation.

Варианты для разработки формул. Требуется разработать калькулятор строковой формулы. У формулы могут быть параметры (если это предусмотрено вариантом). Тогда параметров может быть неограниченное количество. Проработать поведение, если параметры не указаны или формула некорректна.

Формула - это дробное число, результат вычисления - строка, где это число записано по-русски. В качестве дополнительного параметра можно указать количество знаков после запятой. Пример, 6234.23 -> "шесть тысяч двести тридцать четыре целых двадцать три сотых"

При реализации ядра запрещено использовать регулярные выражения, javascript-engine и прочие аналогичные технологии. Ожидается, что строки разбираются на символы и анализируется алгоритмически.