Разработка модуля «Базовые цены» для OBOZ Digital
Задача
Проблема проекта:
- из-за параллельной разработки других модулей продукта у заказчика не хватало собственных ресурсов;
- реализация модулей выполнялась без отдельного этапа тех. проектирования и аналитики;
- очень сжатые сроки запуска первого релиза модуля в упрощенном виде на продуктив (21 рабочий день после начала работ);
- функциональное задание (ФЗ) постоянно дополнялось заказчиком уже после начала работ.
Решение
1 Этап. Разработка MVP-Базовый.
По запросу от внешних модулей Модуль базовых цен мог выдать цену из своей базы данных.
Если в базе данных цена отсутствовала, то выдавалась ошибка.
На данном этапе погрешность в значении выдаваемой модулем цены могла быть достаточно большой. Фронтенд часть модуля при этом не была реализована, данные заказов и справочников загружались в базу данных в ручном режиме.
В процессе приемки работ Заказчиком на тестовом стенде проведено функциональное и интеграционное тестирование. Полученный результат Заказчика устроил. Первый релиз Модуля в упрощенном виде в оговоренные сроки был включен в релиз Продукта на продуктив.
2 Этап. Разработка MVP-Улучшенный.
Доработан бекенд Модуля:
- в сервисах математического ядра реализованы алгоритмы экстраполяции и исключения выбросов;
- доработаны сервисы расчета и выдачи базовых цен;
- реализован сервис запуска пакетного перерасчета базовых цен;
- реализована автоматическая загрузка заказов и справочников через журналы Kafka из внешних модулей;
- выполнено 60%-ое покрытие кода unit-тестами.
На данном этапе была обеспечена минимальная погрешность выдаваемой модулем цены. Фронтенд часть модуля при этом не была реализована.
3 Этап. Разработка MVP-Целевой и сдача работ Заказчику
Доработан бекенд Модуля:
- реализованы сервисы ui-api для организации фронтенд части Модуля;
- выполнено 60%-ое покрытие кода unit-тестами.
Реализована фронтенд часть Модуля, состоящая из:
- меню настройки параметров математической модели, включая:
- а) настройку коэффициентов формулы расчета базовой цены;
- б) настройку коэффициентов формулы расчета адресной цены;
- в) настройку интервалов давности;
- г) настройку дисконтирования экспертной цены с учетом инфляции;
- основной таблицы для отображения базовых и усредненных цен, а также просмотра и назначения экспертных и фиксированных цен;
- меню настройки запуска планировщика пакетного перерасчета цен.
На данном этапе через веб-интерфейс была обеспечена возможность настройки различных параметров модуля администратором системы, а также просмотра и корректировки значений выдаваемых модулем цен экспертом/логистом.
В процессе приемки работ 2 и 3 этапа (MVP-Улучшенный и Целевой) заказчиком на тестовом стенде проведено функциональное, регрессионное, интеграционное и нагрузочное тестирование, тимлидами заказчика проведено ревью кода бекенд и фронтенд.По итогу реализации и стабилизации разработчикам Обоза передана подробная техническая документация на модуль. По всем проведенным проверкам полученный результат заказчика устроил. Целевой вариант модуля базовых цен был включен заказчиком в очередной релиз продукта на продуктив.
4 Этап. Доработки модуля (за рамками основного проекта)
После сдачи работ 2 и 3 этапа дальнейшее развитие функциональности Модуля базовых цен было продолжено силами Digital Zone в рамках серии запросов на доработку (CR), поступающих от Обоз.
Подготовлена техническая документация (схема архитектуры, схема данных, openapi.yaml, readme.md) на модуль готовилась по итогу реализации каждого из этапов.
Технологический стек, движок:
kotlin/java, spring-boot, consul, kafka, keycloak, PostgreSQL, vue.js.
Сроки, затраты:
- ресурсозатраты 45 человеко-месяцев;
- 8+ млн рублей;
- длительность проекта 7 месяцев.
Результат
Разработана система мониторинга и управления судовым оборудованием (SCADA-система).
Разработана информационная система, способная в режиме реального времени предупреждать аварии на водопроводных узлах. На карте отображена водопроводная сеть, на которой в …