Кейс: сервис выгрузки отчётов Ozon и Wildberries в Google Таблицы для 66 кабинетов продавцов | Владимир Зотов

Кейс автоматизации

Отчёты 66 кабинетов Ozon и Wildberries собираются в таблицы сами

Клиент: Компания, которая ведёт финансовую отчётность для продавцов на маркетплейсах. С системой работают финансовый директор заказчика и сотрудники.

Задача / Боль

Данные для отчётности приходится брать из кабинетов десятков продавцов на Ozon и Wildberries: финансовые детализации, начисления, заказы, остатки, реклама. Каждый кабинет — свой ключ, свой набор отчётов, свои сроки.

Маркетплейсы часто меняют правила выгрузки: отключают отчёты, переименовывают колонки, вводят ограничения. Вручную столько не выгрузить, а сломанную выгрузку замечают не сразу.

Решение

Я сделал сервис, который по расписанию забирает 29 видов отчётов из API Ozon и Wildberries, приводит данные к одному виду и хранит их в базе сервиса. Оттуда они раскладываются по Google Таблицам на диске заказчика: папка на каждого продавца, файл на каждый отчёт. Когда файл подходит к лимиту Google в 10 миллионов ячеек, сервис сам заводит новый.

Быстрые и долгие отчёты идут раздельно, чтобы долгие не задерживали остальные. Данные сначала сохраняются в базе сервиса, потом попадают в таблицу. Если таблица недоступна, сервис повторяет запись каждые пять минут. Отчёт начислений Ozon собирается из трёх методов, и каждый прогон сверяет сумму строк с суммой из API.

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

AI в этом сервисе нет: это обмен данными между системами и своя база. Модель здесь ничего бы не улучшила, а стоила бы денег каждый месяц.

Что было сложно. Маркетплейсы отключают отчёты и переименовывают колонки, иногда без единой ошибки. Однажды Ozon переименовал колонки в отчёте: сервис показывал, что всё в порядке, а цены шесть дней выгружались пустыми у всех продавцов. С тех пор сервис проверяет, что поля заполнены, и отметке «выгрузка прошла» больше не верит. Когда Ozon отключил выгрузку начислений, я за три дня собрал отчёт из трёх новых. Рекламу Ozon отдаёт порциями по десять кампаний, на каждую уходит около девяти минут: у продавца с двумя тысячами кампаний отчёт за сутки не собрать, и сервис сразу останавливает такой отчёт и показывает причину.

Технологии

  • Python
  • FastAPI
  • PostgreSQL
  • Celery
  • Redis
  • React
  • Google Sheets API
  • Google Drive API
  • API Ozon Seller и Performance
  • API Wildberries
  • Docker

Результат

  • Охват: 66 кабинетов продавцов, 29 видов отчётов, более 1 600 таблиц на диске заказчика.

  • Объём: Около 1 070 выгрузок в сутки, все по расписанию; 96–97% проходят успешно. Остальные 30–40 упираются в сбои маркетплейсов, истёкшие ключи и отчёты, недоступные на базовом токене: они видны в кабинете и запускаются заново после исправления причины.

  • Контроль: Ключи всех продавцов проверяются раз в сутки: проблема видна в кабинете до того, как упадут отчёты.

  • Изменения API: С февраля по сентябрь 2026 — 38 инцидентов и доработок, включая изменения API маркетплейсов. Отключённую выгрузку начислений Ozon пересобрал из трёх новых за три дня.

Похожая задача в вашем бизнесе?

Опишите процесс — отвечу письменно в течение 24 часов, есть ли что автоматизировать.

Обсудить задачу