Кабинет продавца и витрина: что входит в разработку
Мы разрабатываем витрину и кабинет продавца для маркетплейса. Плохой интерфейс — это недельный onboarding, поток обращений в поддержку и отток поставщиков. Наша команда создает модули, которые сокращают время внесения товаров до 2 часов, а обработку заказов — до минут. Типичные боли: продавцы тратят часы на заполнение карточек, не видят актуальные остатки, теряют заказы в статусах. Наше решение — модуль с динамическими формами, материализованными метриками и API для интеграции служб доставки. Например, для заказчика из сегмента DIY мы разработали кабинет, где продавец загружает 500+ товаров за 15 минут через Excel-шаблон с валидацией. Это позволило сократить time-to-listing на 70%. В этой статье разберем архитектуру, ключевые разделы, массовый импорт, дашборд с живыми метриками, обработку заказов, права доступа и сроки разработки. Вы получите готовую roadmap для реализации модуля. Закажите консультацию — оценим проект бесплатно.
Как устроена архитектура кабинета продавца?
Кабинет продавца — отдельное SPA или набор страниц, изолированных от покупательской части. Он работает в рамках той же кодовой базы (Laravel/Node.js), но через отдельный middleware-стек с проверкой роли seller и привязкой к shop_id. Разделы: дашборд с метриками (выручка, заказы, конверсия, рейтинг), управление товарами (создание, редактирование, массовый импорт через Excel/CSV), управление заказами (статусы, трекинг, этикетки), финансы (баланс, история выплат), настройки магазина (описание, логотип, политики возврата).
Витрина продавца (публичная страница)
Публичная витрина — /shop/{slug} с подборкой товаров, информацией о продавце и блоком рейтинга. Генерируется на сервере для SEO. Включает агрегированные данные: средний рейтинг, количество отзывов, процент выкупа. Фильтрацию и поиск внутри магазина, кнопку подписки на магазин, блок последних отзывов с ответами продавца.
Как реализовать массовый импорт товаров без downtime?
Форма создания товара — сложный компонент с зависимыми полями. Набор атрибутов меняется в зависимости от категории: для электроники — гарантия и характеристики, для одежды — размерная сетка и состав. Реализуется через динамическую схему атрибутов, хранящуюся в базе:
category_attributes (category_id, attribute_name, type, required, options) product_attribute_values (product_id, attribute_id, value) Массовый импорт через очередь: файл загружается на S3, задача разбирает его построчно, создаёт товары и фото. Отчёт об ошибках возвращается продавцу по email или в UI. Такой подход гарантирует отсутствие блокировок и возможность обрабатывать сотни товаров за минуты.
Дашборд — метрики в реальном времени
Данные дашборда не строятся по запросу — слишком дорого. Используем материализацию: таблица seller_stats обновляется раз в час через scheduled job. Данные за текущий день считаются live через Redis-счётчики. Графики строятся на основе order_daily_aggregates — таблицы с предагрегированными данными по дням. Для визуализации используем Recharts или Chart.js. Компонент дашборда получает данные через отдельный API-endpoint, не смешивая их с основным CRUD.
| Метрика | Источник | Обновление |
|---|---|---|
| Выручка | order_daily_aggregates | Раз в час |
| Заказы за сегодня | Redis | Live |
| Конверсия | seller_stats | Раз в час |
| Рейтинг | DB (суммарный) | Live |
Обработка заказов продавцом
Продавец видит только заказы, содержащие его товары. Интерфейс обработки:
- Подтверждение заказа (переход в статус
confirmed, уведомление покупателю). - Передача в доставку: ввод трек-номера или вызов API службы доставки.
- Отметка отправки: статус
shipped, автоматический email покупателю. - Обработка возвратов: запрос возврата от покупателя → решение продавца → финансовая операция.
Каждый переход статуса логируется в order_status_history с timestamps и actor_id.
Права доступа внутри кабинета
У крупного продавца может быть команда. Нужна система ролей внутри магазина:
| Роль | Товары | Заказы | Финансы | Настройки |
|---|---|---|---|---|
| Владелец | R/W | R/W | R/W | R/W |
| Менеджер | R/W | R/W | R | — |
| Склад | R | R/W | — | — |
Реализуется через Laravel Authorization с tenant-scope: shop_id привязывается к каждой роли.
Технический стек и сроки
Backend: Laravel с Eloquent, политики Gate/Policy, очереди на Redis/Horizon. Frontend: React с React Hook Form, TanStack Query, компоненты Shadcn/ui. Хранение файлов: S3 (MinIO для self-hosted), генерация presigned URL для загрузки напрямую с браузера.
Базовый кабинет (товары + заказы + дашборд без сложной аналитики) — 3–4 недели. Полный модуль с массовым импортом, ролями в команде и финансовым разделом — 6–8 недель.
Что входит в работу
- Аналитика и проектирование архитектуры.
- Реализация всех разделов кабинета.
- Массовый импорт товаров.
- Система ролей и прав доступа.
- Интеграция со службами доставки.
- Тестирование (unit, integration, e2e).
- Деплой и настройка инфраструктуры.
- Документация и обучение команды.
- Поддержка после запуска.
Наша команда имеет 5+ лет опыта в разработке маркетплейсов и более 10 успешных проектов. Наше решение на 30% быстрее типовых шаблонов за счёт Server Components и кэширования. Свяжитесь с нами — получите консультацию и оценку вашего проекта.







