рабочий блог

Заметки из практики

Записи из реальной работы — решения, тупики и то, что в итоге сработало.

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
daily16 авг. 2026 г./4 мин

Сделать медицинскую страховку понятной за пять секунд

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

#Nuxt#Vue#i18n#healthcare#UX
daily14 авг. 2026 г./3 мин

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

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

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

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

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

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

Вошёл в аккаунт — и меня снова попросили войти. Только на телефонах

Пользователей страхового сайта снова и снова просили подтвердить личность через распознавание лица, хотя они уже сделали это буквально несколько секунд назад. Вход каждый раз работал. Приложение просто продолжало спрашивать. Мне понадобилось три раунда отладки, чтобы понять причину.

#MyID#auth#mobile#debugging#Vue
daily11 авг. 2026 г./5 мин

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

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

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

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

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

#MyID#OTP#auth#PHP#Nuxt#legacy