Ссылка на описание постановки на работу с QR-кодом.
Пример адресов, которые встречаются у мигрантов:
- 142450, Московская обл., Ногинский р-н, г. Старая Купавна, ул. Чехова, д.4, кв.193
- Московская обл., Щелковский р-н, г. Щелково, Жегаловская ул., д.2A
- 141112, Московская обл., Щелковский р-н, г. Щелково, Жегаловская ул., д.2A
- 142143, Московская обл., г. Подольск, с. Покров, Домодедовская ул., д.39
- 140090, Московская обл., г. Дзержинский, Алексеевская ул., д.1, строение9
- 141960, Московская обл., Талдомский р-н, рп. Запрудня, Первомайская ул., д.7, кв.1
- Московская обл., Красногорский р-н, д. Путилково, д.7, кв.31, Путилково п.
- 109428, г. Москва, ул. Коновалова, д.16
- 142050, Московская обл., г. Домодедово, мкр. Белые Столбы, ул. Жукова, д.9/6
- 142034, Московская обл., г. Домодедово, д. Котляково, ул. Новостройка, д.13
- 141865, Московская обл., Дмитровский р-н, д.67.2
В зависимости от населенного пункта надо в QR код подставлять следующие данные:
- ОКТМО населенного пункта
- ИНН и КПП налогового органа
Для тестирования сервиса, который делает неточный поиск подбирала файл Проверка_неточного_поиска.xlsx
Описание структуры данных
Ссылка на схему данных.
addresses_list
- реестр, куда складываются итоговые результаты всей проработки. Этот реестр доступен для пользователей и содержит ссылку на id адреса регистрации, чтобы через extended_profile
связать однозначно с мигрантом. Связывать через actor_id может быть не так эффективно, так как один и тот же адрес может использовать у разных пользователей и проще взять уже готовый результат, чем заново запускать парсинг.
Поле approve
фильтрует те записи, которые надо вывести пользователю в процессе импорта для ручного уточнения, по остальным записям проставляется true автоматом.
oktmo_lists
- реестр для неточного поиска, где в столбцах указаны регион, город, район, населенный пункт и какой ОКТМО этому набору полей соответствует. Этот реестр доступен для пользователей и они могут по мере необходимости обновлять в нем данные в том случае, если, например, список ОКТМО был изменен.
address_search_settings
- таблица с настройкой для определения точности поиска. Важно это вывести именно в реестр, чтобы при тестировании можно было играть с настройкой и определить наиболее оптимальный показатель.
post_index_oktmo
- реестр, в котором хранится сопоставление между почтовым индексом и ОКТМО. Предложение не связывать их через id ОКТМО, а делать независимыми, так как управлять данными внутри будут пользователи.
ifns_oktmo
- реестр, где указаны для каждого ОКТМО реквизиты налогового органа, также может управляться дополнительно пользователем.
Алгоритм парсинга адресов
0. Проверка наличия адреса
Первым делом происходит проверка адреса, который планируют проимпортировать на предмет его наличия в реестре addresses_list
.
В том случае, если данный адрес уже встречался, в extended_profile
указывается его id и работа закончена.
Если данный адрес отсутствует, то он заносится новой строкой и ему присваивается новый id.
1. Выделение списка адресов если там есть почтовый индекс
Считаем, что если первые шесть символов до первой запятой - это числа, то значит это почтоный индекс указанного адреса.
В этом случае происходит выделение почтового индекса и поиск по реестру post_index_oktmo
.
В случае, если там такой индекс находится, то данные по oktmo_number
заносятся в реестр addresses_list
для указанного id адреса и через номер oktmo подтягиваются данные по оставшимся полям из реестра ifns_oktmo
.
2. Запуск неточного поиска если индекс отсутствует
В том случае, если первые шесть символов - не индекс, или данный индекс отсутствует, должен запускаться процесс парсинга адресов.
Данные для неточного поиска лежат в реестре oktmo_lists
, по результатам которого для адреса в addresses_list
должен быть указан oktmo_number
и через этот номер oktmo подтягиваются данные по оставшимся полям из реестра ifns_oktmo
. Если результат поиска однозначен и других вариантов нет (то есть показатель точности выше указанного в реестре address_search_settings
и он единственный) - проставляется addresses_list.approve = true
, в противном случае оператору в процессе импорта должны быть предложены записи с теми адресами, которым проставить approve однозначно не представляется возможным.
Описание функционала по импорту данных по ссылке.
После того, как оператор подтвердит и дозаполнит данные по недостающим адресам вручную, по этим атрибутам проставляется addresses_list.approve = true
, заполняется oktmo_number и через этот номер oktmo подтягиваются данные по оставшимся полям из реестра ifns_oktmo
.
3. Если происходят изменения в реестрах
В том случае, если пользователь вносит изменения в реестры post_index_oktmo
, ifns_oktmo
или oktmo_lists
необходимо делать пересчет всех записей из реестра addresses_list
, так как может быть, например, изменен ИНН для одного из ИФНС или у населенного пункта поменяться ОКТМО и данные, которые будут попадать в QR-код должны будут актуализироваться.
Уточнения для заполнения данных
КПП и ИНН для ИФНС
Реквизиты зависят от того, к какому ИФНС относится иностранный гражданин *список ИФНС https://www.nalog.ru/rn50/apply_fts/). Возле каждого ИФНС указано какие города/районы он обслуживает и какие ИНН и КПП в соответствии с этим необходимо использовать при формировании QR кода для выбранного мигранта.
Что делать если у мигранта регистрация не в МО
В этом случае ему должны подставляться реквизиты ИФНС по г. Красногорск, как и ОКТМО Красногорска
ОКТМО
Сервис https://fias.nalog.ru/ выдает ОКТМО при введении адреса (для проверки можно использовать).
Сам по себе список указан тут https://nalog7.ru/oktmo/678-oktmo50 (причем таких сайтов много разных)
Также есть такой источник: https://classifikators.ru/oktmo/46700000000
При этом валидация для QR-кода настроена так, что ОКТМО должен состоять из 8 символов, то есть определяться не на уровне населенного пункта, а на уровне района.