Три дня, чтобы личный кабинет страхования начал показывать правду
Трёхдневный спринт по развитию личного кабинета gross.uz: переход на единый достоверный источник данных, поиск страховых полисов, о существовании которых пользователи даже не подозревали, и доработка интерфейса, чтобы он ощущался как современное мобильное приложение, а не обычный веб-сайт.

У личного кабинета страховой компании есть одна главная задача — правильно отображать все страховые полисы клиента.
За три дня работы я обнаружил, что наш кабинет незаметно нарушал это правило сразу в нескольких местах. Мне удалось исправить эти проблемы как во фронтенде, так и на серверной стороне.
Отказ от недостоверных данных
Ранее личный кабинет объединял информацию из двух источников: базы данных онлайн-продаж сайта и государственного реестра страховых полисов.
После анализа данных стало очевидно, что локальная база уже не заслуживает доверия. В ней оставались тестовые покупки, устаревшие статусы и даже полисы, которые отображались как активные, хотя в официальном реестре они были давно аннулированы.
Чтобы убедиться в этом, я сверил вручную 40 реальных страховых полисов с данными государственного реестра. После этого было принято решение полностью отказаться от локального источника.
Теперь личный кабинет показывает только ту информацию, которую подтверждает официальный реестр. Все статусы, суммы и сведения о полисах соответствуют актуальным данным.
Заодно я исправил ещё одну незаметную, но серьёзную проблему. Если пользователь выходил из аккаунта и сразу входил под другой учётной записью, кабинет мог на короткое время показать полисы предыдущего пользователя из кэша браузера. Теперь при каждом входе и выходе весь кэш очищается, поэтому каждый пользователь видит только собственные данные.
Поиск полисов, о которых пользователи даже не знали
Официальный реестр ищет договоры по ПИНФЛ пользователя. Однако возникла проблема: многие старые страховые полисы оформлялись ещё по серии и номеру паспорта, до привязки к ПИНФЛ. Из-за этого такие договоры вообще не отображались в личном кабинете.
Я переработал серверную логику так, чтобы поиск выполнялся сразу двумя способами:
- по ПИНФЛ;
- по серии и номеру паспорта вместе с датой рождения.
После этого результаты объединяются, а повторяющиеся записи автоматически удаляются.
Результат оказался заметным сразу. Один из наших тестовых пользователей, который раньше видел абсолютно пустой кабинет, внезапно получил доступ к своему действующему полису страхования от несчастных случаев. Другой пользователь обнаружил сразу три страховых полиса, о существовании которых никто раньше не знал.
Самым интересным моментом стала работа с интеграцией. В документации API вообще не было указано, какие названия полей необходимо отправлять. Мне удалось определить их, анализируя сообщения об ошибках валидации самого API. По сути, сервер постепенно «подсказывал» свои правила через ответы об ошибках.
Интерфейс, который ощущается как приложение
Помимо исправлений логики, личный кабинет получил серьёзные улучшения интерфейса:
- Закреплённая боковая панель профиля теперь отображается на всех страницах кабинета, а не только на некоторых.
- Мгновенная загрузка страницы «Мои полисы». Данные загружаются заранее при открытии кабинета, поэтому при переходе между разделами пользователь не видит экран загрузки. Индикатор появляется только при полном обновлении страницы.
- Плавные анимации переходов между страницами сделали работу с кабинетом более естественной. Во время реализации этой функции я также обнаружил и исправил ошибку, из-за которой при очень быстром переключении между страницами экран мог навсегда остаться пустым.
Десятки небольших улучшений, которые действительно замечают пользователи
Качество продукта складывается из множества мелочей. Во время этого спринта были реализованы и такие улучшения:
- фильтр статусов теперь показывает сначала активные полисы, а среди них — в первую очередь полисы, срок действия которых скоро заканчивается;
- полностью переработаны карточки автомобильных и туристических полисов: наиболее важная информация (номер полиса и дата окончания действия) стала заметнее, а второстепенные данные, такие как VIN и серия документа, убраны с первого плана;
- карточки туристических полисов подготовлены к отображению страны назначения и цели поездки, как только эти данные начнут поступать из государственного реестра;
- исправлено отображение плавающих кнопок на iPhone, где раньше они частично скрывались;
- устранены проблемы с выравниванием полей формы в узбекской и английской версиях сайта;
- улучшены и унифицированы переводы интерфейса на всех трёх языках.