Создание пользователей мигрантов
Создание пользователей с ролью мигрант возможно только через импорт пользователей.
Импорт пользователей
Макеты первоначальной постановки по ссылке.
Полноразмерная модель данных по ссылке (требуется уточнение, так как с момента создания постановки могли произойти изменения).
Функционал включает в себя несколько ключевых моментов:
- Импорт мигрантов возможен только при использовании настроенных шаблонов данных для импорта пользователей.
- При импорте пользователя у него генерируется пара логин без пароля. Пароль задается при вызове ПФ (или из профиля пользователя или при массовой печати).
- Производится проверка на указанный в файле импорта номер телефона на уникальность, так как именно он используется в качестве логина
- В качестве
primary key
используется сочетаниеГражданство
,Серия ДУЛ
иНомер ДУЛ
, при этомСерия ДУЛ
- не обязательное для заполнения поле.
Запуск импорта
Перевод импорта в фоновую работу не отменяет уже имеющихся экранов и при желании пользователь может не закрывать всплывающие диалоговые окна, которые как и сейчас будут меняться в зависимости от отработанного процесса.
Для запуска импорта необходимо из раздела "Администрирование пользователей" нажать на кнопку "Импорт".
На экране "Импорта пользователей" каждая плитка/запись - попытка импорта в систему, которая или завершается формированием лога ошибок или успешным импортом (если пользователь не прекратил самостоятельно действия над процессом импорта).
Добавляем для каждого импорта возможность его удаления. Физически это не удаляет импорт, а только исключает его из отображения, проставляя deleted_at.
В табличном виде добавляем один столбец, в котором будут отображаться доступные для пользователя действия:
- Скачать лог ошибок
- Запустить импорт
В столбце статус выводится текущий статус импорта. Если процесс в работе, это тоже выводится как статус.
В плиточном виде на плитку выводим дату импорта, а также его статус. Если для импорта есть доступные действия, отражаем их в виде кнопок.
Состояния импорта:
- Файл загружен
- Производится проверка файла
- Проверка файла произведена
- Действие: скачать лог ошибок
- Действие: запустить импорт
- Производится импорт файла
- Импорт успешно завершен
- Ошибка загрузки
В том случае, если в процессе статусов "Производится проверка файла" или "Производится импорт файла" происходит что-то непредвиденное и процесс падает, необходимо переводить статус в "Ошибка загрузки".
1. Загрузка файла
После открывается экран импорта пользователей, где необходимо нажать на "Добавить файл импорта".
После пользователю предоставляется возможность выбрать настроенный шаблон для импорта пользователей.
На вход принимаются только файлы типа xlsx и csv (в качестве разделителя запятая).
Прикрепив файл, первым делом происходит проверка на соответствие файла шаблону импорта. Таким образом, если в прикрепленном файле отсутствуют обязательные для заполнения или входящие в primary key поля выбранного реестра, пользователю отображается информация об ошибке с указанием в каких полях ошибка.
Помимо этого, в этот момент должна производится проверка на уникальность значения в поле номер телефона и выводиться соответствующая ошибка, что значения в этом столбце должны быть уникальными.
В случае несоответствия шаблону файла или наличию дубликатов, импорт помечается статусом "Ошибка загрузки"
2. Проверка данных
В том случае, если импортируемый файл прошел первичную верификацию, запускается проверка на валидацию данные согласно настройке реестра и заданным правилам нормализации.
Вместе с проверкой на валидации должен запускаться и функционал парсинга адресов, описание по ссылке.
Дополнительно в рамках проверки необходимо выводить пользователю окно, в котором он сможет дать уточнения по тем адресам, которые не смогли распарситься автоматически однозначно. Пока в постановке нет экранов для этого, так как требуется уточнение в каком виде эти данные будут приходить на фронт и как лучше их выводить для пользователя.
Поскольку данный процесс может быть не быстрым, добавляем кнопку "Фоновый режим". Это закроет текущее окно и у импорта будет статус "Производится проверка файла"
После того, как импорт будет произвен, статус файла изменится "Проверка файла изменена" и будет доступно два действия для пользователя:
- Скачать лог ошибок
- Запустить импорт
Нажатие на кнопку с любым из этих действий в любом случае приводит сначала к отображению диалогового окна со статистикой, которая показывает информацию по итогам проверки.
В том случае, если диалоговое окно закрыто не было, переход на вид со статистикой проиходит в автоматическом режиме.
В рамках проверки данных в файле происходит их нормализация по заданным правилам. Нормализация настраивается на выборочные шаблоны. На разные шаблоны могут быть прописаны разные правила.
Проверка | Значение |
---|---|
Всего строк | Общее количество строк в импортируемом файле |
Строк будет обновлено | Количество строк, данные по primary key которым уже присутствуют в система |
Новых строк | Количество строк, данные по primary key которым отсутствуют в системе |
Дубликатов в файле | Полные дубли по строкам |
Ошибок | Количество строк с ошибками |
Формируемый лог ошибок в случае ошибки отражает детализацию по ошибкам:
- Неуникальный номер телефона
- Неверное написание страны в поле "Гражданство"
- Базовые валидации в реестре, в который производится импорт (в нашем случае
extended_profile
).
Формирование лога ошибок:
- В рамках формирования лога ошибок шапка таблицы остается неизменной в сравнении с импортируемым файлом, таким образом, если в файле был столбец "Телефон ИГ" и он участвует в меппинге, то в логе ошибок этот столбец также называется "Телефон ИГ". Это существенно упростит для пользователей работу с ошибками.
- Название файла с логом ошибок предлагается называть как "Название исходного файла "&"_Лог ошибок", например, "19.02_Лог ошибок.xlsx".
- Лог ошибок формируется параллельно с проверкой данных, таким образом, после завершения проверки пользователю нет необходимости ждать пока сформируется файл - он может его сразу начать скачивать.
3. Запуск импорта
После исправления всех ошибок, пользователь может запустить импорт пользователей в систему, однако перед этим система должна получить подтверждение от пользователя о том, что выполняемое дейстие не случаное.
Для диалогового окна с импортом пользователя также доступен переход в фоновый режим.
По итогам завершения импорта система отображает диалоговое окно об успешности завершения импорта (в том случае, если диалоговое окно было открыто, в противном случае у импорта меняется статус и появляется системное всплывающее окно аналогично информации о наличии дубликатов в исходном файле с текстом "Импорт ID = XXX успешно завершен" вне зависимости от того, на каком экране сейчас находится пользователь).
Алгоритм работы импорта
При любом импорте данных мы не удаляем существующие строки!
Если натуральный ключ существующих и импортируемых данных совпадает - происходит апдейт строки новыми данными.
Если натуральный ключ не совпадает - мы создаем нового пользователя.
При нажатии на кнопку "Импортировать пользователей" помимо самого insert и update вызывается функция create_or_update_gb_actor()
, которая непосредственно разносит данные согласно меппингу и создает пользователей.