Управление меню
Блюда, сезоны, категории и рубрики — переключайте раздел ниже.
Создать сезон
Рубрики (подкатегории)
Верхний уровень меню задаётся в базе и здесь не редактируется. Ниже — только рубрики внутри категории; рубрику можно перенести в другую категорию при правке.
Блюда активного сезона
Актуальное меню сейчас
По умолчанию: база + блюда активного сезона.
Как пользоваться панелью
Краткий порядок работы. Все запросы к API идут с заголовком X-Admin-Token — токен задаётся на сервере (переменная ADMIN_TOKEN в Docker / окружении).
1. Токен и доступ
- Вставьте токен в поле. Кнопка «Сохранить в браузере» хранит его только в этом устройстве/браузере (локально).
- «Синхронизировать всё» подгружает подкатегории, сезоны и списки блюд — нажмите после ввода токена или при «пустых» селекторах.
- «Сброс кеша меню» нужен, если вы меняли данные напрямую в PostgreSQL на сервере: иначе витрина меню на сайте может показывать старое (кеш в Redis, до ~5 минут).
2. Сезоны
В «Текущий сезон» отображаются сезоны из базы. Один из них отмечен как активный — его блюда попадают в публичное меню (вместе с основным каталогом, если блюда туда помечены). «Сделать активным» — переключить активный сезон. Создать — новая строка в списке. Удалить можно любой сезон, кроме единственного в базе. После правок смотрите подсказки на странице — они совпадают с выбранным сезоном в селекторе.
3. Рубрики (подкатегории)
Верхний уровень — только «Кухня» и «Напитки» (задаётся в базе, здесь не редактируется). В этой вкладке вы создаёте рубрики внутри категории (завтраки, кофе и т.д.), меняете порядок, переименовываете, при необходимости переносите рубрику в другую категорию. У блюд в меню витрина группируется по рубрике — без рубрики блюдо привязать к разделу нельзя.
4. Форма блюда
- Куда класть: основной каталог, сезон (активный) или сразу и то и другое — чекбоксами в блоке «Куда добавить блюдо».
- Выберите категорию и рубрику (сначала создайте рубрику во вкладке «Рубрики»).
- Несколько объёмов/цен для напитков — в блоке «Объёмы и цены»; для блюд с одной ценой достаточно полей цена и, при необходимости, граммы или мл.
- Картинка/видео: загрузка файла или внешняя ссылка. Сохранение отправляет JSON на API (файл при загрузке уходит на
/admin/upload). - Редактирование: в «Списки блюд» нажмите «Правка» у позиции — форма заполнится; после сохранения снова «Синхронизировать» при сомнениях.
5. Списки блюд
Два списка: блюда выбранного (активного) сезона и актуальное меню сейчас (как на сайте: база + активный сезон; опция «весь каталог» показывает больше для отладки). Поиск фильтрует по названию. Кнопки: в сезон / из сезона, в основной каталог, удаление — работают через API, после действия списки обновляйте кнопкой «Обновить» или «Синхронизировать».
6. Полный сброс базы на сервере
Это делается не из браузера, а по SSH, скриптом backend/sql/reset_all_data_kitchen_drink.sql в PostgreSQL, затем сброс кеша меню (кнопка на этой странице) или рестарт Redis. Подробности в деплой-доке проекта. Перед сбросом сделайте бэкап pg_dump.
Безопасность
Не пересылайте токен в мессенджерах, не публикуйте в репозитории. Меняйте токен, если подозрение на утечку. Публичный сайт открыт без токена; API админки — только с верным X-Admin-Token.