Мониторинг цен и рыночной позиции для розничной сети
Сеть видит цены конкурентов и собственную рыночную позицию — без ручной выгрузки и ложных сопоставлений.
Проект
Система собирает цены конкурентов, сверяет их с собственным ассортиментом и превращает наблюдения в проверяемую картину рыночной позиции.
- Контекст
- Один товар называется по-разному у разных сетей, а цена и наличие зависят от региона и конкретного магазина — сопоставление без проверки человеком может дать ложную аналитику.
- Бизнес-проблема
- Свести данные о собственном и конкурентном ассортименте в единую модель без потери точности сопоставления товаров.
Выбранный контур решения
Контур от сбора данных до ручной верификации товарных пар и отчётов — автоматическое сопоставление не считается окончательным фактом.
Вклад
От границ задачи до работающей системы
- 01 Проектирование модели данных и интеграций
- 02 Адаптеры сбора данных конкурентов
- 03 Механика сопоставления товаров и ручной верификации
- 04 Аналитика, отчёты и эксплуатационный мониторинг
Бизнес-проблема и контекст
Проблема
- Один и тот же товар называется по-разному у разных розничных сетей, и его нельзя сопоставить по простому совпадению текста.
- Цена и наличие зависят от региона и конкретного магазина, а не только от сети в целом.
- Автоматическое сопоставление может дать ложную аналитику, если результат не проверен человеком.
- Источник данных конкурента может быть недоступен или менять формат, а промо- и обычная цена имеют разный смысл.
Пользователи и контекст
- Бизнес-пользователь работает со сводной панелью, аналитикой по категориям и конкурентам и карточкой конкретного товара.
- Оператор данных управляет источниками и магазинами, запускает сбор и сопоставление, проверяет кандидатов на связку товаров.
- Внешняя система клиента передаёт собственный ассортимент, цены и остатки через защищённый API батчами с идемпотентной обработкой повторов.
Решение
- Импорт собственного каталога цен и остатков через защищённый API с идемпотентной обработкой пакетов данных.
- Отдельные адаптеры сбора данных для нескольких конкурирующих розничных сетей с региональной и магазинной детализацией.
- Сопоставление с проверкой нормализация атрибутов и алгоритм с обязательным ручным подтверждением связки перед тем, как она попадает в бизнес-отчёты.
- Аналитика ценовой позиции история цен, карточка товара и выгрузка в Excel.
- Единая ценовая логика сводная панель, аналитика, отчёты и карточка товара считают рыночную позицию через один общий модуль, а не через отдельные независимые расчёты.
Как это работает
- Сбор и нормализация
Адаптеры собирают цены, наличие и промо конкурентов по магазинам и регионам и приводят их к единому формату без дублирования наблюдений.
- Сопоставление
Алгоритм предлагает кандидатов на связку товара с товаром конкурента по текстовому и структурному сходству.
- Ручная проверка
Оператор подтверждает или отклоняет предложенную связку; только подтверждённые пары участвуют в отчётах.
- Аналитика и отчётность
Подтверждённые сравнения формируют ценовую позицию и историю, доступные в интерфейсе и в выгрузке в Excel.
Экраны продукта




Живой фрагмент
Попробуйте сами: ручная проверка сопоставления
Тот же экран, что и на скриншоте выше, только интерактивный. Подтвердите или отклоните пары — состояние живёт только в этой странице, никуда не отправляется и не сохраняется.
- Товар #4471, объём 0.5Позиция «Товар 0.5 стандарт»96
- Товар #4472, объём 0.7Позиция «Товар 0.7 линейка A»88
- Товар #4473, объём 1.0Позиция «Товар 1.0 версия B»74
- Товар #4474, объём 0.33Позиция «Товар 0.33 упаковка»69
Архитектура и надёжность
Веб-приложение, фоновый обработчик задач и планировщик работают как отдельные процессы вокруг общей базы данных; адаптеры конкурентов подключаются по единому контракту, а собственный ассортимент поступает через отдельный защищённый импорт.
- Веб-приложение и серверный интерфейс
- Фоновый обработчик задач и планировщик
- Адаптеры сбора данных конкурентов
- Импорт собственного ассортимента
Надёжность и безопасность
- Отдельные процессы веб-приложения, фонового обработчика и планировщика с восстановлением незавершённых заданий после перезапуска.
- Роли пользователей, журнал действий и защита входа от подбора пароля.
- Регламентированные операции резервного копирования и обновления перед изменением схемы данных.
- Заголовки безопасности и политика ограничения контента применяются на уровне приложения, а не оставлены на настройку веб-сервера.
Инженерные решения
Только вручную подтверждённая связка используется в рабочих отчётах.
Проблема Автоматическое сопоставление товаров может ошибаться и искажать бизнес-аналитику.
Почему важно Скорость автоматизации не приносится в жертву точности данных, на основе которых принимаются решения.
Текущее состояние и история цены хранятся раздельно.
Проблема Нужно быстро показывать текущие цены и при этом хранить историю их изменений.
Почему важно Аналитика остаётся быстрой, а история изменений не теряется.
Импорт собственных цен идемпотентен по идентификатору батча.
Проблема Клиент может повторно отправить тот же батч цен при сетевой ошибке.
Почему важно Повторный запрос не создаёт дублирующих или противоречивых данных.
Параллельность сбора контролируется отдельно для каждого источника.
Проблема Несколько источников конкурентов нельзя собирать одинаково без риска перегрузки или блокировки.
Почему важно Сбор данных не создаёт лишнюю нагрузку на источники конкурентов.
Автоматическое подтверждение отключено полностью: любой кандидат на совпадение, вне зависимости от оценки, ждёт решения оператора.
Проблема Даже высокая оценка схожести от алгоритма не гарантирует, что это действительно один и тот же товар.
Почему важно Ни один автоматический результат сопоставления не попадает в отчёты без участия человека.
Подтверждённая связка товаров применяется на уровне конкурента целиком, а не на уровне отдельного магазина.
Проблема Проверять совпадение вручную для каждого магазина и региона конкурента отдельно сделало бы ручную работу неподъёмной при росте сети.
Почему важно Ручная проверка масштабируется на много точек продаж без пропорционального роста нагрузки на оператора.
Технологии
- Python
- Flask
- PostgreSQL
- SQLAlchemy / Alembic
- RapidFuzz
- Chart.js
- Gunicorn / Nginx / systemd