5.3 KiB
Нижняя панель и расширенная статистика
Дата: 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, mobile, production footer. На снимках зафиксировано состояние мониторинга до подключения cookie; успешный сценарий сопряжённого табло показан в отдельном отчёте.
Расчёт и проверка
Длительность включает только измеренные интервалы внутри подтверждённых автоматических инцидентов. Пересечения сбоев доступности и сценария объединяются; плановые работы и интервалы без свежих данных исключаются. Ручные сообщения не подменяют измерения. Если полная длительность неизвестна, показывается минимальное измеренное время со знаком ≥ или отсутствие данных.
Для сценариев создана отдельная история измерений. Старые состояния сохранены, исторические измерения задним числом не создаются. Последнее восстановление берётся из фактически записанного завершения автоматического инцидента и не ограничивается выбранным периодом.
В статистику задержек входят успешные измерения; сравнение требует достаточного покрытия обоих периодов. По умолчанию хранится 90 дней: для сравнения двух полных периодов по 90 дней нужно увеличить хранение до 180 дней.
Проверка на временной SQLite с 648 000 измерений (5 сервисов × 90 дней × 60 секунд): сводка 90 дней построена примерно за 2113ms; размер JSON — 96 353 байта. Временная база удалена. Добавлен внутренний кеш на 5 секунд с немедленным сбросом при новых проверках и изменениях через CLI; публичный ответ сохраняет Cache-Control: no-store. Время ответа кеша отдельно не измерялось.
Итоговая сборка успешна. Все 62 теста, включая расчёты статистики и последующее исправление сопряжённого табло, прошли без ошибок и пропусков. Docker-образ не собирался, поскольку daemon недоступен; конфигурация Compose проверена. Внешняя публикация не выполнялась.