Навигация
+7 (911) 416-05-91 Ежедневно, 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-сценарии с учётом статусов, повторных попыток и ограничений параллельности.

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

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

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

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

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

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

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

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

Результаты

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

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

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

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

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

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

01

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

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

02

Проверка подключения

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

03

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

Celery Beat формирует ежедневные и еженедельные задачи отдельно для каждого пользователя, кабинета и включённого раздела.

04

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

Worker обращается к нужному API либо запускает headless web-scraping сценарий с авторизацией в кабинете.

05

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

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

06

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

В личном кабинете отображаются подключённые аккаунты, статус и время последнего обновления, а в админке — задачи, логи и ошибки.

Стек проекта

Технологии

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

Python Django PostgreSQL Celery Redis Playwright HTTPX Docker

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

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

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