# Полный кеш, QR и погода — 8 октября 2026 - Финальная production-сборка и TypeScript прошли. `npm test`: 41/41 тест. HTTP-тесты запускались с разрешением открыть временный loopback-порт. - Реальный RideBus API для cityId=1, stopId=1: 22 маршрута, 82 варианта расписания, 2026 записей рейсов во всех вариантах; 548 прибытий на 8 октября. Нормализованный пакет около 215 КБ. Это график выбранной остановки, а не кеш всего города. - Тесты покрывают будни/выходные, праздники и воскресный fallback, сроки действия, ограничения рейсов, обратные/укороченные рейсы, прибытие после полуночи и срок использования кеша 7 суток. Переход через полуночь проверен фиксированными датами в тестах, без изменения системных часов. - Реальный Open-Meteo вернул погодные данные по координатам остановки и 48 почасовых значений. Проверены единицы м/с, Unix timestamp, отсутствие RideBus-ключа в запросах к погоде, обработка null, срок 1 час и повтор после сбоя. - Production-сервер остановлен, вкладка перезагружена. Оболочка, полный кеш, завтрашний рейс №22 в 00:02 и следующие утренние рейсы восстановились. Погода помечена «сохранено», актуальность предупреждений не подтверждается. Затем сервер восстановлен. Снимок: board-full-cache-offline.jpg (для проверки выбран маршрут №22). - 1280×720: все три информационные карточки имеют clientHeight == scrollHeight (348 px), включая случай ближайшего рейса завтра. Шесть последующих строк: последняя заканчивается на y=649.48, нижняя панель начинается на y=661. - 390×667: погодная карточка clientHeight == scrollHeight (296 px), QR-карточка помещается. Снимки board-weather-portrait.jpg и board-qr-portrait.jpg. Портретные снимки сделаны с фильтром №22, чтобы проверить карточки отдельно от поступивших реальных предупреждений. - QR-ссылка открыта в публичной PWA: https://pwa.ridebus.by/?city=1&stop=1. В городе выбран Полоцк, открыта Швейная фабрика. Проверены параметры ссылки, локальная генерация SVG и тихая зона 4 модуля. Сканирование физической камерой не выполнялось. - Итоговый board-weather-qr-tv.jpg показывает реальные данные и все маршруты остановки. После проверки восстановлены все маршруты, 4 следующие строки, приоритет близкого рейса, автоматический цикл; временный viewport сброшен. - Изменены backend API и модули расписания/погоды, клиентские hooks/хранилище, информационные карточки, шапка и CSS. Обновлены README, .env.example, compose.yaml; добавлены тесты timetable/weather и проверки HTTP/хранилища. Панель оператора не входит в эти изменения.