Разработка модуля «Базовые цены» для OBOZ Digital

Разработка модуля «Базовые цены» для 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 месяцев.

Результат