Настройки KDS — фронт админки

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

Раздел админки для управления звуками KDS-приложений франшизы и списком зарегистрированных устройств.


Routes

RouteСтраница
/kds-settingsГлавная страница раздела (две вкладки: Звуки, Устройства)

Доступ — kds.settings.edit.


В разделе админки добавляется пункт «Настройки KDS» (после «Расписание смен»). Иконка — 📺 (планшет).


Вкладка 1 — «Звуки и поведение»

Layout

┌─ Настройки KDS ───────────────────────────────────┐
│ ▼ Звуки и поведение  •  Устройства                │
├────────────────────────────────────────────────────┤
│                                                     │
│ ━━ Звуки уведомлений ━━━━━━━━━━━━━━━━━━━━━━━━━ │
│  Звук нового заказа    [Bell ▼]  [▶ Прослушать]   │
│  Интервал повтора      [▬▬▬░░░] 30 сек            │
│  Звук просрочки        [Alarm ▼] [▶ Прослушать]   │
│  Громкость по умолчанию [▬▬▬▬▬▬▬▬░░] 80%          │
│                                                     │
│ ━━ Сессии ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
│  Авто-логаут после          [▬▬▬░░░] 30 мин       │
│  неактивности                                       │
│                                                     │
│  ☑ Кастомные звуковые файлы (P2 — disabled)       │
│                                                     │
│              [Отменить] [Сохранить]                 │
└────────────────────────────────────────────────────┘

Поля

ПолеТипValidationAPI field
Звук нового заказаDropdown из bell / chime / buzzer / marimba / digitalnew_order_sound
Интервал повтораSlider 5–120 сек, шаг 5new_order_repeat_seconds
Звук просрочкиDropdown из alarm / siren / bell-loudoverdue_sound
Громкость по умолчаниюSlider 0–100%sound_volume
Авто-логаутSlider 5–240 минутauto_logout_minutes

Превью звуков

Кнопка «▶ Прослушать» рядом с дропдауном — проигрывает соответствующий mp3-файл в браузере админа (файлы в erp-admin/web/public/sounds/).

Кнопки

  • СохранитьPATCH /admin/kds/settings с изменёнными полями
  • Отменить → откат значений к серверным

При успехе — toast «Настройки сохранены. KDS-устройства подхватят при следующем логине или перезапуске.»

Состояния

  • Загрузка: skeleton-форма
  • Ошибка VALIDATION_ERROR: inline под полем
  • Network error: красный баннер сверху

Вкладка 2 — «Зарегистрированные устройства»

Layout

┌─ Настройки KDS ───────────────────────────────────┐
│ ▼ Звуки и поведение  •  Устройства                │
├────────────────────────────────────────────────────┤
│                                                     │
│ Фильтры: [ТТ ▼ Все]  [Статус ▼ Все]  [Поиск 🔍]  │
│                                                     │
│ ┌─ Имя ──── ТТ ───── Сотрудник ── Версия ── Online ┐│
│ │ Кухня-1   Ленина   Иван П.      0.1.0    ✓ Сейчас│
│ │ Бар-1     Ленина   Анна К.      0.1.0    ✓ 5 мин │
│ │ Кухня-2   Невский  —            0.1.0    ✗ 2 ч   │
│ │ Кухня-3   Ленина   —            0.0.9    ⚠ Старая│
│ │              ☐ Архивные  •  Удалённые отдельно   │
│ └────────────────────────────────────────────────┘ │
│                                                     │
└────────────────────────────────────────────────────┘

Колонки таблицы

КолонкаИсточникФормат
ИмяnameЖирный, кликабельный — открывает edit-modal
ТТstore_nameНазвание (из cross-service lookup в Store Service)
Текущий сотрудникcurrent_user.first_name + last_nameЕсли null — «—»
Последний сотрудникlast_user.first_nameВ tooltip к ячейке «Сотрудник»
Версия APKapp_versionЕсли ниже latest — жёлтый бейдж «Старая»
Online-статусcomputed на сервере (is_online)✓ Сейчас / ✓ N мин назад / ✗ N ч / ✗ давно
Действия«✏ Переименовать» / «❌ Удалить»

Фильтры

  • ТТ — список ТТ + «Все»
  • Статус — Online / Offline / Все
  • Поиск по имени устройства

Действия per-row

Переименовать

Модалка:

┌─ Переименовать устройство ──────┐
│  Имя: [Планшет горячего цеха]   │
│       [Отмена]   [Сохранить]    │
└──────────────────────────────────┘

API: PATCH /admin/kds/devices/{id} с { name }. После успеха — toast.

Удалить (force-logout)

Confirm:

┌─ Удалить устройство? ──────────────────────┐
│ Имя: «Кухня-2», ТТ: «Невский»             │
│                                              │
│ Активная сессия будет немедленно закрыта.   │
│ Устройство потребует повторной регистрации. │
│                                              │
│              [Отмена]    [Удалить]          │
└──────────────────────────────────────────────┘

Только для роли Владелец франшизы / партнёра (менеджер не видит кнопку).

API: DELETE /admin/kds/devices/{id} → 204. После успеха — устройство уезжает из таблицы (или становится серым с пометкой «Удалено», если активен фильтр «Архивные»).


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

ДействиеВладелецМенеджерПоварКассир
Просмотр настроек
Изменение настроек
Просмотр списка устройств
Переименовать устройство
Удалить устройство

Что НЕ входит в P0

  • Загрузка кастомных звуковых файлов (P2 — BR 5.7)
  • Превью KDS-приложения на этом же устройстве
  • Push-уведомления админу при отключении устройства
  • Анализ нагрузки (сколько заказов в час прошло через устройство)
  • Per-store настройки звуков (только per-franchise)

Связи