> ## Documentation Index
> Fetch the complete documentation index at: https://terminal.incrypto.ru/llms.txt
> Use this file to discover all available pages before exploring further.

# Облачная синхронизация

> Синхронизация рабочих пространств между устройствами.

# Облачная синхронизация

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

## Требования

<Note>
  Облачная синхронизация требует активной лицензии с включённой функцией **cloud\_sync**. Проверьте детали лицензии в **Настройки > Лицензия** или свяжитесь с поддержкой, если не уверены, включена ли эта функция в вашу лицензию.
</Note>

Для использования облачной синхронизации необходимо:

1. **Активная лицензия** с функцией `cloud_sync`.
2. **Подключение к серверу** — приложение должно иметь доступ к серверу Cluster Terminal.
3. **Один и тот же лицензионный ключ**, активированный на всех устройствах, которые вы хотите синхронизировать.

## Как это работает

Облачная синхронизация работает по модели **«отправил и забыл»** в сочетании с периодической полной синхронизацией.

### Автоматические триггеры синхронизации

| Триггер            | Когда                                          | Что происходит                                                             |
| ------------------ | ---------------------------------------------- | -------------------------------------------------------------------------- |
| **При сохранении** | Каждый раз при изменении рабочего пространства | Изменения немедленно отправляются в облако в фоновом режиме                |
| **При удалении**   | При удалении рабочего пространства             | Удаление передаётся в облако                                               |
| **Периодически**   | Каждые 5 минут                                 | Полная синхронизация — загрузка локальных изменений и скачивание удалённых |
| **При закрытии**   | При закрытии приложения                        | Финальная попытка синхронизации перед завершением работы приложения        |

### Разрешение конфликтов

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

<Warning>
  Если вы работаете с одним рабочим пространством на двух устройствах одновременно, изменения с одного устройства могут перезаписать другое. Чтобы избежать конфликтов, закрывайте приложение на одном устройстве перед открытием на другом или используйте отдельные рабочие пространства для каждого устройства.
</Warning>

## Ручная синхронизация

Вы можете запустить немедленную синхронизацию, не дожидаясь 5-минутного цикла.

<Steps>
  <Step title="Откройте диалог рабочих пространств">
    Нажмите на название рабочего пространства в заголовке.
  </Step>

  <Step title="Нажмите «Синхронизировать сейчас»">
    Нажмите кнопку **Синхронизировать сейчас** в верхней части диалога рабочих пространств. Индикатор загрузки показывает, что синхронизация выполняется.
  </Step>

  <Step title="Проверьте результаты">
    После завершения значки рабочих пространств обновятся, отражая текущее состояние синхронизации.
  </Step>
</Steps>

## Значки состояния синхронизации

Диалог рабочих пространств показывает состояние синхронизации рядом с названием каждого рабочего пространства:

| Значок                      | Значение                                                                  |
| --------------------------- | ------------------------------------------------------------------------- |
| Значок облака (заполненный) | Полностью синхронизировано с облаком                                      |
| Стрелка вверх               | Локальные изменения ожидают загрузки                                      |
| Стрелка вниз                | Доступны удалённые изменения для скачивания                               |
| Без значка                  | Рабочее пространство только локальное (облачная синхронизация недоступна) |

## Очередь офлайн-изменений

Если сервер недоступен в момент запуска синхронизации, изменения ставятся в локальную очередь в `localStorage` браузера. Очередь автоматически обрабатывается при следующей успешной синхронизации.

<Tip>
  Вы можете работать полностью офлайн. Все изменения накапливаются в очереди и синхронизируются при восстановлении подключения. Никакие данные не теряются.
</Tip>

### Как работает очередь офлайн-изменений

1. Вы изменяете или удаляете рабочее пространство в офлайн-режиме.
2. Изменение добавляется в локальную очередь.
3. При следующей периодической синхронизации (или ручной через «Синхронизировать сейчас») приложение пытается подключиться.
4. Если сервер доступен, все изменения из очереди отправляются по порядку.
5. Очередь очищается после успешной загрузки.

## Данные, хранящиеся в облаке

Каждое синхронизированное рабочее пространство содержит:

* **Метаданные рабочего пространства** — название, ID, метка времени последнего изменения
* **Конфигурацию** — полное состояние рабочего пространства в формате JSON, включая:
  * Настройки графика (символ, биржа, таймфрейм, тип графика)
  * Все конфигурации индикаторов
  * Все аннотации рисунков с координатами
  * Раскладку вкладок и панелей
  * Определения оповещений

<Note>
  Облачная синхронизация **не** сохраняет рыночные данные, кэшированные свечи или настройки приложения (тема, язык, URL сервера). Они остаются локальными на каждом устройстве.
</Note>

## Детали API

Облачная синхронизация взаимодействует с сервером по HTTPS с JWT-аутентификацией, полученной из вашего лицензионного ключа.

| Эндпоинт             | Метод    | Описание                                                  |
| -------------------- | -------- | --------------------------------------------------------- |
| `/api/v1/workspaces` | `GET`    | Получить список всех рабочих пространств текущей лицензии |
| `/api/v1/workspaces` | `PUT`    | Создать или обновить рабочее пространство                 |
| `/api/v1/workspaces` | `DELETE` | Удалить рабочее пространство по ID                        |

Все запросы требуют заголовка `Authorization: Bearer <JWT>`. JWT получается автоматически при валидации лицензии и периодически обновляется.

## Устранение неполадок облачной синхронизации

<AccordionGroup>
  <Accordion title="Значок синхронизации показывает стрелку вверх, но загрузка не завершается">
    Проверьте подключение к интернету и убедитесь, что сервер доступен в **Настройки > URL сервера**. Если сервер недоступен, изменения остаются в очереди и будут синхронизированы при восстановлении соединения.
  </Accordion>

  <Accordion title="Рабочие пространства исчезли после синхронизации на новом устройстве">
    Убедитесь, что на обоих устройствах используется один и тот же лицензионный ключ. Рабочие пространства привязаны к лицензии. Если вы активировали другой ключ, вы увидите рабочие пространства этого ключа.
  </Accordion>

  <Accordion title="Кнопка «Синхронизировать сейчас» не отображается">
    Облачная синхронизация доступна только с лицензией, включающей функцию `cloud_sync`. Проверьте детали лицензии в Настройках.
  </Accordion>

  <Accordion title="Изменения с другого устройства не отображаются">
    Нажмите **Синхронизировать сейчас** для принудительного получения данных. Если изменения по-прежнему не отображаются, убедитесь, что другое устройство завершило синхронизацию перед отключением.
  </Accordion>
</AccordionGroup>

## Безопасность

* Весь трафик синхронизации зашифрован через HTTPS.
* Данные рабочих пространств привязаны к вашему лицензионному ключу — никто другой не может получить доступ к вашим рабочим пространствам.
* JWT-токены имеют ограниченный срок действия и обновляются автоматически.
* Сервер хранит данные рабочих пространств в PostgreSQL с ID рабочего пространства и ID лицензии в качестве ключей.
