Оффлайн-режим клиентского приложения
Favy Client App — это PWA (Progressive Web App), поэтому часть данных сохраняется прямо на устройстве клиента. Это позволяет приложению продолжать работать, даже если интернета нет — слабый сигнал в помещении, недоступный wifi или временное отключение мобильной сети.
Что важно знать бизнесу
Офлайн-режим включён по умолчанию для всех клиентов Favy, на всех тарифах. Дополнительно настраивать ничего не нужно.
Что доступно офлайн
| Действие в клиентском приложении (без сети у клиента) | Доступно офлайн |
|---|---|
| Просмотр последнего известного баланса баллов | ✔ |
| Показ QR-кода клиента (для идентификации на кассе) | ✔ |
| Начисление/списание баллов кассиром по QR-коду клиента | ✔ (нужна связь у точки продаж, не у клиента) |
| Просмотр истории операций (последние загруженные) | ✔ |
| Обновление баланса после новой операции | ✖ (нужна сеть у клиента, чтобы подтянуть данные с сервера) |
| Первый вход / регистрация нового клиента | ✖ (нужна сеть один раз) |
| Push-уведомления и кампании | ✖ (требуют сети) |
Как это устроено на самом деле
Важно понимать модель данных: на устройстве клиента ничего не записывается и не хранится в виде очереди операций. Единственный источник истины — сервер Favy.
То, что видно офлайн (баланс баллов, QR-код, история операций) — это последнее известное состояние, которое приложение получило от сервера при последнем удачном подключении к сети, и закешировало локально для отображения. Это именно кеш для показа, а не рабочая копия данных.
Начисление и списание баллов — это всегда операция, которую выполняет точка продаж (кассир), а не клиентское приложение. Если у точки есть подключение к интернету, операция проходит и записывается на сервере немедленно — независимо от того, есть ли интернет у телефона клиента в этот момент. Клиентскому приложению для самого факта начисления/списания сеть не нужна вообще: достаточно, чтобы был на месте QR-код для идентификации клиента.
После того как операция прошла на точке, приложению клиента нужно снова выйти в сеть, чтобы подтянуть с сервера обновлённый баланс — до этого момента на экране будет виден баланс, известный на момент последнего подключения.
Важно для поддержки
Поскольку офлайн-данные на устройстве — это read-only кеш, а не локальная очередь операций, конфликтов синхронизации (двойное списание, гонка между устройствами и т.п.) на уровне клиентского приложения не возникает: единственное место, где фиксируется операция — сервер.
Если клиент видит на экране баланс, который «не совпадает с реальностью», это почти всегда значит, что приложение просто не успело обновить кеш после последней операции — достаточно открыть его при наличии интернета.
Ограничения офлайн-режима
Первый вход в приложение и регистрация нового клиента требуют подключения к интернету хотя бы один раз — приложению нужно получить данные аккаунта с сервера. После этого приложение может работать офлайн неограниченное время, пока используются уже загруженные данные.
Push-уведомления, маркетинговые кампании и любые действия, требующие обращения к серверу в реальном времени (например, применение промокода, привязанного к внешней системе), недоступны без подключения к сети.
Частые вопросы
Клиент жалуется, что баллы не обновились сразу после покупки — что делать? Операция начисления/списания уже прошла на сервере (если у точки продаж была связь в момент операции) — клиенту просто нужно открыть приложение при наличии интернета, чтобы подтянуть обновлённый баланс с сервера. До этого на экране будет виден баланс, известный на момент последнего подключения.
Может ли клиент "накрутить" баллы, если несколько раз показать QR-код офлайн? Нет — начисление и списание происходит на стороне сервера в момент, когда кассир проводит операцию на точке. Клиентское приложение только показывает QR-код для идентификации; оно не может само создать или изменить операцию, поэтому локальных манипуляций с балансом не бывает.
Нужно ли включать офлайн-режим в настройках? Нет, он работает по умолчанию и не требует настройки.
Работает ли офлайн-режим в POS-приложении на кассе так же, как в клиентском? Офлайн-режим клиентского приложения (эта страница) касается устройства клиента. Отдельная функциональность офлайн-режима для POS/кассы — в разработке, будет описана отдельно, когда будет готова.
Связь с другими разделами
- Программа лояльности — правила начисления и списания баллов: Программа лояльности
- Точки продаж — настройка POS и кассиров: Точки продаж
