ВетМирПрофи часть 1
Хочу рассказать об одном из кейсов который до сих пор активно развивается и продолжает обрастать новыми функциями. Речь о ВетМирПрофи, платформе дистанционной ветеринарной помощи через Telegram, ВКонтакте, Max и веб. Я помогаю с технической частью проекта. Изначально всё выглядело довольно просто: карточка питомца, консультация с врачом, история обращений. Но со временем стало понятно, что это уже полноценная информационная система для владельцев животных, врачей, поддержки и администраторов. Одна из главных сложностей - мультиканальность. Пользователь может начать работу в Telegram, продолжить в веб-приложении, а потом перейти во ВКонтакте или Max. При этом аккаунт, питомцы, консультации и история должны оставаться едиными. У каждого канала свои особенности: авторизация, кнопки, вложения, deeplink-ссылки, Mini App, Long Poll и Webhook. Пришлось отдельно решать вход через initData, работу с контактами и медиа, а также устранять дубли сообщений, если пользователь привязан сразу к нескольким каналам. Вторая большая задача - роли и права доступа. Один человек может быть одновременно клиентом и врачом, клиентом и сотрудником поддержки, администратором и пользователем других ролей. Система должна понимать, какие разделы показывать, кто может принимать консультации, видеть медицинские данные или работать с обращениями. Отдельный технический блок - SOS. Для экстренной связи реализованы два режима: встроенный WebRTC и Yandex Telemost. С WebRTC пришлось разбираться с WebSocket-сигналингом, STUN/TURN, NAT, ICE, завершением звонка с обеих сторон и записью. То, что работает в одной сети, не всегда работает между мобильным интернетом, домашним Wi-Fi и корпоративной сетью. После SOS-звонка начинается ещё одна цепочка: ffmpeg обрабатывает запись, Whisper или GigaAM распознают речь, клиент и врач разделяются по дорожкам, затем формируются транскрипция, краткое содержание и черновик предварительного диагноза. Здесь принципиально важно, что ИИ не подменяет врача: предварительный диагноз скрыт от клиента, пока специалист его не подтвердит, не исправит или не отклонит. Не менее важны данные и безопасность. Постоянно появляются новые сущности и миграции базы: питомцы, анализы, документы, тарифы, платежи, записи звонков, промокоды и новые каналы. Параллельно нужно следить за ПДн, согласиями, сессиями, CSRF, API-ключами, аудитом и резервным копированием. Даже обычная кнопка «Скачать PDF истории питомца» однажды упиралась в жизненный цикл ORM-сессии и DetachedInstanceError. Для пользователя это просто неработающая кнопка. Для разработчика — ещё один слой логики. Отдельная задача - обновлять всё это без остановки сервиса. Поэтому dev и prod разделены, миграции контролируются, тесты запускаются до сборки, а CI/CD постепенно переводится на GitHub Actions. Пользователь не видит Docker, Kubernetes, Redis, PostgreSQL, Vault или Alembic. Он просто ждёт, что бот ответит, звонок состоится, документ сохранится, а платёж не задвоится. И в этом для меня главная задача технического специалиста: спрятать сложность внутри и оставить человеку понятный и надёжный сервис. Для пользователей Сетка действует промокод SETKA90, который даёт доступ к тарифу «Спокойствие» на 90 дней. Telegram https://t.me/vetassistantbot?start=SETKA90 ВКонтакте https://vk.com/write-235976752?ref=SETKA90&ref_source=promo Max https://max.ru/id780518911073_bot?start=SETKA90 Сайт https://vetmirprofi.ru/?promo=SETKA90