Отчёты без связи: как приложению не терять данные на объекте
Разбираю офлайн-режим для сотрудников, которые работают без связи: три уровня, очередь отправки, фото, время события, конфликты и испытания в режиме «в самолёте». Показываю, что подтверждено документацией MDN и WebKit, а что нужно проверять на вашем телефоне.
Кому и когда это нужно
Подвал, лифтовая шахта, поле, склад с толстыми стенами. Сотрудник заполнил форму, нажал «Отправить» и увидел ошибку. Через час у него другая задача, а отчёт остался в закрытой вкладке. Вы видите пустой день и звоните. Если этим не заняться, люди вернутся к бумаге и вечерней перепечатке, а данные будут приходить с опозданием или не придут. Совсем другой способ, через экран и камеру, описан в статье про передачу данных без связи в поле. Здесь о приложении, которое хранит данные в телефоне само.
Как это делается: 7 шагов
- Выпишите действия сотрудника и разделите их. Без сети должны работать: заполнить отчёт, снять фото, отметиться, открыть уже загруженное задание. Сеть нужна для нового задания и оплаты.
- Выберите уровень. Первый: кэш просмотра, открываются экраны, которые уже видели. Второй: очередь отправки, действия записываются и уходят позже. Третий: полная локальная работа с синхронизацией и разбором конфликтов. Обычно хватает второго.
- Очередь простыми словами. Кнопка «Отправить» кладёт запись в хранилище браузера и пробует отправить. Сервер ответил «принято», запись удаляется. Сети нет, запись остаётся с пометкой «ожидает». Повтор идёт, когда сеть вернулась, по таймеру и при запуске приложения.
- Защита от дублей. Каждой записи телефон выдаёт свой уникальный номер, сервер второй раз запись с тем же номером не создаёт. Связь может оборваться после того, как сервер принял данные, но до того, как телефон об этом узнал.
- Фото. Кладите файл в очередь вместе с отчётом, сжимайте до отправки, ограничьте число снимков. Лимит хранилища браузер задаёт сам, фиксированного числа назвать нельзя. По MDN каждый браузер решает, сколько отдать сайту, и при нехватке места может удалить данные. Постоянное хранилище можно запросить, но Safari и Chromium отвечают сами, без вопроса пользователю. Очередь не должна копиться неделями, держите счётчик на виду.
- Время события. Телефон фиксирует дату и время нажатия и отправляет их с записью, сервер хранит ещё и время получения. Часы на телефоне могут быть неверными, поэтому большое расхождение помечайте для проверки.
- Конфликты. «Последний выигрывает» подходит для отметки «я на объекте»: одна запись на человека и день. Для отчётов и статусов задач опасно: пока отчёт ехал, задачу уже приняли. Тут нужен отказ с понятной причиной или ручной разбор.
Что работает без сети
| Действие | Нужна ли сеть | Что происходит без сети |
|---|---|---|
| Открыть уже виденное задание | Нет | Показывается последняя сохранённая копия |
| Открыть задание, которого ещё не загружали | Да | Сообщение «сохранённых данных нет» |
| Заполнить отчёт | Нет | Запись в очереди, статус «ожидает» |
| Сделать фото | Нет | Файл ложится в очередь с отчётом |
| Отметка «я на объекте» | Нет | Запись в очереди с временем телефона |
| Оплата | Да | Кнопка заблокирована, причина написана |
| Первый вход | Да | Сначала нужна сеть |
Испытания, платформы и безопасность
Проверяйте на реальном телефоне: 1) режим «в самолёте», отчёт с тремя фото, счётчик «ожидает» растёт; 2) сеть включили, всё ушло ровно один раз; 3) сеть выключили в момент отправки, запись цела, дубля нет; 4) приложение закрыли с неотправленной записью и открыли позже; 5) «Отправить» нажали дважды; 6) на телефоне неверные часы.
Платформы. Web Push на iPhone появился в iOS и iPadOS 16.4 и только у веб-приложений, добавленных на главный экран, запрос разрешения делается по действию пользователя (по блогу WebKit). Фоновая отправка Background Sync на MDN помечена как «ограниченная доступность», поэтому рассчитывайте, что очередь уходит при открытом приложении. По MDN, Safari при включённой защите от слежки удаляет созданные скриптом данные сайта, если неделю не было взаимодействия. Распространяется ли это на приложение с главного экрана, я не подтвердил, проверяйте на вашем телефоне.
Безопасность. Данные в браузере читает тот, у кого разблокированный телефон. Не храните лишнего, требуйте блокировку экрана, при потере телефона закрывайте сессию на сервере, при выходе очищайте кэш. Про персональные данные на устройствах работников общими словами в статье про 152-ФЗ. Это не юридическая консультация.
Где ошибаются чаще всего
«Работает без интернета», а открывается только кэш страницы: экран виден, кнопка не срабатывает.
Фото теряются: снимок прикреплён к экрану, а не к очереди, приложение закрыли, файл исчез.
Нет индикатора «не отправлено»: сотрудник уверен, что отчёт ушёл.
Дубли при повторной отправке: сеть мигнула, отчёт создался дважды.
Где здесь поможет автоматизация
В CRM для подрядной компании у меня сделано так (прочитал код перед статьёй). Сервис-воркер кэширует оболочку приложения и последние ответы сервера, при потере сети показываются они. Отчёты по задачам с фото и отметки «я на объекте» пишутся в IndexedDB, на экране висит «Ждут отправки: N» и строка «Нет связи». Отправка идёт при появлении сети, раз в минуту и при запуске. Есть подсказка установки для iPhone и Web Push по VAPID. При выходе чистятся кэш ответов и кэш фото.
Слабые места, которые вижу в этом коде. Ключа от дублей нет: повтор отметки безвреден, потому что запись одна на человека и день, а отчёт по задаче создался бы второй раз. Время события ставит сервер при получении. Отклонённая сервером запись удаляется из очереди с сообщением. Очередь при выходе не стирается, она привязана к пользователю. Делая заново, я бы закрыл это сразу.
Полноценный офлайн для всех экранов на старте не нужен. Хватит трёх действий и просмотра задания. Берусь за такое в рамках разработки приложений и PWA, подробнее про создание PWA в статье про PWA из сайта за выходные. Если отчёты прорабов пока идут в мессенджер, начните с формата отчёта.
Частые вопросы
Нужно ли приложение из магазина, чтобы работало без сети?
Очередь и кэш работают и в PWA. Камеру, геометку и уведомления проверяйте на ваших моделях телефонов, на iPhone уведомления только у приложения с главного экрана.
Сколько фото поместится в очередь?
Числа не назову: лимит определяет браузер, данные могут быть удалены при нехватке места. Сжимайте снимки и показывайте счётчик.
Что делать, если сервер отклонил запись?
Не повторять бесконечно. Оставить запись у сотрудника, показать причину и дать исправить. Похожий список для выездных работ разобран в статье про приложение замерщика.
Коротко о главном
Для объекта без связи нужны очередь с пометкой «ожидает», защита от дублей, фото в очереди и проверка в режиме «в самолёте». Полный офлайн для всех экранов на старте лишний.
Хотите, чтобы я собрал для вашей команды приложение, которое сохраняет отчёты, фото и отметки без связи и отправляет их позже? Напишите мне в Telegram слово «ОФЛАЙН».
Что я делаю для бизнеса
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»
12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.
Готовы обсудить вашу задачу?
Бесплатная консультация — разберём, как внедрить это в вашем бизнесе под ключ. Без форм, пишите напрямую.
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.
Вся рубрика «Бизнес-кругозор»: карта тем
Методологии, стратегия, продуктивность, деньги, психология и знания — выберите, что разобрать сейчас.
Гибкие методологии и проекты
- Что такое Agile простыми словами
- Что такое Scrum: роли, спринты и доска простыми словами
- Kanban-доска: как навести порядок в задачах
- Диаграмма Ганта: как планировать проект простыми словами
- Бережливое производство (Lean) и Кайдзен простыми словами
- Теория ограничений (TOC) Голдратта: найти «узкое горлышко»
- Async-first: асинхронная работа без бесконечных созвонов
- Working Backwards и PRFAQ: метод Amazon начинать с пресс-релиза
Стратегия и продукт
- Бизнес-модель Canvas: вся модель бизнеса на одном листе
- Lean Canvas: бизнес-модель стартапа на одном листе
- SWOT-анализ простыми словами с примером
- 5 сил Портера: как анализировать конкуренцию
- PEST/PESTEL-анализ: оценка внешней среды бизнеса
- Матрица BCG (бостонская): что развивать, что закрывать
- Стратегия голубого океана простыми словами
- Wardley Mapping (картирование Уордли): стратегия на карте
- Lean Startup и MVP: запуск без слива бюджета
- Дизайн-мышление (Design Thinking): 5 этапов простыми словами
- Jobs To Be Done (JTBD): зачем клиент «нанимает» ваш продукт
- Customer Journey Map: карта пути клиента простыми словами
- Continuous Discovery и дерево возможностей: как находить, что строить
- Product-Led Growth (PLG): когда продукт продаёт себя сам
- УТП: как сформулировать уникальное торговое предложение
- Целевая аудитория: как составить портрет клиента
- B2B, B2C, B2G: в чём разница
- Сетевой эффект и эффект масштаба: почему большие растут быстрее
- Раунды инвестиций: seed, A, B, C — кто, когда, сколько
- Матрица Ансоффа: 4 стратегии роста
- Базовые стратегии Портера: издержки, дифференциация, фокус
- Ценообразование: 7 стратегий, как назначить цену
Цели и приоритеты
Время и продуктивность
- Тайм-менеджмент: 12 техник, которые реально работают
- Метод Помодоро: как работать концентрированно
- GTD (Getting Things Done): система продуктивности без хаоса
- Тайм-блокинг: планирование дня по слотам
- Метод «съешь лягушку»: начни день с главного
- Правило 2 минут: как победить откладывание
- Закон Паркинсона: почему задачи раздуваются и как это остановить
- Глубокая работа (Deep Work): фокус в мире уведомлений
- Состояние потока (flow): как входить в продуктивность
- Slow Productivity: медленная продуктивность Кэла Ньюпорта
- Энергоменеджмент вместо тайм-менеджмента
- Цифровой минимализм: меньше экрана, больше фокуса
- Как побороть прокрастинацию: причины и рабочие приёмы
- Делегирование: как перестать делать всё самому
Методологии и процессы
Деньги и метрики
- Финансовая грамотность: с чего начать
- KPI: что это и как правильно ставить
- Маржа и наценка: в чём разница (с примерами)
- Точка безубыточности: как посчитать
- Денежный поток (cash flow) простыми словами
- EBITDA простыми словами
- CapEx и OpEx простыми словами
- Рентабельность: ROS, ROA, ROE без зауми
- Юнит-экономика простыми словами
- LTV и CAC: сколько стоит и сколько приносит клиент
- ROI и ROMI: как считать отдачу от вложений и рекламы
- ABC-анализ: какие 20% товаров и клиентов дают 80% результата
- NPS: индекс лояльности клиентов простыми словами
- Конверсия и CR: как считать воронку
- North Star Metric: одна метрика, ведущая бизнес
- AARRR: «пиратские метрики» воронки
- Отток (churn) и удержание (retention) клиентов
- Подписочная модель: MRR и ARR простыми словами
- Когортный анализ простыми словами
- Закон Гудхарта: когда метрика ломает систему
- FIRE: движение финансовой независимости (и его варианты)
Психология и навыки
- Синдром самозванца: что это и как с ним справиться
- Профессиональное выгорание: признаки и что делать
- Как справиться со стрессом на работе
- Эмоциональный интеллект: зачем он в работе и как развить
- Soft skills 2026: какие навыки важнее хард-скиллов
- Как научиться говорить «нет» (ассертивность)
- Как формировать привычки и не бросать
- Мышление роста (growth mindset): как развивать
- Когнитивные искажения: 12 главных ловушек мышления
- Эффект Даннинга-Крюгера: почему новички уверены, а эксперты сомневаются
- Мотивация: теории Маслоу и Герцберга простыми словами
- Как давать обратную связь, чтобы её приняли
- Активное слушание: как реально слышать собеседника
- Конфликты на работе: как решать без эскалации
- Радикальная прямота (Radical Candor): забота + честность
Знания и обучение
- «Второй мозг»: личная база знаний по системе PARA
- Интеллект-карты (mind map): как мыслить структурно
- Критическое мышление: как не вестись на манипуляции и фейки
- Метод Фейнмана: как понять и объяснить что угодно
- Как научиться учиться (learning how to learn)
- Ментальные модели: что это и топ-10 для решений
- Мышление от первых принципов (first principles)
- Системное мышление: видеть связи, а не отдельные части
- Как принимать решения: типы и фреймворки
- Digital Gardens (цифровые сады): личное знание, которое растёт
- Personal CRM: как не терять полезные связи
Бизнес в цифровую эпоху (Дэниел Пристли)
- Бизнес в цифровую эпоху: 12 правил по Дэниелу Пристли
- Правило 7-11-4: сколько контакта нужно, чтобы клиент вас запомнил
- Пять вещей, которые мозг не удаляет: как выделиться на переполненном рынке
- Как представить себя за 30 секунд: формула Name-Same-Fame-Aim-Game
- Ключевой человек влияния: зарабатывать на репутации, а не на миллионе подписчиков
- Как проверить спрос до запуска продукта: продайте демо, а не продукт
- Ситуационная модель клиента: 4 вопроса, которые вскрывают настоящую потребность
- Сайд-хасл по правилу 90 дней: как начать своё дело без большого риска
- Кривая нормы против степенного закона: где искать большие возможности
- Сладкая точка предпринимателя: страсть, проблема и оплата
- Почему 60% денег у верхних 10% аудитории и как на это опираться
- Возможность бэби-бумеров: где сосредоточены деньги и зрелые бизнесы
- ИИ как электричество: почему мы в самом начале и что это значит для бизнеса
Путь клиента и маркетинг
- Jobs To Be Done (JTBD): зачем клиент «нанимает» ваш продукт
- Customer Journey Map: карта пути клиента простыми словами
- Моменты истины и ZMOT: где клиент на самом деле принимает решение
- Путь потребителя McKinsey: круговая модель вместо воронки
- See-Think-Do-Care: маркетинг по стадиям готовности аудитории
- Конверсия и CR: как считать воронку
- Воронка «галстук-бабочка»: рост за счёт удержания, а не только привлечения
- Партнёр по решению: как помогать клиенту выбрать, а не заваливать вариантами
- Непрерывная персонализация: от кампаний к адаптации в реальном времени
- Дистрибуция важнее продукта: cold start, пропасть и почему канал решает
- Психология цены и выбора: 6 эффектов, которые двигают решения покупателя
Поведение и лояльность
- Модель поведения Фогга (B=MAT): почему люди действуют и не действуют
- Hook Model: как продукты формируют привычку
- Правило пика и конца: как клиент на самом деле запоминает опыт
- Как формировать привычки и не бросать
- NPS: индекс лояльности клиентов простыми словами
- Отток (churn) и удержание (retention) клиентов
- Participation Loyalty: лояльность через участие, а не только через покупки
- Calm Tech: спокойные технологии и интерфейсы, которые не выматывают
Ментальные модели и стратегия
- Ментальные модели: что это и топ-10 для решений
- Ментальные модели для решений: инверсия, второй порядок, матожидание и другие
- Как принимать решения (часть 3): обратимость, премортем, опции, эргодичность
- Антихрупкость и риск по Талебу: барбелл, асимметрия, шкура на кону
- 7 Powers: семь источников устойчивого преимущества по Хелмеру
- Counter-positioning и дилемма инноватора: почему лидеры проигрывают новичкам
- Категорийный дизайн и доминирование в нише: создавать категорию, а не конкурировать
- Flywheel (маховик) Безоса: самоусиливающийся рост вместо воронки
- Bullseye Framework: как выбрать канал привлечения через тестирование
- Модель Кано: как приоритизировать фичи (базовые, линейные, восхищающие)
- Что ломается при росте: bus factor, закон Конвея, запас, эффект масштаба
- Выживет ли бизнес: метрики устойчивости (default alive, Rule of 40, burn multiple)


