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

Разработали систему для автоматизации промо-планирования в ритейле

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

    Возникла потребность в разработке централизованной системы для управления промо-акциями, объединяющей процессы создания, анализа эффективности, утверждения и распределения скидок по SKU для последующей загрузки информации о скидках в смежные ИТ-системы. Вся информация о промо-акциях должна собираться на одной странице и облегчать контроль и управление процессами.

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

    Потребители продукта — крупный ритейл, который продает товары со скидками, то есть весь ритейл. Наиболее целевая аудитория — крупные компании РФ с большой долей розничных продаж.

    Задача

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

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

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

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

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

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

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

    Технологии и архитектура

    • 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, СБ) в процесс разработки
    • Организация совместных сессий по решению проблем и принятию решений
    • Обеспечение прозрачности процесса разработки для всех участников проекта

    Результаты

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

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

    Оставить заявку

    Оставьте заявку, мы с вами свяжемся и обсудим решение вашей задачи

    Оставляя заявку, Вы соглашаетесь с политикой обработки персональных данных