Мы заменили регистрацию на распознавание лица. Но у старых аккаунтов были свои правила
Мы отключили форму регистрации на страховом сайте — теперь первое распознавание лица само создаёт аккаунт. А потом реальный пользователь оказался заблокирован из-за аккаунта, который он создал ещё в 2023 году, и это исправление научило меня большему, чем сама функция.

После того как мы перевели вход на gross.uz на распознавание лица через MyID (национальную систему идентификации Узбекистана), один вопрос зазвучал особенно громко: зачем вообще нужна отдельная форма регистрации? Именно при заполнении форм рождаются опечатки, дубликаты и недостоверные данные — тогда как распознавание лица уже даёт нам подтверждённую личность, связанную с паспортными данными. Поэтому мы отключили форму. Первое распознавание и есть ваша регистрация.
Ни один аккаунт не рождается молча
Заманчивый короткий путь выглядел так: распознавание прошло, аккаунт не найден — просто создать его сразу. Мы отказались от этого пути из-за правила из предыдущего поста: единственное доказательство номера телефона — код, который вы вводите обратно.
Поэтому первый вход совершенно нового пользователя выглядит так:
- Распознавание лица проходит успешно, но по паспортным данным аккаунт не найден.
- Окно просит номер телефона — вы вводите его сами, мы его не угадываем.
- SMS-код подтверждает, что номер действительно ваш.
- Только после этого создаётся аккаунт — уже подтверждённый, без пароля, который нужно придумывать, и без длинной формы.
Старую форму регистрации мы не удалили — она отключена за флагом и готова вернуться, если когда-нибудь понадобится. Убирать вещи мягко дешевле, чем убирать их храбро.
А потом реальный пользователь упёрся в стену
Вскоре пришла жалоба: пользователь прошёл распознавание лица, ввёл свой номер, правильно ввёл SMS-код — и получил ответ «этот номер уже принадлежит аккаунту». Тупик. Распознавание заново — та же стена. Система отказывалась пускать человека в его собственный аккаунт.
Я разобрал логи запросов и восстановил всю историю. Ещё в 2023 году этот человек создал аккаунт по-старому — только телефон и пароль. К тому аккаунту вообще не была привязана паспортная личность (как и к большинству аккаунтов той эпохи, созданных до появления входа по лицу). Новый процесс искал по паспорту, ничего не находил, переходил к регистрации — и обнаруживал, что телефон «занят»... собственным забытым аккаунтом пользователя.
Исправление: узнавать, а не блокировать
Исправление читается просто: если номер, который вы только что подтвердили, принадлежит старому аккаунту, к которому не привязана ничья личность, вас не блокируют — вам возвращают ваш аккаунт. Личность, подтверждённая распознаванием лица, привязывается к нему, и вся его история (полисы, документы) возвращается домой. Никакого дубликата, никакого тупика.
Соображения безопасности значили здесь больше, чем сам код:
- Подтверждение телефона по SMS и раньше открывало этот аккаунт через «забыли пароль» — наше исправление не даёт ничего, чего не давал старый процесс.
- На самом деле оно действует менее вслепую: распознавание лица точно говорит нам, кто именно предъявляет права, с достоверностью паспортного уровня.
- Аккаунты, на которых есть что-то привилегированное — доступ агента или денежный баланс, — исключаются и остаются заблокированными до ручной проверки.
От жалобы до протестированного и проверенного по безопасности исправления: один рабочий день.
Заменить форму распознаванием лица было лёгкой половиной. Настоящая работа заключалась в уважении к годам старых аккаунтов, созданных по прежним правилам: стена «номер занят» была невидима во всех тестах со свежими данными и появилась только тогда, когда в процесс вошла история. Теперь я тестирую новые сценарии авторизации сначала на самых старых аккаунтах системы, а не на самых новых.