Каталог товаров
Источник данных
Товары, категории и бренды поступают из внешней системы mphone через автоматическую синхронизацию по расписанию (каждые 5 минут). Подробнее — в разделе Синхронизация с mphone.
Атрибуты и изображения товаров дополнительно загружаются из XML-фида поставщика — см. XML-пайплайн и Парсинг изображений.
Процесс синхронизации можно контролировать из Админ-панели: Настройки → Синхронизация → Запустить / Сбросить.
Структура каталога
Категория (с external_id из mphone)
└── Подкатегория
└── Товар (с атрибутами, изображениями, остатком)
Каждая категория может быть настроена:
enabled— показывается ли в навигацииshow_in_homepage— отображается ли в блоке на главной страницеdisplay_order/sort_order— порядок среди соседних категорий (управляется перетаскиванием)category_locked_by_gbstore— категория зафиксирована маппингом из XML-фида и не перезаписывается синхронизацией mphone
Авто-скрытие категорий
Фоновая задача CategoryVisibilityJob (по умолчанию каждые 5 минут, флаг job_category_visibility_enabled) скрывает категории, в которых не осталось активных товаров, и помечает их auto_hidden_by_visibility_sync. То же действие доступно вручную: Категории → Действия → Скрыть неиспользуемые (с предпросмотром).
Управление товарами в Админ-панели
Список товаров
Страница /admin/products — таблица всех товаров с фильтрами:
- По категории, бренду
- По наличию / активности
- Поиск по названию
Карточка товара
Страница /admin/products/{id}:
- Просмотр данных синхронизированных из mphone
- Цена сайта (
site_price) — ручное переопределение цены. Если задана, используется вместоpriceна витрине - Привязка/отвязка изображений с заданием порядка отображения
- Просмотр атрибутов товара (из mphone или добавленных вручную)
Изображения товара
Изображения загружаются через Медиатеку (/admin/media) и затем привязываются к товару:
- Загрузить файл:
/admin/media→ кнопка «Загрузить» - Открыть карточку товара:
/admin/products/{id} - Привязать изображение: указать
image_idи порядок отображения
Эндпоинт: POST /api/v1/products/{productId}/images/{imageId}?displayOrder=0
Автоматический парсинг изображений
Помимо ручной привязки, изображения могут подтягиваться автоматически: товар ставится в очередь скрейпинга, фоновая задача скачивает картинки со страницы товара у поставщика (GBStore) и сохраняет их в S3. Статус, лог попыток и ручной повтор доступны в карточке товара и в разделе Каталог → Очередь картинок. Подробнее — Парсинг изображений.
Ручные переопределения картинок (заменить или добавить к спарсенным) задаются в разделе XML Пайплайн → Переопределения картинок (режимы REPLACE / APPEND).
Управление категориями
Страница /admin/categories — дерево категорий с несколькими режимами просмотра:
- Дерево («Все») — полная иерархия из БД
- В меню — как категории рендерятся на витрине (осиротевшие при скрытом родителе поднимаются в корень)
- Список — плоская таблица
- Фильтры — regex-правила видимости категорий
- Действия — массовое «скрыть неиспользуемые»
Возможности:
- Включить/выключить категорию, управлять отображением на главной
- Перетаскивание (drag-and-drop) для смены порядка среди соседей (отключается при >400 видимых строк ради производительности)
- Кнопки «вверх/вниз» и пакетная переустановка порядка (
POST /api/v1/categories/{id}/move,POST /api/v1/categories/reorder) - Загрузить иконку категории
- Настройки дерева:
category_tree_orphan_as_root,category_tree_root_category_id
Страница /admin/categories/{id} — настройки конкретной категории: видимость, иконка, причина скрытия.
Атрибуты товара
Атрибуты синхронизируются из mphone (source = EXTERNAL) и могут добавляться вручную (source = MANUAL).
Используются для:
- Отображения характеристик в карточке товара
- Категорийных фильтров (regex-правила в
category_regex_filters)
Остатки
Поле stock на товаре обновляется при каждой синхронизации. История изменений остатков хранится в таблице stock.
Корзина валидируется через POST /api/v1/cart/validate — проверяет актуальные цены и наличие перед оформлением заказа.