Проверка соответствия адреса указанному почтовому индексу до оформления заказа
Несовпадение почтового индекса и города в форме заказа выглядит мелкой опечаткой, пока не превращается в доставку совсем в другую часть страны.
Список из сорока адресов отделений, отсортированный по названию города, бесполезен клиенту, который хочет знать, какое отделение ближе всего к его офису. У регионального банка на сайте годами висел именно такой список, а служба поддержки постоянно получала звонки, в которых её, по сути, просили выполнить эту сортировку вручную по телефону.
Для решения требовались два вида данных о местоположении, которых у банка не было в пригодном виде: координаты каждого отделения и способ найти начальную точку самого клиента. Адреса отделений геокодировали один раз, одним пакетом через /v1/forward, поскольку в пакетном запросе каждый адрес считается одной оплачиваемой позицией. Так у каждого отделения появились фиксированные широта и долгота, чего прежний список, составленный только из текстовых адресов, обеспечить не мог.
Для стороны клиента банк предложил два пути. Клиент, разрешивший странице определить его примерное местоположение, получал его от /v1/ip, который по IP-адресу посетителя определяет координаты вместе с городом и регионом и даёт разумную начальную точку, ничего не спрашивая. Клиент, предпочитавший ввести адрес, что обычно для того, кто планирует зайти в отделение рядом с работой, а не рядом с текущим местоположением, получал геокодирование этого адреса тем же вызовом /v1/forward, что использовался для списка отделений, и затем такое же ранжирование.
Когда у обеих сторон были координаты, ранжирование сводилось к простому расчёту расстояний, который сайт банка выполнял сам без дополнительных сервисов. В результате появился поиск отделений, который сначала показывал пять ближайших отделений, каждое с понятной цифрой расстояния, вместо прокрутки сорока адресов, сгруппированных по городам.
Поскольку речь о банке, команда внимательно следила за тем, насколько уверенно высказывается инструмент. Местоположение по IP является приближением: оно полезно как начальная точка, но не точно, особенно для клиента в мобильной сети или за корпоративным VPN. Поэтому поиск банка всегда помечал определённое местоположение как предварительное предположение с удобной возможностью его изменить, а не выдавал его за достоверное. Здесь это было важнее, чем для обычного поиска магазинов, ведь направить клиента не в то отделение, например для записи к нотариусу, гораздо неприятнее, чем не в ту кофейню.
Трафик инструмента был умеренным и предсказуемым, один или два запроса на сеанс посетителя, и с запасом укладывался в бесплатную дневную квоту, входящую в ключ банка, даже во время маркетинговой кампании, которая привела дополнительный трафик в поиск отделений. Проект также дал банку чистые, многократно используемые координаты отделений, которые он позже применял и для других задач, например для простых карт с радиусом к объявлению об открытии нового отделения, без какого-либо дополнительного геокодирования.
Поиск отделений или магазинов относится к самым распространённым применениям геокодирования именно потому, что результат так заметен: работающий поиск с ранжированием по расстоянию клиенты замечают через несколько секунд использования, особенно на фоне того, что явно не работает. Документация по соответствующим эндпоинтам находится по адресам /docs/forward-geocoding/ и /docs/ipv4-lookup/.