Мобильная платформа S-MOB получила масштабное обновление: оффлайн-карты, поиск по лицу и новые возможности для
Платформа мобильного видеонаблюдения S-MOB (бренд IPTronic, дистрибьютор «Видеоглаз») получила апдейт, и там есть три вещи, которые наконец-то сделаны правильно.

Стейдж упал. Карты закешировались
Оффлайн-карты с фильтрацией по группам и геозонами, поиск людей по лицу в событиях и прямо на карте, поддержка FLV-камер. Плюс перетряска прав доступа, контекстные подсказки для новичков и аккуратное удаление расового атрибута из карточек объектов. Команда, видимо, прочитала пару мануалов по PWA и RBAC — и правильно сделала.
Оффлайн-карты: не магия, а нормальный кеш
Раньше карта у оператора превращалась в тыкву при потере связи — типичный фронт без Service Worker. Теперь заявлен полноценный оффлайн-режим с фильтрацией по группам и геозонами на базе последнего известного местоположения устройств. Под капотом это почти наверняка тайл-кеш плюс явная стратегия stale-while-revalidate для метаданных. Если ваш фронт на React/Vue до сих пор тянет геоданные с REST при каждом открытии вкладки — поздравляю, вы уже в хвосте. Минимальный шаблон для Mapbox/Leaflet в оффлайне выглядит примерно так:
И не забудьте ограничить размер кеша, иначе браузер сам выкинет всё при достижении лимита квоты — и снова упадёте в оффлайн-ад.
FLV против HLS: latency как религия
Поддержка создания FLV-камер — это костыль родом из 2010-х, но у него низкий latency на фоне HLS. Для пульта охраны секунда задержки критична, а HLS с его чанками по 6 секунд — тормоз для реактивного UI. Если пишете свой видеоплеер под Web — смотрите в сторону WebSocket + MediaSource Extensions или mse-embedded. FLV.js в браузере — рабочий вариант, но учтите: декодер на js выжирает CPU на средних машинах. Для прода с десятками камер одновременно — выносите в WebRTC с SFU, иначе получите fan-out из 50 вкладок с 100% загрузкой ядер.
Чек-лист: что проверить у себя
Перед тем как раскатывать аналогичные фичи, прогоните по пунктам, иначе пятничный прод вам устроит кернел-паник:
- Service Worker зарегистрирован,
caches.keysв DevTools → Application показывает ваш namespace, лимит квоты не превышен - RBAC: групповые политики проверяются на бэке, не только прячутся в UI — иначе любой школьник с devtools получит admin-эндпоинт
- При сбросе связи UI не фризит: debounce на гео-запросы, оптимистичные апдейты, явные состояния
pending/synced/failed - Стриминг: latency замеряется через
performance.nowмежду меткой кадра и фактом отрисовки — иначе «быстро» превратится в «ну, вроде норм»
Прод без бэкапа, без оффлайн-кеша и без честного RBAC — это не прод, а пятничный инцидент, который вы будете разгребать все выходные. Делайте бэкапы, товарищи, и перечитывайте чейнджлоги конкурентов — там иногда прячут готовые архитектурные решения.