Качество и интеграция клиентских данных
106,11
рейтинг
24 января 2014 в 14:39

Разработка → Подсказки: API для ввода почтовых адресов и ФИО одной строкой

Если вам когда-нибудь приходилось разрабатывать форму регистрации или оформления заказа, то вы знаете, что для получения из формы качественных данных нужно прикрутить множество проверок для ФИО, почтовых адресов, e-mail, телефонов. При этом так уж исторически сложилось, что разработчики пишут код валидации информации каждый раз заново. Ну а потом эти проверки приходится еще и поддерживать, а на поддержку, как известно, приходится 80% усилий.

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

Так не должно быть.



Чтобы улучшить ситуацию с проверкой информации, мы разработали сервис Подсказки, который раз и навсегда призван ликвидировать проблему проверки контактных данных на форме ввода. С Подсказками пользователь начинает вводить адрес или ФИО в свободной форме, а сервис автоматически предлагает подходящие варианты и возвращает результаты в гранулярном виде.

Вот пример его работы для ввода адресов:

image

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

И ФИО:

image

Все, что нужно для начала использования — подключить к полю для ввода джаваскрипт, вызывающий сервис Подсказок, и наслаждаться результатами.

В будущем мы планируем подключить компоненты для проверки наименования компании по ЕГРЮЛ/ЕГРИП, e-mail, телефонов, дат рождения и документов, удостоверяющих личность.

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

Надеемся, что сервис будет вам полезен!
Автор: @lyalius
HumanFactorLabs
рейтинг 106,11
Качество и интеграция клиентских данных

