Как локализовать багу, если фильтрация за последний час не показывает данные
Что проверяют
Умеете ли вы идти по слоям системы, а не гадать: данные, запрос, API, фронтенд. Для фильтра по времени интервьюер почти всегда ждёт слов «часовой пояс», а следом спрашивает, что вы напишете в баг-репорте.
Как отвечать
Покажите порядок, в котором вы сужаете круг:
- есть ли данные вообще: найдите в базе записи с
created_atза последний час. На тестовом стенде их часто просто нет, и бага тоже нет; - что уходит с фронта: во вкладке Network в DevTools посмотрите параметры запроса. Какие
fromиto, в каком формате, есть ли смещение+03:00илиZв ISO 8601; - что отвечает API: если данные в ответе есть, а на экране пусто, проблема во фронтенде. Если ответ пустой, повторите запрос в Postman или
curlс явными границами; - сравнение с базой: тот же интервал руками в SQL. Совпало с API, значит ошибка в параметрах с фронта, не совпало, значит в запросе на бэкенде;
- логи: по request id найдите запрос в Kibana или Grafana Loki и посмотрите итоговые параметры.
Главная гипотеза для такого симптома: часовые пояса. Фронт отправляет локальное время без смещения, сервер считает его UTC, и у пользователя в UTC+3 окно «последний час» уезжает на три часа в будущее. Проверка простая: расширяйте фильтр. Если данные появляются, только когда окно больше трёх часов, причина найдена. Остальные кандидаты: колонка timestamp без пояса против timestamptz, расхождение часов сервера и клиента, задержка попадания данных (очередь, репликация, индекс поиска с интервалом обновления), кэш ответа и граница > против >=.
В баг-репорт кладите окружение, таймзону браузера и сервера, запрос и ответ, SQL-проверку и шаги. Так разработчику не нужно воспроизводить всё с нуля.
Где спотыкаются
Пишут «фильтр не работает» и отдают задачу без разделения слоёв. Такой баг возвращается с вопросом «а на каком шаге пусто?».
Тестируют только из своего часового пояса. Стоит сменить пояс в ОС или подменить его в DevTools на панели Sensors, и баг проявляется сразу.
Рассказывают историю «я нашёл ошибку в запросе» без механики: какой запрос, как нашли, чем подтвердили.