← все записи

Тег #PHP

daily26 авг. 2026 г./7 мин

Всё, что было не так с одной маленькой формой

Форма «Моя семья» в личном кабинете состояла всего из нескольких полей, но проблема нашлась на каждом уровне: можно было добавить самого себя как родственника, форма требовала ID, который никто не помнит, невозможные даты приводили к ошибке, сообщения игнорировали выбранный язык, выпадающий список не закрывался, а Backspace не удалял символ. Это история полного ремонта одной обманчиво простой формы — от backend-правил и интеграции с сервисами до состояния и frontend-полировки.

#PHP#Yii2#Nuxt#Vue#UX#API design#Localization
daily25 авг. 2026 г./6 мин

Страница, которая скрывала собственный контент

При быстром соединении сайт открывался на несколько секунд серым пустым экраном, а затем изображения медленно подгружались одно за другим. Исправления оказались небольшими. Самой важной частью работы было доказать, почему существовала каждая задержка — потому что, как выяснилось, почти каждая была чьим-то предыдущим исправлением.

#Nuxt#Vue#SSR#PHP#Yii2#Performance#Caching#Web Vitals
deep dive21 авг. 2026 г./6 мин

Запись к врачу прямо из личного кабинета

Запись к врачу по корпоративному ДМС раньше означала переписку с Telegram-ботом. Я перенёс этот процесс в личный кабинет — в форму из пяти шагов, которая за считанные секунды передаёт заявку операторам. Самое интересное здесь было решить, как мало информации браузеру вообще разрешено отправлять.

#PHP#Yii2#Nuxt#CRM#Telegram#API design
daily17 авг. 2026 г./4 мин

Отменённый полис всё ещё отображался как «Действующий»

Пользователи, отменившие полис через сайт, продолжали видеть его как действующий, потому что национальный реестр не всегда корректно сообщает об отменах. Я исправил определение статуса на стороне источника и сделал так, чтобы каждая новая отмена сразу отправляла уведомление сотрудникам в Telegram.

#PHP#Nuxt#Telegram#insurance#data integrity
daily14 авг. 2026 г./3 мин

Показали сотрудникам медицинскую страховку, которую за них купил работодатель

Корпоративная медицинская страховка принадлежит работодателю, а не сотруднику, поэтому раньше она вообще не отображалась в личном кабинете. Я построил недостающую связь: теперь в аккаунте есть страховая карта, оставшийся лимит и история всех обращений по страховке — рядом с остальными полисами.

#Nuxt#Vue#PHP#API integration#healthcare
daily12 авг. 2026 г./6 мин

Что на самом деле осталось на вашей медицинской карте

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

#PHP#Yii2#Nuxt#API design#insurance#i18n
daily11 авг. 2026 г./5 мин

Сайт, который забывал вас каждые три часа

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

#PHP#Nuxt#JWT#authentication#MyID
daily11 авг. 2026 г./3 мин

Мы заменили регистрацию на распознавание лица. Но у старых аккаунтов были свои правила

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

#MyID#OTP#auth#PHP#Nuxt#legacy
daily10 авг. 2026 г./3 мин

Как научить вход по лицу спрашивать: «Этот номер всё ещё ваш?»

На нашем страховом сайте пользователи входят через распознавание лица с помощью MyID — национальной системы цифровой идентификации Узбекистана. Лицо подтверждает, кто вы, но не подтверждает, как с вами связаться. Поэтому я переработал авторизацию так, чтобы каждый вход также проверял, действительно ли номер телефона, привязанный к аккаунту, всё ещё принадлежит пользователю.

#Nuxt#PHP#auth#OTP#security
weekly28 июл. 2026 г./3 мин

Три дня, чтобы личный кабинет страхования начал показывать правду

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

#Vue#Nuxt#PHP#Yii2#API#UX