Комментарии (62)

  • +3
    Сервис просто супер! Спасибо!
    Одно но: вы объявляете свой элемент через $("#address").autocomplete({… и точно также объявляется выпадающий список из стандартного набора jquery ui jqueryui.com/autocomplete/. Конфликтов не будет?
    • 0
      Спасибо, пользуйтесь на здоровье :-) Конфликт с autocomplete действительно возможен, эту проблему исправим в ближайшем будущем.
    • 0
      Исправили, теперь плагин называется suggestions.
  • +2
    Не удержался, и поставил +1 девушке с датой регистрации 23 февраля.
    Было бы хорошо, если бы можно было выбирать город в приоритет, чтобы если мы находимся не в Дефолт сити, то улицы этого замечательного центра уходили бы вниз списка, а на первое места ставились местные адреса.
    • +1
      Действительно, сейчас первые места оккупировали Питер и Нерезиновая, это не всегда удобно. В дальнейшем реализуем ваш вариант или автоопределение умолчательного города через geolocation.
    • 0
      спасибо :) я и не обращала внимание на дату регистрации, а и правда прикольно :)

      спасибо за предложение! думаю, что сделаем через гео
  • +1
    Рекомендую добавить GeoIP при поиске адресов дабы задать контекст города/области.
    • 0
      Да, это есть в планах.
    • –2
      А если я через VPN сижу? Мой IP из Амстердама, а сам я из Москвы.
      • 0
        Тогда останется дефолтное ранжирование вариантов
      • +2
        Про бабушку, яйца и дедушку.
    • +2
      Сделали автоматическое определение местоположения (до города) по IP-адресу.
  • +2
    Кроме России будут ещё страны? Если да, то какой регион в приоритете (СНГ/Европа/etc.)?
    • +2
      Страны будут, в приоритете СНГ (в первую очередь Украина).
  • 0
    Какая-то странная база адресов. Ввожу Красина 4 Екатеринбург получаю «Вы ввели неизвестный нам адрес». Яндекс, Гугл и 2Гис нормально распознают.
    • 0
      Мы используем классификатор адресов России (КЛАДР). В нем номера домов для улицы Красина в Екатеринбурге отсутствуют, поэтому по точному номеру дома подсказок и нет. Если указать просто улицу — будут.
      • 0
        Есть некая гипотеза, что налоговый справочник точнее кладра. Пока гипотеза подкреплена только личными ощущениями. Вы не пробовали их сравнивать?
      • +1
        А как Вы решили вопрос с ограничениями лицензионной политики базы КЛАДР? С свое время мы очень плотно прорабатывали этот вопрос и в итоге нам пришлось отказаться непосредственно от базы КЛАДР
        • +1
          Приняли как риск до возникновения судебной практики. Согласно тексту лицензии (п. 3) получается, что даже публикация адреса в формате КЛАДРа является распространением компонента КЛАДР и запрещена. Что делает невозможным достижения целей использования, прописанных (п. 1). Думаю, что на волне инициатив государства по открытым данным и поощрению создания производных продуктов вероятность возникновения проблем с этой лицензией стремится к нулю.
          • 0
            А в случае возникновения? Закроете сервис?
            • 0
              Ну если дойдет до запрета публикации адресов в формате КЛАДР, то переключимся на другую базу, потому что тогда никто не сможет использовать КЛАДР :)
              • 0
                Ну, это не совсем так. КЛАДР можно использовать бесплатно в своих целях. Именно поэтому есть загрузки кладра, например, в 1ску. А вот предоставлять доступ третьим лицам, да еще и платно :) а-та-та :)
                • 0
                  Мы не предоставляем доступ именно к КЛАДРУ, мы показываем адреса, разобранные по КЛАДР.
                  Так что тут вопрос тонкий, а-та-та или нет :)
                  • 0
                    Понятно :) Право что-то мне подсказывает, что налоговой или кто будет разбираться, этот вопрос тонким не покажется, но это конечно уже не мое дело.
                    Вам остается пожелать только удачи.
          • 0
            Т.е. насколько я понял сервис стабильно работает до первого возникновения судебной практики?
            • 0
              Нет.

              Просто пока она не возникла, этот риск нельзя оценить. Когда она возникнет, будет понятно, что с этим делать.

              За 10 лет существования КЛАДР и его использования на различных сервисах, в том числе и в коммерческих целях, прецедентов пока не было. Поэтому мы оцениваем риск негативной судебной практики как низкий.
      • 0
        Если не ошибаюсь, кладр уже устарел и сейчас стоит начать пользоваться классификатором ФИАС. Почему не выбрали его?
        • 0
          По идее, ФИАС должен содержать все те же адреса, что и КЛАДР, плюс дополнительную информацию типа муниципального деления. Но на практике часть адресов в ФИАС отсутствует. Ждем, пока доведут до ума :-)
          • 0
            Обновления на фиас выходят еженедельно.
            Не могу возразить по соответствию адресов, но могу сказать, что одному коду кладр может соответствовать 2 кода фиас.
            • 0
              В документации написано, что в ФИАС в таблице ADDROBJ* код кладр состоит из 17 цифр, в то время как код кладр домов состоит из 19 (в таблице кладр DOMA.DBF).

              В таком случае, конечно, код кладр будет дублироваться в адресах с разными домами.
              • 0
                Вы правы, проверил — в чисто адресных данных нет ни одного кладра, соответствующего двум фиасам. Почему-то был уверен, что видел.
                С другой стороны, есть несколько тысяч классов фиас без непосредственно кладра — улицы в разных СНТ (Причем, у самих СНТ есть кладр). Например, 14ff9956-c526-4f04-8907-70c0a7e6f123, 446200, Самарская обл, Новокуйбышевск г, СДТ Огонек снт, 3-й кв-л.

  • 0
    База у вас пополняется каким образом?
    Пытался найти адрес «дом 25 литер Ж», по строке «25 ж» не нашел, оказалось, что он числится как «д.25 ЛИТЕРЖ», да, без пробелов.
    • 0
      Используем КЛАДР, обновляем по мере выхода новых версий. К сожалению, в КЛАДРе написание владений, строений, литер и некоторых других адресных компонентов бывает очень экзотическим (вроде того, что вы привели). Будем исправлять в дальнейшем на человекочитаемые.
  • 0
    А как это он так с фамилиями в курсе?
    • 0
      У нас в HFLabs есть справочник многих фамилий :-)
      • 0
        Организуйте Хабра-утечку.
        • 0
          Интересная мысль :-)
  • 0
    С Новой Москвой помаятесь. )
  • 0
    Сервис отличный! Рад, что таких все больше.

    Но еще есть над чем работать.

    Вот замечания (ввожу свое имя Мацовкин Андрей):
    — фамилии нет в базе (это в общем не проблема весь мир не охватишь, тем более фамилия редкая)
    — начинаю вводить имя, а он мне предлагает то что на картинке:
    во-первых, в списке и фамилии и имена, хотя можно предположить, что уже вводится имя
    во-вторых система не определила мой пол (что по фамилии в русском языке часто можно элементарно сделать)

    Алгоритм может быть следующий, после ввода первого слова ищем его в словаре имен, если не нашли — логично предположить что это фамилия, можно попробовать определить пол по окончанию фамилии.
    Если после ввода второго слова окажется что ввели «еще одну» фамилию, то первое предполагаем именем.

    Ну и несколько вопросов:
    У вас внутри системы есть деление на справочник имен и справочник фамилий?
    Добавляются ли автоматически новые фамилии/имена после ввода их в форму?
    Как решается проблема составных имен/фамилий, типа «АЛИ ОГЛЫ»?

    • 0
      Да, поведение в данном случае действительно нелогичное, спасибо, исправим!

      > У вас внутри системы есть деление на справочник имен и справочник фамилий?

      Да, конечно.

      >Добавляются ли автоматически новые фамилии/имена после ввода их в форму?

      Нет, иначе справочники быстро замусорятся. Их пополнение — это отдельный процесс в hflabs.ru с комплексом мер по контролю качества.

      > Как решается проблема составных имен/фамилий, типа «АЛИ ОГЛЫ»?

      В сервисе разбора в dadata.ru оглы/кызы считается частью отчества. К подсказкам этот функционал не подключили еще. Запланировали на ближайшее будущее!
  • 0
    Еще по адресу замечания,
    откуда вы берете данные?
    Почему все номера домов с какой-то литерой? К нас отродясь «литер» в адресе не было.
    Кроме того, нет на нашей улице дома 38корп5 (хотя может я чего-то не знаю…)

    • 0
      откуда вы берете данные?

      Уже отвечали выше не один раз.
    • 0
      Поправили дома с литерами.
  • +1
    Полезный сервис!
    Для валидации и подсказок E-mail можно воспользоваться сервисом «Печкин.Фикс». Хотя он не идеален, и есть, что развивать и улучшать, но, как мне кажется, его разработчики примут полезные советы по развитию.
    • 0
      Очень интересный сервис, спасибо!
  • 0
    Интересно, если набирать «Ботаническая», то выдаётся такая улица в Москве, потом Бурятия, Дагестан, Карелия и т.д. Если же набирать «Петергоф Бот...», то все адреса находятся.
    Но если начать набирать «Чичеринс...», или «Шахмато...» то Чичеринская улица и улица Шахматова в том же Петергофе находятся сразу, без дополнительных подсказок.
    Почему так?
    • 0
      Варианты отсортированы по вероятности, которая в общем случае зависит от количества проживающих в этом месте людей. Видимо, Чичеринская и Шахматова являются либо уникальными для Петергофа, либо в других сторонах на этих улицах меньше людей живет.
      • 0
        Вопрос скорей в другом: почему Ботаническая вообще не выводится, если не начать запрос с явного «Петергоф»?
        • 0
          Ботанических улиц в стране слишком много, чтобы всех их вывести в качестве вариантов. Поэтому сразу напрашивается два варианта:

          1. Сужение пространства поиска по IP пользователя. С этим вообще большинство проблем снимается сразу.

          2. Если объектов с названием слишком много, то в подсказки выводить не адреса, а продолжения этого слова.

          Сначала реализуем первый вариант, если не окажется достаточно, то и второй. Вообще, по нашим наблюдениям, с улицы адреса начинают в основном москвичи )))
          • 0
            Сужение пространства поиска по IP пользователя

            Так я и проверяю, сидя на этой самой Ботанической в Петергофе :) Во всяком случае и maxmind, и 2ip определяют меня с точностью до «Санкт-Петербург, SatNet». В самом СПб Ботанической улицы нет, SatNet — это по определению Петергоф…

            с улицы адреса начинают в основном москвичи )))

            Или те, кто привык к тестированию, и начинает сразу с неочевидного поведения юзера :)
            • 0
              В данном частном случае точности до СПб бы хватило, чтобы предложить несколько подходящих вариантов с городами Петергоф, Сестрорецк и Ломоносов. Вообще, в случае с подсказками точности до региона достаточно, чтобы сократить пространство в 10-100 раз — это в пользовательском опыте дает качественную разницу.
              • 0
                Так а почему бы, даже не определяя IP, выдавать что поближе к Москве, чем, скажем, Бурятия?

                • 0
                  На Улан-Удинской Ботанической домов в несколько раз больше, чем на Казанской Ботанической. Поэтому вероятность, что человек именно из Улан-Удэ в несколько раз выше, поэтому она раньше и показывается. Москва как центр вселенной не зашита, просто на ее улицах действительно много людей живет, поэтому московские адреса в конкурсе на вероятность и побеждают.
                  • 0
                    Таки мне всё равно непонятно, почему в такой выдаче нет Петергофа. Домов на этой улице всяко больше, чем в Казани. А уж если сравнивать количество проживающих, то, боюсь, и Москва позади останется :)
  • 0
    По-моему Вы немного лукавите в сравнении тарифов — у Вас на «бесплатном» тарифе есть ограничение по количеству обращений (1000 запросов в сутки, что очень мало), в то время как, например, у «Кладра в облаке» ограничений нет.
    • +1
      Спасибо, поправим матрицу сравнения. Разъехалась в ходе многочисленных обсуждений и согласований )))

      А какая граница по-вашему была бы более разумной для бесплатной версии?
    • 0
      Исправили сравнение и заодно увеличили бесплатный лимит в 10 раз.
  • 0
    Интересно, как вы обновление КЛАДРа реализовали — инкрементальное или заливаете целиком? Ох и повозиться с ним пришлось…
    • 0
      Ну и возврат кода найденного адреса тоже, наверное, в API не помешал бы.
      • 0
        Да, КЛАДР штука специфическая :-) Заливаем целиком, возврат кода уже делаем, зарелизим в феврале.
      • 0
        Добавили возврат кода КЛАДР, поле data.kladr_id.

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

Самое читаемое Разработка