CAT-10: Версии каталога список + публикация
Что сделать
Создать страницу списка версий каталога с таблицей, публикацией и страницу просмотра содержимого версии.
Смотри спеку
Каталог — Версии — полная спека.
Конкретно
Список версий
Страница /catalog/versions (Franchise only). API: GET /api/v1/admin/catalog/versions.
Заголовок “Версии каталога”.
Колонки таблицы:
| Колонка | Данные | Примечание |
|---|---|---|
| Версия | version | v1, v2, … Кликабельная → /catalog/versions/:id |
| Статус | status | Бейдж: draft → серый “Черновик”, published → зелёный “Опубликована”, archived → серый italic “Архив” |
| Дата публикации | published_at | Формат: DD.MM.YYYY HH:mm. Если draft — ”—“ |
| Кол-во товаров | products_count | Число |
| Действия | — | Кнопка “Опубликовать” (только для draft) |
Модалка публикации:
- Триггер: клик “Опубликовать” на draft-строке
- API:
POST /api/v1/admin/catalog/publish - Заголовок: “Публикация каталога”
- Текст: “Опубликовать каталог v{N}? Текущая опубликованная версия уйдёт в архив.”
- Кнопки: “Отмена” / “Опубликовать” (зелёная)
- Кнопка “Опубликовать” показывает спиннер во время запроса, блокируется
- После успеха: обновить статусы (draft → published, published → archived), toast “Каталог v{N} опубликован”
Содержимое версии
Страница /catalog/versions/:id. API: GET /api/v1/admin/catalog/versions/:id.
Заголовок: “Каталог v{N}” + бейдж статуса. Кнопка “Назад к версиям” → /catalog/versions.
Содержимое (readonly):
- Секция “Категории”: дерево категорий (readonly)
- Секция “Товары”: таблица (Название, Категория, Тип, Цена, Ед. изм.)
Состояния:
- Загрузка: skeleton-таблица
- Пусто: “Нет версий каталога. Создайте товары и категории — draft создастся автоматически.”
- Ошибка: “Не удалось загрузить данные” + кнопка “Повторить”
- Публикация в процессе: спиннер на кнопке, кнопка заблокирована
Ролевая видимость:
- Franchise: полный доступ, может публиковать
- Franchisee/Manager/Cashier: нет доступа, страница скрыта в сайдбаре, прямой переход → редирект на дашборд
Файлы
web/src/pages/catalog/VersionListPage.tsx— создатьweb/src/pages/catalog/VersionViewPage.tsx— создать
Зависит от
- CAT-01
- CAT-02