- 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.
5.4 KiB
Удалённое управление табло — 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 и остановлен после проверки.
Проверены через интерфейс:
- Вход тестового администратора и раздел «Устройства».
- Ввод кода, автоматический переход табло к расписанию, статус «В сети / Настройки применены · v1».
- Изменение остановки на «Автовокзал», светлая зелёная тема, уличный профиль и дальний просмотр; автоматическое применение без перезагрузки, затем «Настройки применены · v2» в админке.
- Перезагрузка сохраняет привязку; локальное меню показывает «Управляется из админки» и версию 2.
- Отвязка в админке прекращает показ; кнопка на табло получает новый код.
- Недоступность серверной части управления и перезагрузка страницы: восстановлены имя остановки и параметры из кеша, показаны сообщения о сохранённом расписании и отсутствии связи с управлением.
- Восстановление связи: устройство снова «В сети», сохранённая конфигурация подтверждена.
Снимки: 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 перезапущен с новым серверным кодом, его автономные настройки сохранены; тестовые вкладки закрыты.