Meridian
← БлогИнженерия

Офлайн-режим: как мы синхронизируем 40 000 задач без конфликтов

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

ЮЮлия Верещагинаведущий инженер · 15 июля 2026 · 10 минут

Офлайн-режим просили с первого года: в поезде, в самолёте, на объекте без связи. Сложность не в том, чтобы сохранить правки локально, а в том, чтобы потом свести их с правками других людей.

Правка - это операция, а не снимок

Приложение хранит не состояние задачи, а журнал операций: «название стало таким», «исполнитель сменился», «добавлен комментарий». При восстановлении связи журнал отправляется на сервер и применяется по порядку.

Конфликты по полям

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

{ "op": "set", "task": "WEB-142", "field": "due",
  "value": "2026-08-30", "at": "2026-07-15T10:31:08+03:00", "by": "u_418" }

Где компромисс

Текст описания сводится по абзацам, а не по символам: если двое правили один абзац, сохранятся обе версии подряд, и человек выберет сам. Это проще и честнее автоматического слияния, которое иногда выдаёт бессмыслицу.

Лучший конфликт - тот, который пользователь не заметил. Второй по качеству - тот, который он может разрешить за пять секунд.

Офлайн-режим вышел в версии 4.9 и доступен на всех тарифах.

Следующая статья: Почему мы перешли на двухнедельные циклы и не вернёмся