# Совместное редактирование

> Координируйте параллельные изменения через OT, HTTP, WebSocket и постоянное хранение.

- Human documentation: [https://docs.univer.ai/ru-RU/overview/features/shared/collaboration](https://docs.univer.ai/ru-RU/overview/features/shared/collaboration)

- Agent Markdown: [https://docs.univer.ai/ru-RU/overview/features/shared/collaboration.md](https://docs.univer.ai/ru-RU/overview/features/shared/collaboration.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.3.0`

- Source: [features/shared/collaboration.ru-RU.mdx](https://github.com/dream-num/documentation/blob/dev/content/docs/features/shared/collaboration.ru-RU.mdx)

---

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

## Параллельная работа и конфликты

Univer использует OT — операционное преобразование. Клиент группирует операции в changeset; сервер преобразует их относительно подтверждённых revision. Если Alice изменяет `C2`, а Bob вставляет столбец перед B, изменение перемещается вместе с ячейкой в `D2`. Отмена и повтор также учитывают удалённые операции, но не решают все бизнес-конфликты.

Невозможность преобразовать или применить операцию блокирует редактирование документа. `CollaborationConflict` передаёт причину и неподтверждённые локальные изменения. Сохраните их перед перезагрузкой. См. [восстановление](https://docs.univer.ai/ru-RU/server/collaboration/browser-integration.md#conflict-recovery) и [устройство OT](/blog/ot).

## Каналы и переподключение

| Канал | Назначение |
| --- | --- |
| HTTP | Получение снимков и изменений, Session Ticket, отправка changeset. |
| WebSocket | Session и Room; ACK, удалённые изменения и Presence. |

Одноразовый Ticket открывает соединение, затем клиент входит в Room документа. Presence передаёт участников, курсоры и выделения. **Соединение или успешный HTTP-запрос не подтверждает сохранение.** Учитывайте ACK, состояние совместной работы и ожидающие изменения.

При разрыве сохраняйте неподтверждённые изменения. После подключения получите недостающие revision и повторите отправку. Сервер устраняет дубликаты по идентификатору отправки. См. [синхронизацию](https://docs.univer.ai/ru-RU/server/collaboration/browser-integration.md#sync-status) и [Presence](https://docs.univer.ai/ru-RU/server/collaboration/presence.md).

## Хранение и снимки

Сервис хранит подтверждённые changeset и revision, создавая снимки по политике. Загрузка восстанавливает снимок и последующие изменения; создавать снимок после каждого ввода не требуется. Расчёт описан в [Headless и серверных вычислениях](https://docs.univer.ai/ru-RU/overview/features/shared/server-calculation.md). История, комментарии и Worktree — отдельные [расширения](https://docs.univer.ai/ru-RU/server/collaboration/extensions.md).

## Развёртывание

```mermaid
flowchart LR
    A["Клиент A"]
    B["Клиент B / Агент"]
    S["Сервис приложения<br/>OT · Подтверждение и рассылка"]
    D["База приложения"]
    A <-->|"HTTP / WebSocket"| S
    B <-->|"HTTP / WebSocket"| S
    S --> D
```

- **Один узел:** соберите Transport, Endpoint, Service и Database Adapter в Node.js. Memory подходит для временной проверки, SQLite — для локальной и небольшой нагрузки. Другие БД подключаются адаптерами приложения.
- **Масштабирование:** кроме общего хранилища нужны межузловая рассылка, Presence, проверка Ticket и согласованность записи. Одних дополнительных процессов недостаточно; следуйте схеме своей версии.
- **Тяжёлые задачи:** вынесите ресурсоёмкое преобразование файлов отдельно.

См. [модули](https://docs.univer.ai/ru-RU/server/collaboration/modules.md), [развёртывание](https://docs.univer.ai/ru-RU/server/deployment.md) и [пример нескольких узлов](https://docs.univer.ai/ru-RU/server/collaboration/examples.md#multi-node).

## Производительность и ёмкость

**Тесты и показатели текущей версии ещё не опубликованы.** Они зависят от документов, частоты, участников и среды. Измеряйте подтверждение отправки, удалённое отображение, changeset в секунду, объём рассылки и память.

## Подключение и охват

Начните с [обзора](https://docs.univer.ai/ru-RU/server/collaboration/overview.md) и [примера двух браузеров](https://docs.univer.ai/ru-RU/server/collaboration/quick-start.md). Подключите идентификацию и права через Middleware, выберите постоянный [Database Adapter](https://docs.univer.ai/ru-RU/server/collaboration/database-adapters.md) и проверьте сохранение после перезапуска.

Ядро поддерживает Sheet, Doc, Slide, Canvases и Relational Table, не PDF. Идентификацию, авторизацию, файлы и политику хранения обеспечивает приложение.

[Ко всем возможностям](https://docs.univer.ai/ru-RU/overview/features.md)
