26 lines
4.4 KiB
Markdown
26 lines
4.4 KiB
Markdown
# Проверка сопряжённого табло
|
||
|
||
Дата: 13 октября 2026, Europe/Minsk.
|
||
|
||
## Причина и исправление
|
||
|
||
Cookie из локального `.env` успешно авторизует существующее тестовое устройство на `board.ridebus.by`. `/api/device/status` вернул состояние `paired`, город 1 и назначенную остановку 28. Общая `/api/config` указывает остановку 1; прежний монитор запрашивал её и получал `409 settings_changed`. Запрос назначенной остановки 28 вернул HTTP 200 и расписание в режиме `live`.
|
||
|
||
Монитор теперь получает настройки устройства и использует его назначенные город и остановку. `STATUS_BOARD_TEST_STOP_ID` продолжает применяться к автономному табло. Незавершённое сопряжение, истёкший или отозванный тестовый доступ дают неизвестный статус сценария, без подтверждения сбоя сервиса.
|
||
|
||
Отдельно исправлена браузерная авторизация: cookie загружаются в новый контекст через `browserContext.addCookies()`. Изменение заголовка Cookie в `route.continue()` Chromium игнорирует; это описано в [документации Playwright](https://playwright.dev/docs/api/class-route#route-continue). Запросы записи и запросы на другой origin в таком контексте заблокированы.
|
||
|
||
Правила нового сценария имеют отдельную сигнатуру. Прежние результаты и инциденты сохранены в SQLite, но не смешиваются с проверками назначенной остановки. История обычной доступности сохранена. Перед перезапуском создана резервная копия `data/status.before-paired-board-fix-20261013.sqlite` в игнорируемом каталоге.
|
||
|
||
## Результат
|
||
|
||
- `npm test`: 62 успешных теста, 0 ошибок, 0 пропусков. Включены проверки назначенной остановки, автономного табло, состояния сеанса и настоящий Chromium с cookie, заблокированными POST и другим origin.
|
||
- `npm run build`: успешная проверка TypeScript и production-сборка Vite.
|
||
- Реальный полный сценарий: HTTP 200, режим `browser`, все шаги пройдены: общая конфигурация, настройки устройства, остановки, расписание, отображение.
|
||
- Временная ошибка локального DNS `ENOTFOUND` исчезла без изменения сетевых настроек; после этого выполнена успешная проверка реального табло.
|
||
- Существовавший локальный сервер перезапущен в прежнем режиме разработки на `127.0.0.1:5188`. Новый цикл мониторинга записал успешный сценарий в 02:18:40.
|
||
- Публичный `/api/status` вернул `board.status=operational`, `scenario.status=operational`, `reason=null`, пять пройденных шагов и отсутствие активных инцидентов текущего сценария табло. Cookie в JSON отсутствует.
|
||
- В интерфейсе подробностей табло отображаются «Работает» и «Сценарий проходит». Скриншот: [paired-board-check.png](paired-board-check.png).
|
||
|
||
Значение cookie не изменялось, не выводилось и не сохранялось в отчёте. Новое устройство не создавалось, сопряжение и heartbeat на сервер не отправлялись. Это локальное исправление; публикация на внешний хостинг не выполнялась.
|