Авторизация
Сброс пароля
Разработка системы централизованного управления промо-акциями
Заказчик: -
Разработали систему для автоматизации промо-планирования в ритейле на базе ibp-платформы, предназначенной для цифровой трансформации процессов планирования и прогнозирования в корпорациях.
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-специалист.