Привет, Хабр! Сегодня поговорим про способы упрощения клиентского пути приложений посредством использования подсказок при заполнении данных об адресах и реквизитах организаций, а также рассмотрим опыт подключения сервиса «Подсказок» от DaData к электронной форме документа. И сравним использование «Подсказок» по адресам и адресных справочников Федеральной информационной адресной системы (ФИАС). Через тернии к звездам ведет Алена Сычева, аналитик направления Аналитики «Цифровых технологий», ИТ-”дочки” ДОМ.РФ.   При заполнении любой электронной формы документа пользователь обязан размещать полную и достоверную информацию, поэтому крайне важно, чтобы сведения, включая информацию об адресе, были указаны точно и в полном объеме. Не секрет, что адрес включает в себя несколько составляющих, заполнять которые в разных полях крайне неудобно пользователю. Регулировать правильность заполнения этих полей также непросто, потому что необходимо подключать проверки к каждому полю со сверкой данных в разных справочниках, которые в свою очередь требуют регулярного обновления. Вероятность допустить ошибку при таком вводе высока. Удобнее, когда адрес можно вводить одной строкой, а если еще и система предложит подходящие варианты, то для пользователя все упрощается в разы. Такое упрощение реализуется при помощи адресных справочников и специальных сервисов.   Несколько слов о развитии таковых До 2018 года развивалась адресная база классификатора адресов РФ в формате КЛАДР. КЛАДР основывается на 6-уровневой структуре адресов: субъект РФ, район, город/населенный пункт, улица, дом, квартира. Справочник не отличается особой точностью адресов. В нем содержатся ошибки, адрес может быть неактуальным, не существовать вообще или дублироваться. Идентификаторы, или коды КЛАДР, могут меняться от версии к версии для одних и тех же объектов, и сама структура адресов часто является трудно разборчивой.  До середины 2021 года была актуальной и развивалась адресная база Федеральной информационной адресной системы в формате ФИАС. В ФИАС, по сравнению с КЛАДР, была усовершенствована структура хранения информации. В адресном справочнике появились районы/округа в составе субъектов РФ, добавились отметки об актуальности адреса, а также дата начала и окончания действия записи. Более того, ФИАС ввел глобальный идентификатор, GUID, который позволил соединить структуру адреса воедино. До сих пор данный ID является фиксированным и служит ключом для внешних систем по определению элемента адреса.    Помимо улучшений стоит отметить проблемы, наблюдаемые в адресных справочниках ФИАС:  отображение неактуальной информации (например, устаревшие ОКТМО);  отсутствие необходимых в системе данных (например, округа городов федерального назначения);  некорректный формат данных (например, «г Город»);  неразборчивый формат данных для некоторых адресов.   На смену ФИАС пришла адресная база государственного адресного реестра в формате ГАР. В реестре содержатся сведения об адресах в соответствии с муниципальным и административно-территориальным делениями. Информация об адресе лучше структурирована, модернизирован формат хранения адресов и введен уникальный идентификатор компонентов адреса – OBJECTID, который позволяет оптимизировать поиск данных в справочниках реестра. Плюс для пользователей в том, что поиск адреса осуществляется быстрее.   «Подсказки» по адресам позволяют пользователю быстро ввести корректный адрес на веб-форме или в приложении. Адресная база сервиса DaData ведется с 2014 года, основной справочник адресов обновляется один раз в неделю. Адреса в справочниках сервиса хранятся во всех форматах: ГАР, ФИАС, и КЛАДР. В целом, использование сервиса DaData значительно повышает качество данных и облегчает процессе заполнения адресов.    Среди основных плюсов сервиса:  совпадения при вводе адреса пользователем точнее;  полнота данных шире;  адресный справочник содержит больше адресов;  присутствует список исторических названий объекта нижнего уровня, будь то предыдущие наименования города, либо улицы;  автоматическое исправление опечаток (стандартизация текста).   Давайте на примере рассмотрим отличие поиска адреса в ФИАС от поиска адреса с использованием «Подсказок» от DaData, чтобы наглядно увидеть различия, плюсы и минусы двух решений. Попробуем ввести адрес: «Московская обл, г. Наро-Фоминский, г Апрелевка», ОКТМО которого с 1 марта 2018 года изменен на 46750000006.  Для начала введем адрес с использованием справочника ФИАС. При вводе «Апрелевка» отображается только один вариант адреса, который относится к Калининградской области.  После детализации адреса видим, что данные возвращаются в некорректном формате «г Городское поселение», вместо города значится «р-н».   В расширенном ответе по адресу возвращается и устаревший ОКТМО 46638102.   Для сравнения делаем запрос в DaData.   Результат заметен. DaData возвращает актуальные сведения и предлагает больше схожих вариантов для выбора, что для пользователей является большим преимуществом. ОКТМО возвращается обновленным.   Актуальность возвращаемых данных – основной критерий, по которому был сделан выбор в пользу сервиса DaData.  Удобно, что поиск в «Подсказках» по адресам гибкий и осуществляется по любой части адреса - от региона до квартиры, причем сервис предлагает большое количество вариантов.  Вот несколько наглядных примеров:    Еще одним заметным преимуществом является поиск адреса при его вводе в неправильной раскладке. Сервис выдает результаты в соответствии с перекодировкой текста в нужную раскладку. Опечатки при использовании сервиса «Подсказки» автоматически корректируются, поэтому нет необходимости настраивать сложные валидации и придумывать мудреные формы.  Конечно, справочники DaData не лишены ошибок, для некоторых адресов частично отсутствуют или являются неактуальными данные (ОКТМО, округа городов федерального назначения). Например, для города Видное Московской области отсутствует городской округ Ленинский в ответе, если не подключено автодополнение при вводе. По умолчанию адрес возвращается в административном делении.  Есть еще один минус у сервиса «Подсказок» по адресам. Не все поля заполняются однозначно, так корпус, литера, строение, владение передаются в одном параметре data.block, а квартира, комната, помещение, офис передаются в data.flat. Различить их можно только по типу, передаваемому в data.block_type(_full) и data.flat_type(_full) соответственно. Например, если в ответе сервиса пришло значение тип блока «block_type_full» = «Строение», поле формы «Строение» заполняется значением building, поэтому для парсинга адреса на составляющие нужны дополнительные проверки.  Еще один полезный инструмент, который помогает быстро и безошибочно заполнять сведения об организациях в проектной декларации, размещаемых в отношении индивидуальных жилых домов – «Подсказки» по организациям.  Если требуется указать сведения об организациях, например, об органах, утвердивших документы, об организациях, выдавших заключения экспертизы проектной документации и (или) экспертизы результатов инженерных изысканий, об организациях, выполняющих работы в качестве генеральных подрядчиков и т.д., то заполнение будет производиться на основе «Подсказок» по организациям.   Пользователь начинает вводить наименование организации или ФИО индивидуального предпринимателя/руководителя организации, ИНН/ОГРН в свободной форме, а сервис автоматически предлагает подходящие варианты и возвращает результаты.   Поиск организация осуществляется по:  ИНН, ОГРН и КПП;  названию (полному и краткому);  ФИО (для индивидуальных предпринимателей)/ФИО руководителя компании;  адресу до улицы (с ограничениями, у нас поиск по адресу на текущий момент не работает).   Сервис осуществляет поиск только среди действующих или ликвидированных компаний. Важно, что «Подсказки» по организациям основываются на официальной базе налоговой службы. Данные по организациям быстро обновляются и пополняются, максимально возможное отставание от сайта налоговой службы - 3 дня.    Читатели, наверное, уже заметили, что интерфейс для заполнения адреса и информации об организации выглядит просто. На экране сначала отображается единственно поле для ввода данных, которое заполняется с помощью «Подсказок». Активировав флаг уточнения адреса, пользователь может внести недостающие сведения вручную.   К полю ввода подключается код, который вызывает адресный сервис. Для подключения непосредственно к DaData требуется получить API-ключ, который является паролем от сервиса, и при необходимости оплатить подписку. В нашем случае был получен API-ключ и оформлена лицензия, позволяющая развернуть нужные справочники сервиса в контуре системы. Для DaData есть еще вариант получения данных путем прямого вызова метод API «Подсказок» (для этого необходимо также получить API-ключ), или интеграция с DaData, используя jQuery-плагин.  Справочники ФИАС/ГАР достаточно загрузить в свою базу данных, а дальше развернуть внутреннее API для работы, подключить плагины.  Как и ФИАС, так и DaData через API работает по схеме: когда пользователь начинает вводить адрес, система отправляет REST-запрос, на который в режиме реального времени получает ответ от поставщика сведений в формате JSON/XML.   Запрос к DaData:  После того, как получен подробный ответ, из него забираются нужные данные, которые отображаются в экранной форме. При обычном вводе это адрес одной строкой. Если предусмотрено дробление адреса на части, то в поля экранной формы подставляются гранулярные поля адреса из ответа сервиса.   Итоги  По результатам предварительного подключения «Подсказок» от DaData, анализа и опыта использования сервиса «Подсказок», становится понятно, что наиболее подходящим решением было использование именно его для заполнения полей формы документа. В заключении - краткое сравнение «Подсказок» и ФИАС по основным параметрам.   Параметр  «Подсказки» по адресам  ФИАС  Поиск  Быстрый, гибкий, точный. Встроена стандартизация текста и дешифровка неправильной раскладки клавиатуры  Медленный, не достаточно точный. Хорошо отрабатывает только поиск по полному совпадению  Ответ на запрос поиска  Подробный, в ответе приходят разные подходящие варианты. Муниципальное деление работает при подключении дополнительного модуля  Возвращается несколько вариантов. Не всегда нужный адрес возвращается в ответе. Много устаревших данных  База данных  Адресная база шире, регулярно дополняется новыми адресами и актуализируется  Адресный справочник не обновляется  Структура данных  Структурированные данные. Сервис исключает дублирование данных. Минус, что дома, строения, владения и т.д. передаются в одном параметре  По сравнению с КЛАДР информация более структурированная, но для многих адресов целостность структуры нарушена. Встречаются дубли адресов