Админка · Устройства
Страница /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 | прочерк если ещё не присылал |
| Online | is_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.