Клиент - сеть e-commerce магазинов электроники.
Цель: Автоматизировать сбор розничных цен и складских остатков конкурентов на 4 крупнейших торговых площадках, исключив ручной мониторинг менеджерами, и предоставить инструмент для гибкого управления собственной ценовой политикой.
Задачи:
1. Спроектировать отказоустойчивую систему регулярного парсинга более 150 000 товарных позиций в сутки с обходом защиты от ботов (Cloudflare, динамическая подгрузка контента, капчи).
2. Создать веб-панель для маркетологов и аналитиков с отображением истории колебания цен, динамическими графиками и возможностью настройки триггеров на демпинг со стороны конкурентов.
3. Реализовать экспорт отчетов и webhook-уведомления в Telegram-чат отдела продаж.
Бэкенд и распределенная очередь: Построил асинхронный REST API на FastAPI, разделив бизнес-логику на независимые сервисы. Для сбора данных настроил распределенную очередь задач на Celery + Redis, что позволило параллельно обрабатывать тысячи URL без деградации производительности основного сервиса.
Парсинг и отказоустойчивость: Использовал Playwright и httpx с пулом ротируемых прокси (residential/datacenter) и эмуляцией отпечатков браузера (User-Agent, Canvas, TLS-fingerprint), что снизило процент блокировок до минимума (< 1%).
База данных: Разработал схему данных в PostgreSQL с индексацией по артикулам и временным меткам. Для хранения исторического таймсерийного лога цен применил партиционирование таблиц по месяцам.
Фронтенд: Разработал одностраничное приложение (SPA) на React + TailwindCSS: интерактивные графики динамики цен, фильтры по категориям, брендовые сравнения и система авторизации по JWT-токенам.
Инфраструктура: Полностью упаковал проект в Docker Compose с Nginx в качестве reverse-proxy и настроил автоматический health-check сервисов.
Ручной сбор цен полностью упразднен: система в автоматическом режиме сканирует 150 000+ карточек за 40 минут с частотой запуска каждые 3 часа.
Время ответа API дашборда при выборке истории за 6 месяцев составляет менее 80 мс.
Сервис введен в ежедневную коммерческую эксплуатацию отделом ценообразования. За счет оперативной реакции на изменения цен конкурентов прибыль клиента с маржинальных категорий выросла на 18% в первый же месяц