Перейти к содержимому

Синхронизация

Когда вы работаете офлайн, Scripvio сохраняет изменения в локальной очереди (SQLite на устройстве). Как только сеть возвращается, приложение автоматически опустошает эту очередь на сервер — без ручного шага в большинстве случаев.

Офлайн-режим · FAQ офлайн


sequenceDiagram
participant A as App
participant L as Локальная очередь
participant S as Сервер
Note over A: Потеря сети
A->>L: Заметки, журнал, трекер в очереди
Note over A: Сеть обнаружена
A->>A: Баннер Синхронизация…
A->>S: flushOfflineQueue (notes)
A->>S: flushOfflineQueue (journal)
A->>S: flushOfflineQueue (tracking)
S-->>A: Серверные id, ACK
A->>L: Очередь очищена или уменьшена
СобытиеПоведение
Локальное изменениеСчётчик очереди +1 — баннер Изменения ожидают…, если онлайн без sync
Возврат сетиБаннер Синхронизация с сервером…, затем загрузка
УспехБаннер исчезает (очередь = 0)
Частичный / полный сбойСбой синхронизации… — очередь сохранена, повтор при следующем онлайн

Приложение непрерывно слушает изменения подключения (connectivity_plus).


Очередь объединяет несколько типов операций:

ДоменПримеры операций
ЗаметкиСоздания (local_…), патчи, удаления
РазделыСоздание, обновление, изменение порядка
Ссылки заметокСтруктурированные стихи (local_verse_…)
ЖурналСоздания, правки, ожидающая публикация
ТрекерСозданные или обновлённые чтения, молитвы, медитации
Напоминания (настройки)Сохранение отложено, если API недоступен

Один глобальный баннер отражает сумму этих очередей (не счётчик по типу в интерфейсе).


ПринципДеталь
Последовательный flushЗаметки → журнал → трекер (при каждом переподключении)
Создание перед патчемЗаметка local_… создаётся на сервере до зависимых патчей
Сбой сетиСтроки остаются в очереди (treatDioFailureAsDeferredSync: timeout, 5xx, нет сети)
Отменённый запросПо умолчанию не ставится в очередь

Порядок вручную не управляется; приложение и сервер обрабатывают зависимости (напр. ACK патча заметки).


ЭффектГде видно
local_… → серверный idСписки Создать, редакторы
Ожидающая публикация примененаЗапись появляется в Библиотеке после обновления
Панель ТрекераОбновлена (график, календарь)
Ожидающие ссылкиЗначки «ожидание» сняты

В зависимости от Уведомлений аккаунта:

  • Push: может сигнализировать об окончании sync или сбое (конфигурация сервера / Firebase);
  • Email: возможна сводка после sync (эволюция продукта).

Личные напоминания Трекералокальные, независимы от этой синхронизации контента.

Уведомления


Офлайн-действиеСообщение пользователюПосле sync
Опубликовать заметкуПубликация в очереди (офлайн).Заметка опубликована в Библиотеке
Опубликовать журналПубликация в очереди (офлайн).Запись журнала опубликована

Пока сервер не подтвердил публикацию, Библиотека может не показывать контент как опубликованный.


СитуацияРиск
Одна заметка на телефоне A (офлайн) и планшете B (онлайн)Возможен конфликт — последняя sync или правила сервера
Только чтение на B при работе на AB видит старую версию, пока A не синхронизируется

СимптомВероятная причинаДействия
Баннер Сбой синхронизации…API 5xx, timeout, нестабильная сетьОставаться онлайн; переоткрыть приложение
Очередь не уменьшаетсяПовторяющаяся ошибка на элементеЗаписать сообщение; поддержка
Данные всё ещё видны локальноНормальноНичего не «теряется» на устройстве, пока не выйдете
Принудительный выход офлайнДиалог предупрежденияПодтверждать только если принимаете потерю локальных данных

Подсказки редактора могут показывать Ожидание синхронизации или Сбой sync — всё ещё сохранено на этом устройстве на некоторых стихах.


ДействиеСвязь с sync
Экспорт PDFПредлагает Синхронизировать перед экспортом, если очередь не пуста
Поиск → Добавить стихНужна заметка/журнал уже на сервере
Связь Трекер ↔ журналПосле стабильных серверных id
Обновление профиляPull профиля = сеть

При выходе Scripvio может очистить кэш и локальную очередь на этом устройстве (особенно при подтверждении офлайн с несинхронизированными данными).

При входе на новом устройстве: загрузка данных аккаунта + начальный кэш (типы событий и т. д.).

Профиль


ИндикаторСостояние «OK»
Баннер офлайн/syncОтсутствует
Заметка local_…Заменена числовым / серверным UUID id
ПубликацияВидна в Библиотеке
Экспорт PDFРазрешён без диалога предварительной sync

Если баннер Ожидание сохраняется онлайн: оставьте приложение на переднем плане или переоткройте его.


Можно ли синхронизировать вручную?
Отдельной кнопки в текущем интерфейсе нет — переподключение и открытие приложения перезапускает flush.

Как долго хранится очередь?
До успеха, выхода (очистка) или переустановки.

Sync использует много данных?
Отправляет изменения (JSON), а не весь каталог — разумно на мобильном.

Фоновая sync на iOS/Android?
Зависит от ОС; переоткрытие Scripvio после сети — наиболее надёжно.


ТемаСсылка
Офлайн-режимОфлайн-режим
FAQОфлайн и синхронизация
ЗаметкиЧерновик и публикация
БиблиотекаЧерновики и опубликованное