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

Осенью, в разгар топливного дефицита, я в очередной раз объехал три заправки подряд — и на всех был «сухой» АИ-95. Бак почти на нуле, а карты в телефоне честно показывали, что заправки рядом есть. Вот только есть ли там бензин — не показывала ни одна.

Это меня и зацепило. 2ГИС и Яндекс.Карты отвечают на вопрос «где находится АЗС». А в дефицит важен другой вопрос — «где прямо сейчас, по свежим отметкам, есть топливо и какая там очередь». Между этими двумя вопросами — полный бак или пустой.

Так появилась ГдеЗаправка (gdezapravka.ru) — карта не расположения заправок, а их наличия по отметкам водителей. Расскажу, как она устроена, на чём держится — и где у неё честные дыры, потому что проект на старте.

Почему обычные карты не спасали

Любой навигатор показывает точку АЗС — но точка не знает, привезли туда бензовоз или нет. В дефицит это бесполезно: приезжаешь, а колонки перекрыты конусами. Нужна не геопозиция заправки, а её состояние в эту минуту: есть ли нужная марка, лимит на отпуск, длина очереди. Эти данные неоткуда взять официально — АЗС их не публикуют. Остаётся один путь: собирать их у тех, кто прямо сейчас стоит на заправке.

Начал для своего города. Каталог дотянул до всей страны, но честно: живое наличие и цены пока плотные по Башкортостану. Рассказываю, как карта устроена и на чём держится антифрод.

Почему обычные карты не спасали

Любой навигатор показывает точку АЗС — но точка не знает, привезли туда бензовоз или нет. В дефицит это бесполезно: приезжаешь, а колонки перекрыты конусами. Нужна не геопозиция заправки, а её состояние в эту минуту: есть ли нужная марка, лимит на отпуск, длина очереди. Эти данные неоткуда взять официально — АЗС их не публикуют. Остаётся один путь: собирать их у тех, кто прямо сейчас стоит на заправке.

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

Карта красит каждую заправку по последней отметке: зелёный — топливо есть, янтарный — есть, но с лимитом, красный — пусто, серый — данных пока нет. И вот честный момент: на старте серых заправок больше всего. Серое поле — это ровно то, что карта закрашивает по мере того, как приходят водители. Рядом со статусом виден индикатор уверенности (сколько последних отметок согласны между собой) и время последнего обновления — чтобы было видно, насколько данные свежие.

Отметить статус можно быстро, прямо с телефона у колонки: марка, лимит, длина очереди. Смотреть карту можно вообще без регистрации — она открывается в браузере и как Telegram Mini App.

Откуда данные — и почему без участия владельцев АЗС

Каталог заправок — из OpenStreetMap (открытая карта мира, лицензия ODbL, с атрибуцией). Наличие топлива — только краудсорсинг, его отмечают водители, а не заправки. Цены — отдельный слой, я собираю их из публичных источников (периодическим обновлением, не в реальном времени).

Я сознательно не беру данные у самих АЗС, не размещаю их рекламу и не завишу от того, захочет ли сеть со мной «дружить». Это и юридически чище (минимизация данных и согласие — по 152-ФЗ), и мне так спокойнее: ни от одной сети я не завязан.

Антифрод: осознанный компромисс

Любая краудсорс-карта живёт ровно до первого вброса. Но тут я принял неочевидное решение. Можно было сразу закрутить гайки: верификация телефона на каждую отметку, геозабор «отмечать только рядом со станцией». Я это спроектировал — но на старте включать не стал. На пустой карте высокий барьер означает ноль отметок, а значит и ноль пользы. Поэтому сейчас так:

- **Отметки наличия — анонимные и быстрые**, чтобы карта вообще наполнялась. - **Верификация номера через Telegram уже работает — но на добавление новой АЗС в каталог**, а не на каждую отметку. Это защищает сам справочник от мусорных точек. - **Антифрод на отметках пока лёгкий:** ограничение частоты по устройству и по IP (нельзя завалить карту с одного телефона), голосование (👍 за чужую отметку поднимает репутацию её автора) и индикатор уверенности по согласию последних отметок. - **Взвешивание по репутации и свежести** (свежее и от опытных весит больше) я применяю к консенсусу по очереди — у неё короткое окно в пару часов. Сам статус наличия беру проще — по самой свежей отметке, как и большинство таких карт, но всегда показываю, когда её поставили.

Геозабор и обязательную верификацию на отметки я заложил в архитектуру и включу, когда аудитория вырастет настолько, что злоупотребления станут реальной проблемой. Пока приоритет — наполнить карту, а не отпугнуть первых водителей. Под капотом — PostgreSQL с геозапросами (PostGIS): по ним строится карта, поиск ближайших АЗС и дедуп дублей станций.

Чем подход отличается от больших карт

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

Уфа → Башкортостан → каталог по стране

Я начинал это для своего города. Сначала — Уфа: аккуратно собранный каталог, где сейчас 135 заправок и 221 цена. Потом дотянул данные по всей Республике Башкортостан — там, где знаю местную специфику и где наличие с ценами плотнее всего.

Каталог точек я подтянул из OpenStreetMap уже по всей стране — но честно: по большинству регионов это пока просто точки на карте, без живого наличия и цен. Плотный слой данных есть по Башкортостану, остальные регионы уплотняю постепенно — ровно по мере того, как туда приходят водители.

Где карта пока не отвечает

Скажу прямо, потому что это важнее красивой картинки. Точность краудсорс-карты целиком зависит от числа отметок — и это её слабое место на старте: там, где сегодня никто не отметился, заправка серая и ответа не даёт. Достоверный статус «есть бензин» карта даёт там, где только что был живой водитель, — пока это в основном Башкортостан. Дальше — вопрос плотности отметок, а не кода.

Я не мог заправиться в Уфе в дефицит — и собрал карту, которая показывает не где АЗС, а где прямо сейчас отмечают бензин
66