Товары и категории
Создание товара, цена в копейках, галерея, варианты, остатки, теги, slug, видимость по сайтам и агентам.
Товары и категории
Каталог товаров живёт в текущем активном workspace. Один товар может показываться сразу на нескольких сайтах и быть доступен нескольким агентам — это управляется правилами видимости.
Где создавать
/account/commerce → вкладка «Товары» → кнопка «Создать товар».
Поля карточки
| Поле | Описание |
|---|---|
| Название | Видно покупателю и попадает в search_products LLM-tool. |
| Slug | Короткое имя для URL /p/<slug>. Уникален в пределах workspace. Заполняется автоматически из названия, можно править. |
| Описание | Подробный текст, который видит покупатель и который LLM использует при поиске и пересказе. |
| Цена | В рублях, хранится в копейках. Можно задать зачёркнутую цену (comparePrice) для отображения скидки. |
| Валюта | По умолчанию RUB. |
| SKU | Опциональный артикул для учёта. |
| Галерея | Массив картинок (url, alt). Первая используется как preview и og:image. |
| Варианты | Размер / цвет / любой атрибут. Каждый вариант — со своим priceDelta к базе и собственным stock. Если массив пуст — товар без вариантов. |
Остатки (stock) | Целое число. Работает только при trackInventory=true. Декрементируется при paid, возвращается при cancel. |
Учитывать остатки (trackInventory) | Чек: если выключен — товар можно продавать неограниченно (актуально для цифровых товаров / услуг). |
| Теги | Массив строк для AI-поиска и быстрых фильтров. Например ["сезон-весна", "хит"]. |
Требует доставки (requiresShipping) | Если включено — в чекауте появляется блок адреса и способа доставки. Также включает доступность cash-on-delivery. |
| Активен | Если выключен — товар не виден в публичном каталоге и не находится search_products. |
| 54-ФЗ: paymentSubject | commodity (товар) / service / job. Попадает в фискальный чек YooKassa. |
| 54-ФЗ: vatCode | 1 без НДС (default, типично для УСН/самозанятых), 4 НДС 20%, и т.д. Должен совпадать с вашим налоговым режимом. |
Категории
/account/commerce → вкладка «Категории».
- Иерархия через self-FK (
parentId) — категория может иметь подкатегории. - Slug уникален в пределах workspace, попадает в URL'ы.
- Один товар через M2M (
product_to_category) может быть в нескольких категориях сразу. Например, «футболка» — в «Одежда» и в «Лето». - Категории общие для товаров и услуг: M2M
service_to_categoryиспользует ту же таблицу. Полезно, когда у бизнеса смешанный каталог (косметология, йога — товары + занятия в одной рубрике).
Видимость
По умолчанию товар виден везде в workspace — на всех сайтах и у всех агентов. Если нужны исключения — заполните таблицы видимости:
- Видимость по сайтам (
product_site_visibility) — товар показывается только на выбранных сайтах. Полезно: один товар на основном магазине, скрыт на блоге. - Видимость по агентам (
product_agent_visibility) — товар продаётся только указанными агентами. Полезно: специализированные ассортименты у разных ботов.
Логика «пусто = виден всем» одинаковая для обеих таблиц.
В UI это управляется чекбоксами в карточке товара.
Поиск
Каталог индексируется через pg_trgm (GIN-индексы на name + description) — даже на каталоге 5000+ SKU ILIKE-поиск с любыми wildcards отвечает быстро. Сортировки:
relevance— pg_trgm similarity (name ×2 + description);price_asc/price_desc;newest.
LLM-tool search_products, который доступен агенту, бьёт по тому же индексу — поэтому скорость и качество результатов одинаковые, что в чате, что в UI.
Импорт и массовые операции
Сейчас массового импорта/экспорта CSV в UI нет — товары создаются по одному. Если нужно перенести каталог из другой системы, готовьте JSON и грузите через API.
Что хранится в БД
| Таблица | Что |
|---|---|
commerce_product | Карточка товара |
product_category | Категории (hierarchical через parentId) |
product_to_category | M2M товар ↔ категория |
product_site_visibility | Видимость по сайтам (пусто = везде) |
product_agent_visibility | Видимость по агентам (пусто = всем) |