Карт бензина стало шесть. Почему они показывают разное и как мы собрали их в одном Telegram-боте

Яндекс, Т‑Банк, Сбер, Альфа-Банк, 2ГИС и народные карты видят разные куски одной ситуации. Водителю по-прежнему приходится сверять несколько экранов перед поездкой.

Карт бензина стало шесть. Почему они показывают разное и как мы собрали их в одном Telegram-боте

В последнее время карты по наличию бензина появляются чуть ли не каждый день. Все началось с нашумевшего сайта ГдеБЕНЗ, который за первые трое суток собрал 1,8 млн уникальных посетителей и больше 100 тысяч водительских отметок. Вскоре собственную карту запустил Т‑Банк, а следом подтянулись и другие крупные сервисы: Яндекс открыл свой слой для всех пользователей, затем аналогичные решения появились у Сбера и Альфа-Банка. Даже у 2ГИС появилась отдельная «Карта бензина».

Со стороны кажется, что задача закрыта: выбираешь любую карту и едешь. На практике одна и та же АЗС может быть зелёной у банка, серой у другого сервиса, отсутствовать на третьей карте и иметь свежую очередь на четвёртой.

В конце июня мы начали делать «АЗС Радар» — бесплатного Telegram-бота, который собирает эти сигналы вместе. За две с небольшим недели главной сложностью стало значение каждого маркера. Зелёная точка у разных сервисов может означать совершенно разные вещи.

Каждая карта смотрит на бензин через своё окно

Ни один сервис не заглядывает прямо в резервуар на АЗС. Наличие оценивают по косвенным данным.

Яндекс использует данные «Карт», заказы топлива в «Яндекс Заправках», опросы водителей и технологию, похожую на определение дорожных пробок. Наличие топлива показывают по всей России, данные об очередях на старте были доступны в Москве и Санкт-Петербурге.

Т‑Банк анализирует обезличенные покупки своих клиентов. На карте больше 20 тысяч АЗС. Сервис показывает прогноз по АИ‑92 и АИ‑95, время последней покупки и водительские отметки об очереди.

Сбер использует обезличенные покупки более 100 млн клиентов. Его карта охватывает около 23 тысяч АЗС и показывает время последней операции, а также степень уверенности в наличии топлива.

Альфа-Банк заявил больше 21 тысячи АЗС. В расчёт идут данные партнёров, операторов фискальных данных, POS-терминалов и другие источники.

2ГИС сочетает несколько слоёв. Часть транзакционных данных связана со Сбером, а водительские отметки о конкретном топливе, очереди и лимите образуют отдельный пользовательский сигнал.

ГдеБЕНЗ живёт за счёт отметок водителей. Такой источник быстрее замечает локальную очередь или внезапный завоз, но сильнее зависит от числа участников и качества свежих сообщений. И, судя по всему, отметки легко поддаются накрутке.

Отсюда расхождения. Клиент Т‑Банка заправился десять минут назад — его карта получила сильный сигнал. На той же АЗС могло не быть свежей покупки картой другого банка. Водитель в 2ГИС уже сообщил о большой очереди, а платёжные карты очередей вообще не видят.

Ещё одна тонкость: недавняя покупка подтверждает работу станции, но не всегда подтверждает выбранную марку топлива. Если источник сообщает только факт оплаты, из него нельзя честно сделать вывод «АИ‑95 точно есть».

Почему мы сохраняем все источники

«АЗС Радар» сохраняет источник, возраст и смысл каждого сигнала. На общей карте можно увидеть станцию, открыть её карточку и посмотреть, какой источник сообщил о наличии топлива.

Карт бензина стало шесть. Почему они показывают разное и как мы собрали их в одном Telegram-боте

При объединении данных приходится решать несколько задач:

— сопоставлять одну физическую АЗС, даже если сервисы используют разные идентификаторы и немного разные координаты;

— разделять наличие топлива, очередь, цену и лимит в литрах;

— не считать зависимые данные двумя независимыми подтверждениями;

— понижать старые сигналы до серого статуса;

— показывать конфликт прямо в карточке станции;

— переживать временное падение одного из внешних источников без ложных уведомлений.

Хороший пример зависимости — 2ГИС и Сбер. Транзакционный слой 2ГИС частично приходит от Сбера. Если засчитать обе зелёные точки отдельно, получится искусственное «подтверждение двумя источниками», хотя исходный сигнал один.

Поэтому в нашем агрегаторе транзакции 2ГИС не усиливают Сбер. Отдельно учитываются только свежие водительские отметки 2ГИС.

Для карты и уведомлений нужны разные правила

На карте полезно показать даже одиночный свежий сигнал. Водитель видит источник, время и сам решает, стоит ли ехать.

Уведомление в Telegram требует большей осторожности. Человек может сорваться с места после одного сообщения, поэтому для уведомления о появлении топлива мы ждём совпадения минимум двух независимых источников. Совпасть должны конкретная марка топлива и конкретная физическая АЗС.

Карт бензина стало шесть. Почему они показывают разное и как мы собрали их в одном Telegram-боте

Одиночный сигнал остаётся на карте. Статусы «возможно есть», объединённая категория АИ‑98/100 и одиночная водительская отметка не дают основания отправить уведомление.

Очередь считается отдельно. Платёж по карте говорит о недавней заправке, но ничего не сообщает о количестве машин. Для очереди нужны водительские отметки или отдельные данные сервиса, который действительно её наблюдает.

Это добавляет сложности, зато уведомление перестаёт быть механическим пересказом одной зелёной точки.

Зачем здесь Telegram

Когда топливо появляется волнами, обновлять несколько карт вручную быстро надоедает. В боте можно выбрать марку топлива, открыть общую карту и сохранить конкретные АЗС. После этого уведомления приходят в Telegram.

Самый популярный сценарий — АИ‑95. Люди сохраняют несколько ближайших станций и ждут подтверждённого появления топлива. Карта остаётся способом быстро проверить детали перед поездкой.

Где агрегатор всё равно может ошибиться

Топливная ситуация меняется быстрее любого кэша. За время дороги бензин может закончиться, очередь — вырасти, а внешний источник — перестать отвечать.

Покрытие по городам тоже различается. Платёжные данные сильнее там, где у банка много клиентов. Пользовательские карты полезнее при активном местном сообществе. Свежих данных об очередях обычно меньше, чем данных о покупках.

Поэтому мы показываем время и происхождение сигнала. Серый маркер сообщает, что свежего подтверждения нет и текущий статус АЗС неизвестен. Зелёный маркер даёт свежий ориентир; к моменту приезда ситуация может измениться.

Есть и технический риск: многие источники публичны, но не обещают стабильный API для сторонних проектов. Формат ответа может измениться без предупреждения. Мы проверяем структуру данных, а при сбое одного источника карта продолжает работать с остальными.

Что получилось

Корпоративные карты хорошо решают свою часть задачи. Банк видит собственные транзакции, «Яндекс» — заказы и активность водителей, 2ГИС и ГдеБЕНЗ — пользовательские отметки.

На общем экране видно, где источники сходятся и где расходятся. Для этого каждый сигнал должен сохранять подпись и время.

Мы продолжаем подключать источники и проверять их независимость. Ближайшие задачи — улучшить сопоставление одинаковых АЗС, расширить данные об очередях и сделать понятнее конфликты между картами.

Попробовать бесплатного бота: @AZSRadarBot

2