Навигация
+7 902 777-55-10 Ежедневно, 9:00–21:00
→ Веб-сервис / автоматизация

CRM-платформа для автоматизации данных Wildberries

Data-платформа для продавцов Wildberries: подключение кабинетов, регулярный сбор данных через API и web-scraping, фоновые очереди, единое хранилище и личные кабинеты с изоляцией данных пользователей.

Контекст

О проекте

Клиент NDA
Сфера E-commerce / маркетплейсы
Задача

Заказчику требовалась собственная многопользовательская система для регулярного сбора и хранения данных из личных кабинетов продавцов Wildberries. Часть информации доступна через API, а отдельные разделы приходится получать непосредственно со страниц кабинета с авторизацией.

Основная задача — создать устойчивый backend-контур, который автоматически собирает данные по каждому подключённому кабинету, приводит их к единой структуре, хранит в собственной базе и строго разделяет информацию разных пользователей.

Основные требования:

  • → Регистрация и авторизация пользователей
  • → Подключение одного или нескольких кабинетов Wildberries
  • → Сбор данных через REST API и web-scraping
  • → Авторизованный доступ к страницам, где API отсутствует
  • → Ежедневные и еженедельные расписания обновления
  • → Нормализация и хранение данных в PostgreSQL
  • → Каждый продавец видит только свои данные
  • → Мониторинг задач, логов и ошибок из админ-панели
Как решали

Вызовы и решения

Показываем не только результат, но и задачи, которые пришлось решить по ходу проекта

Два способа получения данных

Проблема
Не все необходимые данные Wildberries доступны единообразно. Часть разделов можно получить через API, а часть требует открытия страниц личного кабинета и работы внутри авторизованной сессии.
Решение
Интеграционный слой разделён на API-клиенты и web-scraping сценарии. Для каждого раздела хранится конфигурация источника, способ получения данных и периодичность обновления.

Регулярный сбор без блокировки приложения

Проблема
Сбор большого количества отчётов, заказов и документов занимает время и не должен выполняться непосредственно внутри пользовательского HTTP-запроса.
Решение
Сбор вынесен в фоновые Celery-задачи. Celery Beat создаёт задачи по расписанию, а workers независимо обрабатывают API-запросы и scraping-сценарии с учётом статусов, повторных попыток и ограничений параллельности.

Изоляция данных пользователей

Проблема
Платформа многопользовательская: каждый продавец подключает собственный кабинет, поэтому данные одного пользователя не должны быть доступны другому ни через интерфейс, ни через прямые запросы к системе.
Решение
Все данные привязаны к конкретному пользователю и его кабинету WB. При каждом запросе система проверяет, какому продавцу принадлежат данные, и показывает только его информацию. Это правило работает и в интерфейсе, и в фоновых задачах сбора.

Нестабильность внешнего источника

Проблема
Внешние API и страницы кабинета могут отвечать с ошибками, ограничивать частоту запросов или менять время загрузки. Один сбой не должен останавливать весь процесс обновления данных.
Решение
В интеграционный слой заложены автоматические повторные запросы при сбоях, обработка ошибок, ограничение частоты обращений к источнику, структурированное логирование и отдельные статусы каждой задачи. Ошибки конкретного источника остаются локальными и доступны администратору.

Разные типы данных Wildberries

Проблема
Заказы, задания на отгрузку (FBS), остатки, документы отгрузки (УПД), логистика, продажи и финансовые отчёты имеют разную структуру и не могут храниться как один универсальный набор полей.
Решение
Данные нормализуются в отдельные таблицы PostgreSQL. Сохраняется как исходный ответ источника, так и структурированные сущности для дальнейшей аналитики и построения интерфейсов.

Архитектура с запасом на рост

Проблема
Количество подключённых кабинетов и фоновых операций может существенно увеличиваться, поэтому монолитный синхронный сбор быстро становится узким местом.
Решение
Архитектура разделена на web-приложение, очередь задач, workers, брокер и PostgreSQL. Компоненты можно масштабировать независимо по мере роста количества пользователей и объёма собираемых данных.
Итог проекта

Результаты

Ключевые показатели и эффект от реализованного решения.

2 канала
API + авторизованный web-scraping
24/7
фоновый сбор данных по расписанию
Раздельный доступ
каждый продавец видит только свои данные
Единая БД
сырые и нормализованные данные Wildberries
Функциональность

Что реализовали

Ключевые модули и возможности, которые вошли в итоговое решение

✓ Регистрация и авторизация
✓ Подключение кабинетов Wildberries
✓ API-интеграции
✓ Авторизованный web-scraping
✓ Celery Worker + Beat
✓ Ежедневные и еженедельные задания
✓ Нормализация данных
✓ PostgreSQL-хранилище
✓ Разделение данных между продавцами
✓ Админ-панель задач и ошибок
✓ Структурированное логирование
✓ Архитектура под масштабирование

Процесс работы

01

Подключение кабинета

Реализована регистрация пользователей, добавление кабинетов Wildberries с передачей данных авторизации или API-ключей.

02

Планирование

Настроена система расписания: планировщик формирует ежедневные и еженедельные задачи отдельно для каждого пользователя, кабинета и раздела.

03

Получение данных

Разработаны API-клиенты и web-scraping сценарии с авторизацией в кабинете Wildberries.

04

Нормализация и хранение данных

Спроектированы модели PostgreSQL, реализовано сохранение и преобразование данных с привязкой к пользователю и кабинету.

05

Контроль результата

Созданы личный кабинет с отображением подключённых аккаунтов и статуса обновления, а также админ-панель с задачами, логами и ошибками.

Стек проекта

Технологии

Инструменты, которые использовали для реализации этого решения

Python Django PostgreSQL Celery Redis Playwright HTTPX Docker

Хотите так же?

Расскажите о проекте — предложим решение за 24 часа

Быстрая связь: