- 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.
38 lines
5.4 KiB
Markdown
38 lines
5.4 KiB
Markdown
# Удалённое управление табло — 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 перезапущен с новым серверным кодом, его автономные настройки сохранены; тестовые вкладки закрыты.
|