Короткий ответ

Локальная БД, очередь изменений, конфликты, sync, backups and recovery. Разбираем практический порядок работ, риски, стоимость и то, как принять результат без новых проблем.

Ниже — конкретные проверки, команды, таблицы и контроль результата. Выполняйте изменения только после резервной копии, если действие затрагивает рабочую систему.

Offline-first архитектура

КомпонентРоль
Local DBработа без сети
Outboxоперации на отправку
Sync workerотправка после появления сети
Server DBобщий источник
Conflict policy
Sync logдиагностика

Упрощённая таблица outbox

SQL
CREATE TABLE outbox (
  id TEXT PRIMARY KEY,
  entity_type TEXT NOT NULL,
  entity_id TEXT NOT NULL,
  operation TEXT NOT NULL,
  payload_json TEXT NOT NULL,
  created_at TEXT NOT NULL,
  sent_at TEXT NULL
);

Синхронизация — главная сложность, а не «проверка интернета»

Нужно заранее решить, что произойдёт, если один объект изменили в офисе и на ноутбуке офлайн. Используйте версии/updated_at и понятную стратегию конфликтов.

Тесты offline

СценарийПроверка
раненияданные не потеряны
Программа перезапущена
ранён
Сеть появиласьотправка возобновилась
Сервер ответил 409конфликт обработан
Повтор syncдублей нет

Как проверить результат

После изменений повторите исходный сценарий, зафиксируйте результат и убедитесь, что соседние функции работают так же, как до правки. Если проблема проявляется не всегда, проведите несколько повторов в одинаковых условиях и сохраните диагностические данные.

Связанные материалы