Авторизация
Забыли пароль?
Сброс пароля
Вернуться к авторизации

Разработка системы централизованного управления промо-акциями

05 декабря ‘24

Заказчик: -

Разработали систему для автоматизации промо-планирования в ритейле на базе ibp-платформы, предназначенной для цифровой трансформации процессов планирования и прогнозирования в корпорациях.

Агентство-исполнитель кейса

Spectr

Разрабатываем онлайн-сервисы, корпоративный софт и мобильные приложения, которые автоматизируют и оптимизируют бизнес-процессы или сами являются ядром бизнеса наших клиентов.

1. Вводная задача от заказчика, проблематика, цели

Разработать решение для автоматизации промо-планировании на базе IBP-платформы.

Решение должно было обеспечить следующий бизнес-процесс:

  • Создание промо

Пользователь с определенной ролью создает промо-акцию или загружает шаблон с этим промо. Также есть вариант массового создания промо напрямую из системы заказчика.

  • Проверка объемов

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

  • Последовательное утверждение промо отдельными департаментами

Отдельные департаменты последовательно утверждают, что корректировки объемов были внесены правильно, ничего другого не поменялось и что все финансовые показатели рассчитаны корректно.

  • Редактирование состава SKU

Отдельные пользователи в промо редактируют список конкретных SKU (список продуктов) во время согласования плана продаж с конкретными сетями магазинов.

  • Установка скидки

Промо передается отдельной команде для установки скидки в смежных ИТ-системах по нужному продукту/клиенту/периоду времени.

  • Закрытие промо

После завершения периода отгрузок (когда продукты ушли со склада) по промо получается факт из истории продаж, считаются конечные показатели и промо закрывается.

2. Описание реализации кейса и творческого пути по поиску оптимального решения

ТЕХНОЛОГИИ И АРХИТЕКТУРА

Технологический стек соответветствует стеку базовой платформы.

  • Backend: Python, фреймворк Django (+Django Rest Framework)
  • Redis, SQLAlchemy, аналитические библиотеки Pandas и Polars, а также дополнительные сервисы, необходимые для работы с этими библиотеками — EXSX Reader, Fastparquet
  • Для Rabbit MQ используется библиотека aio-pika (помогает асинхронно доставать из очереди приходящие сообщения)
  • Frontend: React, TypeScript, TanStack, CanvasJS для графиков, i18n, CENTRIFUGO для работы с веб-сокетами
  • Архитектурно: веб-сервер работает на Django, одна база данных на PostgreSQL, вторая на ClickHouse, третья — Rabbit MQ, четвертая — Celery и Flower (для мониторинга Celery)

Frontend

Архитектура фронтенда построена по принципу микрофронтендов, обеспечивая гибкость, масштабируемость и удобство интеграции. Пакеты легко подключаются как npm-зависимости или микрофронтенды, поддерживая hot reload в разработке и автоматическое управление версиями в CI/CD. Разделение на уровни и модули исключает циклические зависимости и упрощает повторное использование кода. Сборка на базе Vite и Rollup ускоряет разработку и выкатку в продакшен, а продуманный деплой гарантирует стабильность и безопасность обновлений. Такая архитектура позволяет масштабировать разработки и адаптировать независимым командам компоненты core-платформы под любые задачи без потери качества.

DevOps, CI/CD

Мы всегда выстраиваем процесс так, чтобы разработка шла быстро, была безопасной, а доставка была максимально стабильной. Приводим ряд практик из данного кейса.

  • Автоматизация на уровне MR

Pre-build: Как только создаётся MR, автоматически собирается артефакт со всеми зависимостями. Это нужно, чтобы в дальнейших задачах не тратить время на их повторную установку.

‍Pre-merge: Код проверяется статическими анализаторами (как линтерами, так и сканерами уязвимостей). Если что-то не так — задачу стопит, пока разработчик не исправит, чтобы поддерживать качество на уровне.

  • Сборка и публикация

Когда MR попадает в ветку, автоматически собирается Docker-образ и отправляется на соответствующий стенд. Если меняются пакеты/модули: собирается новый дистрибутив, версия пакета обновляется и публикуется в GitLab npm registry, все зависимости автоматически обновляются в связанных модулях, проектах и dev-стенде без лишних сборок.

  • Гибкая работа с переменными окружения

Для production-сборок переменные подтягиваются из GitLab и превращаются в JSON-файл, который легко использовать в приложении.

В итоге весь процесс — это про скорость, стабильность и автоматизацию доставки. Всё настроено так, чтобы разработчики сфокусировались на коде, а не на рутине. И так на всех наших проектах.

ФУНКЦИОНАЛ

Для реализации необходимого бизнес-процесса в системе был разработан ряд дашбордов.

  • Дашборд создания промо

‍ДБ нужен для инициации работы с промо-акциями компании. Он позволяет создавать промо (вручную, посредством шаблона, из пред рассчитанных данных): задаются базовые параметры (название, скидки, даты), определяются участвующие продукты и клиенты, рассчитывается прогнозируемая прибыль и убытки (P&L).

  • Дашборд обзора активных задач

‍Таблица для просмотра своих задач специалистом. Просмотр промо, по которым текущий пользователь должен произвести какое-то действие.

  • Дашборд поиска промо

‍Расширенный поиск созданных промо.

  • Дашборд управления статусами промо

‍Массовые операции с промо — перевод на шаги или утверждения-согласования. Внесение изменений в параметры, продукты или клиентов, получение одобрения от различных ролей.

  • Дашборд загрузки источников данных

