Короткий ответ
Локальная БД, очередь изменений, конфликты, sync, backups and recovery. Разбираем практический порядок работ, риски, стоимость и то, как принять результат без новых проблем.
Ниже — конкретные проверки, команды, таблицы и контроль результата. Выполняйте изменения только после резервной копии, если действие затрагивает рабочую систему.
Offline-first архитектура
| Компонент | Роль |
|---|---|
| Local DB | работа без сети |
| Outbox | операции на отправку |
| Sync worker | отправка после появления сети |
| Server DB | общий источник |
| Conflict policy | |
| Sync log | диагностика |
Упрощённая таблица outbox
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 | дублей нет |
Как проверить результат
После изменений повторите исходный сценарий, зафиксируйте результат и убедитесь, что соседние функции работают так же, как до правки. Если проблема проявляется не всегда, проведите несколько повторов в одинаковых условиях и сохраните диагностические данные.