Каталог — Версии

Deprecated

Версионирование каталога (draft/published/archived) упразднено. Каталог работает без версий — изменения применяются напрямую. Категории вынесены в standalone раздел Каталог — Категории.

Роут: /catalog/versions API: GET /api/v1/catalog/versions, POST /api/v1/catalog/versions, DELETE /api/v1/catalog/versions/{id}, POST /api/v1/catalog/publish, POST /api/v1/catalog/versions/{id}/products, DELETE /api/v1/catalog/versions/{id}/products/{productId}, PATCH /api/v1/catalog/versions/{id}/products/{productId}, GET /api/v1/catalog/versions/{id}/categories, POST /api/v1/catalog/versions/{id}/categories, PATCH /api/v1/catalog/versions/{id}/categories/{categoryId}, DELETE /api/v1/catalog/versions/{id}/categories/{categoryId}


Что видит пользователь

Страница со списком версий каталога в виде таблицы. Вверху — заголовок “Версии каталога”. Страница доступна только для роли Franchise — у остальных ролей скрыта в сайдбаре.


Таблица

Колонки

КолонкаДанныеПримечание
Версияversion_numberФормат: v1, v2, … Кликабельная — переход к содержимому версии
СтатусstatusБейдж (см. ниже)
Дата публикацииpublished_atФормат: DD.MM.YYYY HH:mm. Если draft — ”—“
Кол-во товаровproduct_countЧисло
Категорийcategory_countЧисло (BR 1.7.1)
ДействияКнопки: “Опубликовать” / “Удалить черновик” (см. ниже)

Отображение статусов

СтатусБейджТекст
draftСерыйЧерновик
publishedЗелёныйОпубликована
archivedСерый italicАрхив

Действия

(Обновлено в BR 1.7.1)

Кнопки в шапке

КнопкаВидимостьЧто происходит
”Создать черновик”Нет draft-версииМодалка подтверждения → POST /api/v1/catalog/versions
”Удалить черновик”Есть draft-версияМодалка подтверждения → DELETE /api/v1/catalog/versions/{id}

Кнопка “Опубликовать” (в строке таблицы)

  • Видна только для строки со статусом draft
  • Видна только роли Franchise

Модалки подтверждений

Создание черновика

(Добавлено в BR 1.7.1)

Триггер: клик “Создать черновик” в шапке API: POST /api/v1/catalog/versions

  • Заголовок: “Создать черновик каталога”
  • Текст: “Создать черновик каталога? Будет скопирован состав текущей опубликованной версии.”
  • Кнопки: “Отмена” / “Создать” (фиолетовая)
  • После успеха: добавить строку draft в таблицу, toast “Черновик каталога v{N} создан”
  • Ошибка DRAFT_ALREADY_EXISTS: toast “Черновик уже существует”
  • Ошибка NO_PUBLISHED_VERSION: toast “Нет опубликованной версии для копирования”

Удаление черновика

(Добавлено в BR 1.7.1)

Триггер: клик “Удалить черновик” в шапке API: DELETE /api/v1/catalog/versions/{id}

  • Заголовок: “Удалить черновик”
  • Текст: “Удалить черновик каталога v{N}? Все неопубликованные изменения будут потеряны.”
  • Кнопки: “Отмена” / “Удалить” (красная)
  • После успеха: убрать строку draft из таблицы, toast “Черновик удалён”

Публикация

Триггер: клик “Опубликовать” в строке draft-версии API: POST /api/v1/catalog/publish

  • Заголовок: “Публикация каталога”
  • Текст: “Опубликовать каталог v{N}? Текущая опубликованная версия уйдёт в архив.”
  • Кнопки: “Отмена” / “Опубликовать” (зелёная)
  • Состояние: кнопка “Опубликовать” показывает спиннер во время запроса, блокируется
  • После успеха: обновить статусы в таблице (draft → published, published → archived), toast “Каталог v{N} опубликован”

Содержимое версии

Роут: /catalog/versions/:id API: GET /api/v1/catalog/versions/{id}

При клике на строку версии — переход на страницу с содержимым версии.

Просмотр (published / archived)

(Обновлено в BR 1.7.2)

Readonly двухпанельный вид:

СекцияОписание
Заголовок”Каталог v{N}” + бейдж статуса
Левая панельДерево категорий (readonly) + “Без категории”
Правая панельТовары выбранной категории (readonly): Название, Тип