Загрузка файлов с мастер-данным, обновлениями информации по промо. Пакетное создание промо.

  • Дашборд формирования отчетов

‍Выгрузка отчетов, как автоматически так и вручную. Сравнение фактических результатов с прогнозом, расчет итоговых показателей P&L, закрытие промо-акции, формирование различных отчетов и передача данных в смежные системы для дальнейшего анализа.

  • Дашборд мониторинга целостности данных

‍Инструмент для проверки консистентности данных, прочих показателей здоровья загруженных в систему данных и их связей.

ЭТАПЫ РАБОТЫ

Рассказываем про общую последовательность всех работ: от анализа до ввода в эксплуатацию.

Анализ требований и подготовка архитектуры

Сбор и анализ требований:

  • Проведение интервью с заинтересованными сторонами.
  • Анализ существующих бизнес-процессов.
  • Определение функциональных и нефункциональных требований.

Определение архитектуры системы:

  • Выбор технологического стека.
  • Проектирование архитектуры базы данных.
  • Разработка высокоуровневой архитектуры приложения.

Планирование проекта:

  • Определение этапов и сроков разработки.
  • Распределение ресурсов.
  • Оценка рисков и разработка стратегий их минимизации.

Создание прототипов пользовательского интерфейса:

  • Разработка прототипов пользовательского интерфейса для всех ролей пользователей.
  • Проработка основных дашбордов для визуализации ключевых показателей.
  • Согласование прототипов с заинтересованными сторонами.

Разработка базовой инфраструктуры

  • Настройка среды разработки и тестирования
  • Создание базы данных для хранения информации о промо-акциях
  • Разработка базовой структуры приложения

Реализация основных модулей

  • Модуль создания и планирования промо-акций
  • Модуль корректировки и утверждения
  • Модуль подготовки к запуску (включая интеграцию с SAP)
  • Модуль мониторинга активных промо-акций
  • Модуль закрытия и анализа результатов

Разработка системы отчетности

  • Создание модуля генерации различных отчетов
  • Реализация механизма расчета и кэширования

Интеграция с внешними системами

  • Разработка интерфейсов для обмена данными со смежными ИТ-системами
  • Реализация механизмов импорта/экспорта данных через SFTP
  • Интеграция с SAP

Развертывание и запуск

  • Подготовка серверной инфраструктуры
  • Развертывание системы в продуктивной среде
  • Миграция исторических данных

Поддержка и дальнейшее развитие

  • Организация службы поддержки пользователей
  • Мониторинг производительности системы
  • Планирование и реализация дальнейших улучшений на основе обратной связи

Процесс разработки и взаимодействия

Со стороны Spectr на проекте работала большая кросс-функциональная команда разработки: руководитель проекта, бэкенд-разработчики, фронтенд-разработчики, системные аналитики, QA, архитектор, DevOps.

На протяжении всего времени планирования и реализации проекта велась тесная коммуникация между командой разработки и всеми заинтересованными сторонами на стороне клиента.

Этот подход к коммуникации позволил обеспечить высокую вовлеченность всех заинтересованных сторон, своевременное выявление и решение проблем, а также гарантировал, что конечный продукт будет соответствовать ожиданиям и требованиям бизнеса.

Регулярные встречи

  • Еженедельные статус-митинги для обсуждения прогресса и возникающих проблем
  • Ежемесячные обзорные встречи с ключевыми стейкхолдерами
  • Демонстрации промежуточных результатов после завершения каждого этапа разработки

Инструменты коммуникации

  • Использование систем управления проектами (Jira) для отслеживания задач и проблем
  • Создание общего канала в корпоративном мессенджере для быстрого обмена информацией
  • Регулярные email-рассылки с обновлениями по проекту

Документация и отчетность

  • Ведение и регулярное обновление проектной документации
  • Подготовка и распространение еженедельных отчетов о ходе проекта
  • Документирование всех ключевых решений и их обоснований

Обратная связь

  • Проведение регулярных опросов заинтересованных сторон для оценки удовлетворенности ходом проекта
  • Организация воркшопов для сбора идей и предложений по улучшению продукта
  • Создание механизма для оперативного реагирования на запросы и concerns стейкхолдеров

Кросс-функциональное взаимодействие

  • Вовлечение представителей различных отделов (маркетинг, продажи, IT, СБ) в процесс разработки
  • Организация совместных сессий по решению проблем и принятию решений
  • Обеспечение прозрачности процесса разработки для всех участников проекта

3. Результаты сотрудничества

Благодаря четко выстроенной работе и коммуникации, проект по созданию платформы для управления жизненным циклом промо был успешно реализован и введен в эксплуатацию, удовлетворяя потребности всех заинтересованных сторон и обеспечивая эффективное управление промо-акциями компанией заказчиком.

Ведется дальнейшее расширение и развитие функционала.

4. Заключение

Во время реализации со стороны Spectr работала выделенная команда разработки, которая максимально тесно интегрировалась и вовлекалась во все процессы на стороне клиента.

  • Project manager;
  • Архитектор;
  • DevOps;
  • Системный аналитик;
  • Бэкенд-разработчик — 3 человека;
  • Фронтенд-разработчик — 2 человека;
  • QA-специалист.

Агентство-исполнитель кейса

Spectr

Разрабатываем онлайн-сервисы, корпоративный софт и мобильные приложения, которые автоматизируют и оптимизируют бизнес-процессы или сами являются ядром бизнеса наших клиентов.