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

Разработали систему для автоматизации промо-планирования в ритейле на базе 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-специалист.
 