При клике на категорию слева → справа показываются товары этой категории. Кнопка “Назад к версиям” — возврат на /catalog/versions.

Конструктор черновика (draft)

(Обновлено в BR 1.7.2)

Двухпанельный конструктор — один экран для управления составом каталога.

Заголовок

“Черновик каталога v{N}” + бейдж “Черновик” + кнопки “Опубликовать” и “Удалить черновик”.

Левая панель: дерево категорий

API: GET /api/v1/catalog/versions/{id}/categories

Дерево с неограниченной вложенностью. Inline-действия (видны при hover):

ДействиеИконкаAPI
Добавить подкатегориюPOST /api/v1/catalog/versions/{id}/categories с parent_id
ПереименоватьPATCH /api/v1/catalog/versions/{id}/categories/{categoryId}
УдалитьDELETE /api/v1/catalog/versions/{id}/categories/{categoryId}
Деактивировать / АктивироватьTogglePATCH ... с is_active + cascade

Кнопка “Добавить корневую категорию” внизу дерева.

“Без категории” — специальный пункт внизу дерева. Показывает товары, добавленные в каталог, но не привязанные к категории (category_id = null в catalog_version_products).

Модалки удаления/деактивации/активации — аналогичны описанным в deprecated Каталог — Категории.

Правая панель: товары выбранной категории

При клике на категорию слева → таблица товаров этой категории:

КолонкаДанныеПримечание
НазваниеnameТекущие данные товара
ТипtypeБейдж
Цена(BR 1.10) Убрана — определяется прейскурантом
ДействияКнопка “Убрать” → DELETE /api/v1/catalog/versions/{id}/products/{productId}

Кнопка “Добавить товар”

Над таблицей правой панели. Открывает модалку:

  1. Выбрать товар из справочника (список из GET /api/v1/products с поиском)
  2. Кнопка “Добавить” → POST /api/v1/catalog/versions/{id}/products с category_id = текущая выбранная категория (или null если “Без категории”)

Ошибка PRODUCT_ALREADY_IN_CATALOG: toast “Товар уже добавлен в каталог”.

Кнопка “Убрать” (в строке)

  • Модалка: “Убрать товар [название] из каталога?”
  • Кнопки: “Отмена” / “Убрать”
  • После успеха: строка исчезает, toast “Товар убран из каталога”

Модификаторы товара (read-only)

(Обновлено в BR 1.8.1)

При наведении на товар — tooltip с привязанными модификаторами из его версии:

Модификаторы:
  • Размер пиццы (1-1)
  • Добавки (0-3)

Управление модификаторами — в карточке товара. Кнопка “Перейти к товару”/catalog/products/{id} (таб “Модификаторы”).

Модификаторы редактируются в карточке товара

Модификаторы — свойство товара. Изменения применяются мгновенно.

Перемещение товара между категориями

  • MVP: убрать из одной категории → добавить в другую (или PATCH /api/v1/catalog/versions/{id}/products/{productId} с category_id)
  • Phase 2: drag-and-drop

Цены

Управление ценами вынесено в отдельный раздел Прейскуранты. Цены редактируются напрямую в карточке прейскуранта, без привязки к версиям каталога.


Состояния

СостояниеЧто показываем
ЗагрузкаSkeleton-таблица (placeholder строк)
Пусто”Версий каталога пока нет.”
Ошибка загрузки”Не удалось загрузить данные” + кнопка “Повторить”
Публикация в процессеСпиннер на кнопке “Опубликовать”, кнопка заблокирована

Ролевая видимость

Franchise

  • Полный доступ к странице
  • Видит все версии (draft, published, archived)
  • Может создавать и удалять черновик (BR 1.7.1)
  • Может управлять составом черновика (добавить/убрать товар, перемещать по категориям) (BR 1.7.1)
  • Может публиковать draft-версию

Franchisee

  • Нет доступа — страница скрыта в сайдбаре
  • При прямом переходе по URL — редирект на дашборд

Manager

  • Нет доступа — страница скрыта в сайдбаре
  • При прямом переходе по URL — редирект на дашборд

Cashier

  • 403 Forbidden — нет доступа к странице
  • Редирект на дашборд

Переходы

ОткудаКудаТриггер
Список версийПросмотр версии (readonly)Клик по номеру published/archived версии
Список версийКонструктор черновикаКлик по номеру draft версии
Просмотр/КонструкторСписок версийКнопка “Назад к версиям”

Ссылки