Files
ridebus-board/artifacts/verification-device-management.md
Zakhar Timoshenko d04b364047 feat: add remote device management and pairing functionality
- Implemented device pairing with a four-digit code and TTL for remote settings.
- Introduced automatic checks for device status and configuration validation.
- Developed UI components for device setup and management, including error handling and retry options.
- Created a device bridge for secure communication between the device and the server.
- Added tests for managed state validation and device pairing logic.
- Established a local end-to-end fixture for testing device service and API interactions.
2026-10-10 00:52:36 +03:00

5.4 KiB
Raw Permalink Blame History

Удалённое управление табло — 10 октября 2026

Изменения сделаны совместно в /Users/xtimms/Projects/ridebus-board и /Users/xtimms/Projects/polotsk-transit-api.

Результат

  • При включённом BOARD_REMOTE_SETTINGS новое устройство показывает четырёхзначный код с TTL 5 минут; привязка выполняется администратором в разделе «Устройства» выбранного города.
  • Индивидуальный токен в HttpOnly cookie, на API только хеш. Код занимается транзакционно, параметры остановки/маршрута проверяются по городу. Отдельные права устройства и администратора.
  • Настройки с версиями и оптимистическим сохранением. Подтверждение применения от телевизора; состояние связи с порогом 90 секунд.
  • Удалённые настройки всех существующих параметров табло, ограниченное локальное меню, кеш конфигурации, отказ от показа после получения отзыва доступа, повторное подключение по новому коду.
  • Автономный режим сохранён; параметр управления по умолчанию выключен до развёртывания обновлённого API.

Проверки

  • Board: 66 тестов прошли; npm run build (TypeScript + Vite) успешен.
  • API: полный набор — 96 прошли, 15 пропущены из-за отсутствия отдельной PostgreSQL БД. Новые целевые проверки — 7 прошли, 1 PostgreSQL-тест пропущен. Повторная целевая проверка после уточнения лимитов тоже успешна.
  • Admin: Vite production build успешен; существующие предупреждения о Browserslist и размере общего bundle.
  • git diff --check без ошибок в обоих проектах.
  • Сервер Board импортирован из изолированного дерева с тем же набором общих файлов, который копируется в Docker runtime. Docker-контейнер не запускался: локальный daemon недоступен.

Совместный браузерный стенд

Использованы настоящие обработчики API устройств, сервис, мост Board и UI обоих проектов. Репозиторий устройств в памяти и транспортные данные явно тестовые; это не доказательство работы с производственной БД. Файл стенда: test/fixtures/device-flow-server.mjs, тестовый сервер доступен только на loopback и остановлен после проверки.

Проверены через интерфейс:

  1. Вход тестового администратора и раздел «Устройства».
  2. Ввод кода, автоматический переход табло к расписанию, статус «В сети / Настройки применены · v1».
  3. Изменение остановки на «Автовокзал», светлая зелёная тема, уличный профиль и дальний просмотр; автоматическое применение без перезагрузки, затем «Настройки применены · v2» в админке.
  4. Перезагрузка сохраняет привязку; локальное меню показывает «Управляется из админки» и версию 2.
  5. Отвязка в админке прекращает показ; кнопка на табло получает новый код.
  6. Недоступность серверной части управления и перезагрузка страницы: восстановлены имя остановки и параметры из кеша, показаны сообщения о сохранённом расписании и отсутствии связи с управлением.
  7. Восстановление связи: устройство снова «В сети», сохранённая конфигурация подтверждена.

Снимки: device-pairing-screen.jpg, devices-admin-applied.jpg, device-remote-light.jpg, device-repairing.jpg, device-management-offline.jpg.

Миграция 016 подготовлена, но к рабочей базе не применялась. Обновлённые API и админка на сервер не выкладывались. Физический Xiaomi Mi Box 4 не проверялся. Исходный локальный Board на 5180 перезапущен с новым серверным кодом, его автономные настройки сохранены; тестовые вкладки закрыты.