Offline-first SFA: как организоватьработу без стабильной связи
Offline-first SFA позволяет выполнить согласованный полевой сценарий при нестабильной связи, сохранить данные визита на устройстве и синхронизировать их после восстановления соединения. Надёжность зависит от заранее заданного состава локальных данных и правил разрешения конфликтов.
Durust: онлайн-заказы, шаги визита и маршруты полевой команды
Offline-first по шагам
Данные и действия, доступные без связи
Три этапа: подготовить данные, сохранить разрешённые действия и получить итог обмена. Используйте схему, чтобы согласовать доступные действия и правила обмена для вашего проекта.
Набор подготовлен
Набор подготовлен
Подготовить рабочий набор
Перед выходом устройство получает данные, разрешённые роли, территории и версии правил для ближайшего рабочего сценария.
Назначенные торговые точки и маршрут
Нужные товары, цены и ассортимент
Задачи, формы и ограничения визита
События в очереди
События в очереди
Зафиксировать первичный факт локально
Сотрудник выполняет согласованные шаги визита, а каждое событие получает устойчивый идентификатор, время и связь с торговой точкой.
Check-in/check-out и результат визита
Заказ, запись оплаты или возврат - если доступны офлайн
Фото, задача и комментарий по сценарию
Есть итог по каждой операции
Есть итог по каждой операции
Передать, проверить и подтвердить
Проверьте итог каждой записи и её вложений. Возврат сети ещё не означает завершённую отправку: на пилоте проверяют и фоновую работу устройства.
Ожидает передачи или подтверждения
Принято и подтверждено
Отклонено с причиной и следующим шагом
Для руководителя полевой команды офлайн-сценарий решает конкретную задачу: сотрудник продолжает разрешённые действия визита при слабой связи, а руководитель различает локальные записи и принятые системой операции. Доступ к справочнику без интернета ещё не означает, что без связи можно создать заказ, зарегистрировать оплату или оформить возврат.
До маршрута нужно загрузить рабочий набор и проверить его актуальность: торговые точки, товары, цены, задачи и ограничения по роли. Пустой или устаревший набор нельзя считать готовым к работе. Для критичных данных заранее определяют срок допустимой давности и действие при его превышении: предупредить, ограничить операцию или запросить обновление.
Надёжная синхронизация
От локальной записи до подтверждения сервером
Схема показывает путь одной операции. Сверяйте её идентификатор и подтверждение, а не только значок сети. Резерв, отгрузка и обмен с учётной системой проверяются отдельно.
01Устройство
Записать
Операция получает локальный ID, время, пользователя и контекст торговой точки.
Первичный факт сохранён
02Очередь
Упорядочить
Фото должно остаться связано со своим визитом. Порядок передачи и сохранность этой связи проверяют после перезапуска.
Порядок известен
03Соединение
Передать
Повтор той же операции использует прежний идентификатор. Это помогает серверу отличить повтор от нового документа.
Повтор контролируется
04Сервер
Проверить
Сервер сверяет версии, права, дубли и актуальные бизнес-правила.
Решение объяснимо
05Результат
Подтвердить
Устройство получает итог: принято, отклонено или требуется действие ответственного.
Статус видим
Локальная запись → очередь → передача → серверная проверка → подтверждённый итог
Сохранено на телефоне, отправлено и принято сервером - разные состояния. Если после отправки ответ не пришёл, результат неизвестен: сервер мог уже принять операцию. Для повторной отправки той же операции сохраняют её идентификатор; заново оформлять документ вслепую нельзя. Если содержание изменилось, нужен отдельный согласованный порядок обработки. При разборе сверяют идентификатор, содержание и последний подтверждённый результат, а не только значок сети.
Если обмен не завершился
Конфликты синхронизации и порядок разбора
Сетевая ошибка, изменение цены и неполное вложение требуют разных действий. Ниже - ситуации для проверки и ответственные за следующий шаг.
Нужно уточнить результат
Нет ответа, но операция могла быть принята
Сигнал
После отправки приложение не получило итог. Это ещё не означает, что сервер отклонил операцию.
Риск
Создать второй заказ, платёж или другое коммерческое событие.
Следующий шаг
Проверить результат или повторить ту же операцию с прежним идентификатором. Если она уже принята, вернуть её итог без второго документа; не оформлять заказ заново вслепую.
Владелец
Интеграционный сервис
Нужно бизнес-решение
Локальная версия цены или ограничения устарела
Сигнал
На сервере действует более новая версия правила, чем использованная в операции.
Риск
Подтвердить документ на условиях, которые уже не действуют.
Следующий шаг
Остановить автоматическое завершение и применить согласованный сценарий пересчёта или согласования.
Владелец
Коммерческий владелец правила
Требуется сопоставление
Клиент, товар или назначение больше не совпадает
Сигнал
Связанная запись деактивирована, объединена или переназначена после последнего обновления устройства.
Риск
Привязать визит или заказ к неверной сущности и исказить отчётность.
Следующий шаг
Сохранить исходный контекст, запросить сопоставление и повторить проверку после решения владельца данных.
Владелец
Владелец мастер-данных
Синхронизация не завершена
Событие или вложение осталось в очереди
Сигнал
Визит подтверждён, но обязательное фото ещё не доставлено или его итог неизвестен.
Риск
Показать визит завершённым при неполном наборе согласованных доказательств.
Следующий шаг
Сверить итог визита и фото по их идентификаторам. Согласовать дозагрузку вложения к прежнему визиту; не создавать визит заново и не закрывать обмен до подтверждения.
Владелец
Пользователь и техническая поддержка
Конфликт бизнес-правил не исправляется повторной отправкой: после визита могла измениться цена или доступность клиента для заказа. Нужны видимая причина и ответственный за решение. Итог проверяют по каждой записи и её связям. Например, визит принят, а обязательное фото ещё не доставлено: повторяют передачу вложения с привязкой к этому визиту, не создавая визит заново. Ошибка вложения сама по себе не подтверждает отмену визита. Итог записи и допустимый порядок дозагрузки проверяют по правилам проекта; обмен пока неполный. Принятый заказ также не означает резерв, отгрузку или отражение в учётной системе.
Граница ответственности
Согласуйте границы до выхода в поле
01
Состав действий
По каждой роли зафиксировано, что можно создать, изменить и только прочитать локально.
02
Актуальность
Время обновления и допустимая давность критичных данных видимы. Заранее определено, что делать с устаревшим набором.
03
Повтор операции
Согласовано, как отличать повтор той же операции от нового или изменённого документа.
04
Защита устройства
До переустановки, передачи устройства или смены аккаунта определён порядок обработки очереди. При потере устройства нельзя полагаться на локальную копию.
05
Видимый итог
Ожидающие и отклонённые операции доступны пользователю и владельцу разбора до закрытия.
Готовность к пилоту
Что проверить в реальном маршруте до масштабирования
Проверьте на согласованных устройствах сохранение записи, отправку в фоне, потерянный ответ и неполный обмен. Поддержку сценария подтверждают результатом пилота.
01
Нет свежих данных
Проверьте пустой и устаревший набор: сотрудник должен понимать, какие действия доступны и что нужно обновить.
02
Приложение в фоне
После перезапуска проверьте очередь, затем отправку с заблокированным экраном и экономией заряда. Истёкший доступ разберите отдельно от сетевого сбоя.
03
Ответ потерян
Проверьте случай, когда сервер принял операцию, а устройство не получило ответ: повтор не должен создавать второй документ.
04
Цена изменилась
Измените правило между записью и отправкой. Проверьте причину конфликта, ответственного и согласованный порядок решения.
05
Фото не доставлено
Сверьте подтверждённый визит и ожидающее фото. Проверьте согласованную дозагрузку: привязка сохраняется, визит не дублируется, незавершённый обмен виден.
На пилоте проверьте сохранность очереди после перезапуска, отправку при заблокированном экране и экономии заряда, а также истёкший доступ. Возвращение сети само по себе не гарантирует немедленную фоновую отправку. До переустановки приложения или передачи устройства согласуйте обработку неподтверждённых записей; отдельно проверьте, что происходит с ними при смене аккаунта. Локальная очередь не является резервной копией на случай потери устройства. Пока запись или обязательное вложение не подтверждены, обмен не завершён.
Первый шаг
Обсудите один маршрут со слабой связью
Для обсуждения Smartup SFA выберите один маршрут и операцию, которая застревает при слабой связи. Подготовьте обезличенный пример, устройство и версию приложения, ожидаемый итог и последние видимые статусы. Такой пример поможет отделить проблему данных, доступа или передачи и выбрать проверку для пилота. Не передавайте пароли и полную клиентскую базу. Доступные офлайн-действия, фоновая отправка, обмен с учётной системой и условия пилота согласуются для проекта.
01
Опишите маршрут, роль сотрудника и этап визита, который не удаётся завершить при слабой связи. Разделите чтение данных и создание операции.
02
Покажите последовательность на одном примере: запись на устройстве, отправка, ответ сервера и зависимое вложение. Для каждого шага укажите ожидаемый статус.
03
Укажите устройство, ОС, версию приложения и рабочий набор до маршрута. Включите в проверку перезапуск, блокировку экрана, режим экономии заряда и истёкший доступ.
04
Для зависшей операции подготовьте обезличенные идентификаторы, время, последние статусы и текст ошибки. Сохраните связь визита с вложением; согласуйте обработку очереди до переустановки или передачи устройства.
05
Назначьте владельца разбора и критерии пилота: запись сохраняется, повтор не создаёт дубль, частичный обмен виден, решение по конфликту понятно. Фактическую поддержку каждого сценария подтвердите на согласованных устройствах.
Практический чек-лист
Перечень доступных офлайн-действий зафиксирован по ролям.
Пользователь видит статус синхронизации каждой критичной операции.
Повторная отправка не создаёт второй заказ или платёж.
Для конфликтов назначен владелец и понятный сценарий разбора.
Граница применения
Нельзя обещать одинаковый офлайн-сценарий для любого устройства, срока отсутствия связи и набора модулей. Состав локальных данных, период актуальности и правила синхронизации согласуются для конкретного проекта.