Разработал внутреннюю платформу мониторинга цен для интернет-магазина, терявшего продажи из-за цен конкурентов — она отслеживает цены конкурентов, импортирует прайс-листы поставщиков и автоматически обновляет цены в работающем магазине.
Проблема
Каталог магазина насчитывал более 21 000 товаров, а конкуренты предлагали цены ниже. Отслеживать вручную 10 сайтов конкурентов при таком масштабе невозможно — ценовые решения отставали от рынка.
Моя роль
Спроектировал и построил платформу целиком (2018–2019).
Что я построил
- Парсер цен конкурентов по 10 магазинам — параллелизация через worker-farm, разбор страниц на Cheerio, MongoDB как кэш обхода, MySQL как хранилище каталога. Для каждого сайта — свой парсер под его HTML, товары и структуру каталога.
- Аккуратный и устойчивый скрапинг — прогрессивная пауза-«кулдаун» между запросами, чтобы парсеры не перегружали чужие сайты, и обход анти-скрапинговых мер.
- Сопоставление товаров — привязка артикулов и страниц конкурентов к нашему каталогу на 21 000+ позиций. Самое сложное: названия, единицы измерения и структура различаются на каждом сайте.
- Импорт прайс-листов поставщиков — у каждого поставщика свой формат XLS. Веб-интерфейс сопоставления колонок прайса с полями каталога, живой предпросмотр значений и подключаемые обработчики полей: очистка пробелов, извлечение UPC-кодов из названий, определение валюты по знаку с конвертацией по актуальному курсу, суммирование остатков по нескольким складам и интерпретация правила «пусто = в наличии».
- Безопасная автоматическая перенаценка — цены пересчитываются и обновляются на сайте по расписанию, без ручной работы. Добавил проверку на аномалии: если цена подскакивает слишком резко, она не публикуется сразу, а уходит менеджеру на подтверждение. Так ошибка в данных не попадает на витрину.
- Инфраструктура и эксплуатация — полностью настроил интеграцию и деплой end-to-end: настройка Linux-сервера, развёртывание приложения в Docker (docker-compose) и резервное копирование докеризованного приложения и его данных.
Результаты
- Более года в продакшене — первые полгода лично занимался поддержкой и сопровождением.
- Автоматическая корректировка цен сохранила конкурентность магазина и привлекла заметно больше покупателей.
- Мониторинг цен всего ассортимента стал задачей одного администратора; импорт прайсов значительно ускорился — с конвертацией по актуальному курсу валют и защитой от ошибочного завышения или занижения цены продажи.
Стек
Node.js · Express · Sequelize / MySQL · MongoDB · Cheerio · worker-farm · OpenCart · XLSX · Docker · Linux



