Система централизованного управления промо-акциями
Разработали систему для автоматизации промо-планирования в ритейле
Практически любой крупный ритейл, который продает товары со скидками, сталкивается с задачей по централизованному планированию промо-акций. Распространенные ИТ-продукты, которыми ранее пользовались ритейлеры для решения данной задачи, ушли с российского рынка, что вызвало потребность в импортозамещении.
Возникла потребность в разработке централизованной системы для управления промо-акциями, объединяющей процессы создания, анализа эффективности, утверждения и распределения скидок по 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, СБ) в процесс разработки
- Организация совместных сессий по решению проблем и принятию решений
- Обеспечение прозрачности процесса разработки для всех участников проекта
Результаты
Благодаря четко выстроенной работе и коммуникации, проект по созданию платформы для управления жизненным циклом промо был успешно реализован и введен в эксплуатацию, удовлетворяя потребности всех заинтересованных сторон и обеспечивая эффективное управление промо-акциями компанией заказчиком.
Ведется дальнейшее расширение и развитие функционала.
Оставить заявку
Оставьте заявку, мы с вами свяжемся и обсудим решение вашей задачи