Проект: CRM-система для работы с маркетплейсами
Текущая версия CRM: Laravel 10
Цель: разработка модуля "Координация по магазинам"
1️⃣ Цель задачи
Разработать в CRM модуль "Координация по магазинам", который позволяет автоматически загружать в CRM-таблицы данные по продажам и аналитике с маркетплейсов WB, Ozon, Яндекс.Маркет через их API.
На данный момент аналогичная логика уже реализована в Google Таблицах — пример будет предоставлен фрилансеру в виде доступной таблицы для понимания структуры полей и отображения данных.
2️⃣ Общая логика модуля
Пользователь заходит в раздел "Координация" в CRM.
В разделе он может добавить подключение к маркетплейсу — вставив API-ключ или токен авторизации.
После добавления подключения данные по товарам и показателям автоматически загружаются в CRM в соответствующую таблицу.
Данные обновляются:
Автоматически 1 раз в сутки (по cron);
Либо вручную по нажатию кнопки "Обновить данные".
Для каждого маркетплейса создаётся отдельная таблица/вкладка с данными.
3️⃣ Поддерживаемые маркетплейсы (на первом этапе)
✅ Wildberries (WB API)
✅ Ozon (Ozon API Reports)
✅ Яндекс.Маркет (Market API / Analytics API)
Важно:
нужно реализовать модуль так, чтобы в будущем можно было легко добавить поддержку новых маркетплейсов.
4️⃣ Структура данных (какие поля нужно получать и выводить)
Ежедневные показатели (по дням)
Поле Описание
Продажа Количество продаж за день
Выручка Выручка за день
Средний чек (Ср чек) Средний чек
Общие показы (Общ. Показы) Общее количество показов (если доступно)
DRR Digital Return on Revenue (если доступен в API или рассчитывается вручную)
Показы Количество показов (по рекламе или органическим)
Клики Количество кликов
Корзина Количество добавлений в корзину
Заказ Количество оформленных заказов
Прогнозные данные (по неделям / по месяцу)
Поле Описание
Продажа Продажи (факт) по периоду (месяц / неделя)
Выручка Выручка (факт) по периоду
Прогноз Прогноз продаж / выручки (по алгоритму из Google Таблиц или в будущем в CRM)
👉 Структура и формат этих таблиц будут предоставлены фрилансеру в виде примера Google Таблицы (скриншоты и ссылка).
5️⃣ Интерфейс модуля "Координация" в CRM
Раздел "Координация" в боковом меню CRM.
На первой странице — список добавленных подключений маркетплейсов (с возможностью "Добавить маркетплейс").
При добавлении подключений:
пользователь вставляет API-ключ/токен;
сохраняется подключение;
начинается первичная загрузка данных.
Для каждого подключенного маркетплейса:
отдельная вкладка или таблица с показателями (по аналогии с Google Таблицей);
возможность вручную обновить данные кнопкой "Обновить";
автоматическое обновление по cron раз в сутки.
Таблицы должны поддерживать сортировку, фильтрацию (например по дате, по товару, по остатку и т.п.).
6️⃣ API-особенности
Фрилансер должен:
✅ Изучить API каждого из маркетплейсов;
✅ Составить таблицу маппинга полей — какие из нужных данных реально доступны по API, а какие (если что-то невозможно) оставить пустыми или рассчитывать вручную (например, DRR можно считать формулой: расходы / выручка).
✅ Если API маркетплейса требует генерацию отчётов — реализовать автоматическую генерацию и загрузку отчётов в CRM.
7️⃣ Требования по коду
Чистый, документированный код с использованием Laravel best practices.
Структура:
Сервисы по работе с каждым маркетплейсом вынести в отдельные классы / модули;
Хранение токенов и подключений — отдельная таблица в БД.
Код должен быть легко масштабируемым (возможность добавлять новые маркетплейсы без сильной переработки модуля).
8️⃣ Референс
Будет предоставлена Google Таблица, где уже реализован данный функционал вручную с помощью API Google Apps Script + формул.
Эту таблицу можно использовать как референс по полям и логике работы.
9️⃣ Дополнительные требования
Логика обновления данных должна быть безопасной:
при отсутствии данных в API за конкретный день — пустые значения не затирают уже сохранённые.
Возможность видеть дату последнего обновления данных по каждому маркетплейсу.
В будущем модуль будет использоваться для построения отчётов и дашбордов CRM — поэтому структура должна быть универсальной.
Опубликован 09.06.2025 в 10:47
Заказ находится в архиве