Кухонные станции — фронт

Бизнес-спека

Справочник производственных зон франшизы (горячая кухня, холодная, бар, мангал). С BR 5.1 расширен полями цветовых порогов для KDS-карточек. Простой CRUD-интерфейс — список + модалка создания/редактирования.

Routes

RouteСтраница
/catalog/kitchen-stationsСписок станций

Доступ только для роли с catalog.edit (CRUD) или catalog.read (просмотр).


В разделе «Каталог» добавляется пункт «Кухонные станции» (после «Стоп-листов»).


Список станций (KitchenStationsPage)

Layout

  • Header: «Кухонные станции»
  • Кнопка «+ Добавить станцию» (только для catalog.edit)
  • Таблица

Таблица

КолонкаДанныеФормат
НазваниеnameЖирный текст
ОписаниеdescriptionЕсли пусто — «—»
Товаровproduct_countЧисло. Клик → фильтр в списке товаров /catalog/products?kitchen_station_id=X
По умолчаниюis_defaultЧекбокс-бейдж «✓» если true
Жёлтый порогyellow_threshold_minutesЧисло с подписью «мин до готовности». Default 5. (BR 5.1)
Красный порогred_threshold_minutesЧисло с подписью «мин просрочки». Default 0. (BR 5.1)
Действия«Редактировать» / «Удалить» (только catalog.edit)

API: GET /kitchen-stations

Состояния

  • Нет данных: иллюстрация + «Станций нет. Создайте первую чтобы привязывать к ней товары.» + кнопка «Добавить»
  • Загрузка: skeleton-строки

Модалка создания / редактирования

Поля

ПолеТипОбязательностьПримечание
НазваниеInputДаMax 50 символов. Уникально per franchise
ОписаниеTextareaНетДо 500 символов
По умолчаниюCheckboxНетПредлагаться по умолчанию при выборе в форме товара
Жёлтый порогNumberДаМинут до expected_ready_at когда KDS-карточка желтеет. Default 5, диапазон 0–120. (BR 5.1)
Красный порогNumberДаМинут после expected_ready_at когда карточка краснеет. Default 0, диапазон 0–120. (BR 5.1)

Подсказка под полями: «Эти пороги применяются на KDS-планшетах для цветовой индикации заказов. Жёлтый — предупреждение, красный — просрочка.»

Действия

  • «Сохранить» → POST /kitchen-stations (создание) / PATCH /kitchen-stations/{id} (редактирование)
  • «Отмена» — закрыть модалку

Ошибки

  • DUPLICATE_STATION → показать под полем «Название»: «Станция с таким названием уже есть»
  • VALIDATION_ERROR → inline-ошибки на полях

Удаление

Клик «Удалить» → диалог подтверждения.

Случай 1: станция не используется

Простой confirm: «Удалить станцию “Горячая кухня”? Действие нельзя отменить.»

API: DELETE /kitchen-stations/{id} → 204

Случай 2: на станцию есть ссылающиеся товары

API возвращает 422 STATION_IN_USE с payload:

{
  "error": {
    "code": "STATION_IN_USE",
    "message": "Station is used by 15 products",
    "details": {
      "product_count": 15,
      "sample_products": [
        {"id": "uuid", "name": "Шаурма классик"},
        {"id": "uuid", "name": "Шаурма острая"}
        /* ... up to 10 ... */
      ]
    }
  }
}

Фронт показывает:

Нельзя удалить станцию "Горячая кухня"

На неё ссылаются 15 товаров, например:
• Шаурма классик
• Шаурма острая
• ... (ещё 13)

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

[Перейти к товарам] [Отмена]

Кнопка «Перейти к товарам» → /catalog/products?kitchen_station_id=X.


Ролевой доступ

РольДоступ
ФраншизаCRUD
ФранчайзиНет
Менеджер ТТНет
КассирНет

Ссылки