Связь пропала. Действия остались.
Собственный веб-интерфейс GrigTasks проектируется с долговечной локальной очередью. Подготовленные действия сохраняются на устройстве и ожидают отправки, если соединение недоступно.
Это не обещание полностью автономной работы: впервые открыть установку, войти и получить ещё не загруженные данные без связи нельзя.
Разные состояния — разные гарантии
| Состояние | Что произошло |
|---|---|
| Сохранено на устройстве | Действие записано локально, сервер его ещё не подтвердил |
| Отправляется | Клиент ожидает ответ |
| Подтверждено сервером | Сервер принял изменение |
| Ошибка | Действие не выполнено, причина видна пользователю |
| Конфликт | Состояние на сервере изменилось, нужно решение человека |
Попробуйте последовательность
Отключите связь в примере, сохраните учебную задачу и восстановите соединение. Это модель состояний: она не меняет сетевые настройки устройства и не отправляет запросов.
Повтор без лишней задачи
Повтор отправки одной операции сохраняет её идентификатор. Это позволяет отличить новую задачу от повторной доставки прежнего действия. При потерянном ответе клиент сверяется с сервером.
Задача не должна появиться дважды только потому, что ответ не дошёл.
Если данные изменились
При конфликте версий интерфейс предлагает сверить изменения. Автоматической перезаписи более новых данных нет. Решение пользователя создаёт новую операцию.
После восстановления сервера из резервной копии прежние локальные действия остаются для сверки. Автоматически применять их к новой истории нельзя.
Важные границы
- Очередь относится к конкретной установке и аккаунту.
- Выход с неотправленными действиями потребует предупреждения.
- Если браузер не может сохранить действие, интерфейс не должен показывать «Сохранено на устройстве».
- Долговечная очередь относится к собственному веб-интерфейсу. Драйвер GrigDesk не обещает такое же восстановление после перезапуска клиента.