01 / Данные и аналитика
Сравнивать цены, а не собирать их вручную
Мониторинг цен для розничной сети: сравнение товаров, проверка совпадений и история изменений в одном месте.
Задача
Для решения о цене нужно знать, сколько тот же товар стоит у конкурентов. Но названия отличаются, а цена зависит от магазина и региона.
Что сделали
Система собирает предложения и подбирает похожие товары. Человек проверяет пары, затем использует сравнение, историю цен и выгрузку в Excel.
Подготовлен сбор цен четырёх конкурирующих сетей по единому сценарию
В отчёты попадают только подтверждённые пары товаров
Собственные цены и остатки загружаются из каталога

Ещё экраны продукта



Как это работает
- Собрать цены
Система получает цены, наличие и акции конкурентов с учётом магазина и региона.
- Найти похожие товары
По названию и характеристикам подбирает товары, которые могут совпадать с вашим ассортиментом.
- Проверить совпадения
Человек подтверждает или отклоняет каждую пару. Только проверенные пары попадают в сравнение.
- Принять решение
Можно сравнить цены, посмотреть историю и выгрузить отчёт в Excel.
Попробуйте
Это один и тот же товар?
Проверьте предложенные пары. Это демонстрация на вымышленных данных: решения не сохраняются и никуда не отправляются.
- Молоко цельное, 1 лМолоко цельное, 1000 млСхожесть96 / 100
- Кофе в зёрнах, 250 гКофе молотый, 250 гСхожесть88 / 100
- Чай чёрный, 25 пакетиковЧай чёрный, 50 пакетиковСхожесть74 / 100
- Вода без газа, 0,5 лВода негазированная, 500 млСхожесть69 / 100
Для технической команды: как устроено решение
Веб-приложение, фоновый обработчик задач и планировщик работают как отдельные процессы вокруг общей базы данных; адаптеры конкурентов подключаются по единому контракту, а собственный ассортимент поступает через отдельный защищённый импорт.
- Веб-приложение и серверный интерфейс
- Фоновый обработчик задач и планировщик
- Адаптеры сбора данных конкурентов
- Импорт собственного ассортимента
Надёжность
- Отдельные процессы веб-приложения, фонового обработчика и планировщика с восстановлением незавершённых заданий после перезапуска.
- Роли пользователей, журнал действий и защита входа от подбора пароля.
- Регламентированные операции резервного копирования и обновления перед изменением схемы данных.
- Заголовки безопасности и политика ограничения контента применяются на уровне приложения, а не оставлены на настройку веб-сервера.
Решения и ограничения
Только вручную подтверждённая связка используется в рабочих отчётах.
Автоматическое сопоставление товаров может ошибаться и искажать бизнес-аналитику.
Скорость автоматизации не приносится в жертву точности данных, на основе которых принимаются решения.
Текущее состояние и история цены хранятся раздельно.
Нужно быстро показывать текущие цены и при этом хранить историю их изменений.
Аналитика остаётся быстрой, а история изменений не теряется.
Импорт собственных цен идемпотентен по идентификатору батча.
Клиент может повторно отправить тот же батч цен при сетевой ошибке.
Повторный запрос не создаёт дублирующих или противоречивых данных.
Параллельность сбора контролируется отдельно для каждого источника.
Несколько источников конкурентов нельзя собирать одинаково без риска перегрузки или блокировки.
Сбор данных не создаёт лишнюю нагрузку на источники конкурентов.
Автоматическое подтверждение отключено полностью: любой кандидат на совпадение, вне зависимости от оценки, ждёт решения оператора.
Даже высокая оценка схожести от алгоритма не гарантирует, что это действительно один и тот же товар.
Ни один автоматический результат сопоставления не попадает в отчёты без участия человека.
Подтверждённая связка товаров применяется на уровне конкурента целиком, а не на уровне отдельного магазина.
Проверять совпадение вручную для каждого магазина и региона конкурента отдельно сделало бы ручную работу неподъёмной при росте сети.
Ручная проверка масштабируется на много точек продаж без пропорционального роста нагрузки на оператора.
Технологии
- Python
- Flask
- PostgreSQL
- SQLAlchemy / Alembic
- RapidFuzz
- Chart.js
- Gunicorn / Nginx / systemd