Кухонные станции — фронт
Бизнес-спека
Справочник производственных зон франшизы (горячая кухня, холодная, бар, мангал). С BR 5.1 расширен полями цветовых порогов для KDS-карточек. Простой CRUD-интерфейс — список + модалка создания/редактирования.
Routes
| Route | Страница |
|---|---|
/catalog/kitchen-stations | Список станций |
Доступ только для роли с catalog.edit (CRUD) или catalog.read (просмотр).
Sidebar
В разделе «Каталог» добавляется пункт «Кухонные станции» (после «Стоп-листов»).
Список станций (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 |
| Франчайзи | Нет |
| Менеджер ТТ | Нет |
| Кассир | Нет |
Ссылки
- Бизнес-спека
- Каталог — Товары — форма товара с полями
requires_kitchen/kitchen_station_id - Настройки KDS — глобальные настройки звуков (per-франшиза); этот раздел — управление per-станция порогами
- KDS — Список заказов — потребитель цветовых порогов
- Catalog Service — API — endpoints kitchen-stations