Админка · Устройства

Страница /devices в админке франшизы. Показывает все зарегистрированные POS-кассы и KDS-планшеты, позволяет переименовывать и отзывать.

Доступ

  • В сайдбаре пункт «Устройства · POS и KDS» отображается только если у пользователя есть permission pos.settings.edit.
  • Сама страница защищена <PermissionRoute permission="pos.settings.edit">.

Структура страницы

┌─ Устройства ──────────────────────────────────────────┐
│ Зарегистрированные кассы и планшеты во франшизе.      │
│                                                        │
│ ┌─ POS-устройства | KDS-устройства ─┐                 │
│                                                        │
│ ┌──────────────────────────────────────────────┐      │
│ │ Имя │ ТТ │ Текущий │ Версия │ Online │ ⏱ │ ⚙ │      │
│ ├──────────────────────────────────────────────┤      │
│ │ ... │... │ ...     │ ...    │ ●     │... │... │      │
│ └──────────────────────────────────────────────┘      │
└────────────────────────────────────────────────────────┘

Таб 1: POS-устройства

Источник: GET /api/v1/admin/pos/devices (admin-bff → user-service).

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

КолонкаИсточникОсобенности
Имяname + первые 8 hex от device_id под именеммоноширинный шрифт для id
ТТstore_name, fallback на store_id.slice(0,8)в P0 store_name=null (cross-service lookup отложен)
Текущий кассирcurrent_user.first_name + last_nameпрочерк если не залогинен
Версияapp_versionпрочерк если ещё не присылал
Onlineis_onlineзелёный «● Online» / серый «○ Offline»
Последняя активностьrelative от last_seen_at«только что», «5 мин назад», «3 ч назад», дата
Действиякнопки Переименовать / Удалитьвидимо только если !revoked_at

Действия

  • Переименовать — модалка с input (max 100), PATCH /api/v1/admin/pos/devices/:id → toast «Имя обновлено».
  • Удалить (revoke) — модалка-подтверждение с предупреждением «Активная сессия будет немедленно закрыта», DELETE /api/v1/admin/pos/devices/:id → toast.

Пустое состояние

«Нет зарегистрированных касс. Установите POS Desktop инсталлер на ПК кассы и пройдите регистрацию (URL франшизы → email/password менеджера → выбор ТТ → имя устройства).»

Auto-refresh

Каждые 60 секунд — refetch списка для актуализации online/offline.

Таб 2: KDS-устройства

Идентичная таблица, но источник GET /api/v1/admin/kds/devices. Реализована раньше (BR 5.1) — переиспользуем существующий компонент pages/kds/DevicesTab.tsx.

Toast-уведомления

Локальный useToast() хук, по образцу из pages/kds/KdsSettingsPage.tsx. Top-right corner, auto-dismiss 3 сек.

Технические детали

  • Файлы: web/src/pages/devices/DevicesPage.tsx + PosDevicesTab.tsx. KDS-таб — реэкспорт pages/kds/DevicesTab.
  • API клиент: web/src/api/posAdmin.ts (зеркало kdsAdmin.ts).
  • Shared типы: shared/src/types/posDevice.ts.

Связи