# Нижняя панель и расширенная статистика Дата: 13 октября 2026, Europe/Minsk. ## Интерфейс Нижняя панель использует структуру и размеры footer из `ridebus-pwa/src/App.tsx` и его стилей: текст ridebus, подпись 13px, ссылки 14px, отступы 25px 0 34px; на мобильном экране — 24px 0 20px. Подпись: «Город ближе, когда всё работает.» Действия: «О мониторинге» и «Сайт RideBus». В production вход в демо скрыт; прямой деморежим остаётся явно обозначенным и позволяет вернуться к мониторингу. Убраны подписи «Реальные проверки» и «Обновляется автоматически». RSS и JSON доступны на странице описания мониторинга. Сохранены микроанимации и поддержка reduced motion. Добавлены длительность подтверждённых сбоев, длительность самого долгого инцидента, последнее восстановление, среднее время ответа, P95 и сравнение с предыдущим периодом. Статистика доступна для каждого сервиса и в его подробностях. На графике можно выбрать точку; пропуски измерений отображаются явно. Проверены desktop 1280px, mobile 390px, английский и русский языки, тёмная тема, отсутствие горизонтального переполнения и клавиатурный выбор точек графика. После исправления смены диапазона переход 7 → 90 дней сохраняет выбранное табло и открывает последнюю точку: max=89, value=89. На момент проверки нового диапазона горизонтального переполнения нет. Скриншоты: [desktop](expanded-statistics-desktop.jpg), [mobile](expanded-statistics-mobile.jpg), [production footer](pwa-footer-production.jpg). На снимках зафиксировано состояние мониторинга до подключения cookie; успешный сценарий сопряжённого табло показан в [отдельном отчёте](paired-board-fix-verification.md). ## Расчёт и проверка Длительность включает только измеренные интервалы внутри подтверждённых автоматических инцидентов. Пересечения сбоев доступности и сценария объединяются; плановые работы и интервалы без свежих данных исключаются. Ручные сообщения не подменяют измерения. Если полная длительность неизвестна, показывается минимальное измеренное время со знаком ≥ или отсутствие данных. Для сценариев создана отдельная история измерений. Старые состояния сохранены, исторические измерения задним числом не создаются. Последнее восстановление берётся из фактически записанного завершения автоматического инцидента и не ограничивается выбранным периодом. В статистику задержек входят успешные измерения; сравнение требует достаточного покрытия обоих периодов. По умолчанию хранится 90 дней: для сравнения двух полных периодов по 90 дней нужно увеличить хранение до 180 дней. Проверка на временной SQLite с 648 000 измерений (5 сервисов × 90 дней × 60 секунд): сводка 90 дней построена примерно за 2113ms; размер JSON — 96 353 байта. Временная база удалена. Добавлен внутренний кеш на 5 секунд с немедленным сбросом при новых проверках и изменениях через CLI; публичный ответ сохраняет `Cache-Control: no-store`. Время ответа кеша отдельно не измерялось. Итоговая сборка успешна. Все 62 теста, включая расчёты статистики и последующее исправление сопряжённого табло, прошли без ошибок и пропусков. Docker-образ не собирался, поскольку daemon недоступен; конфигурация Compose проверена. Внешняя публикация не выполнялась.