# Обзор пакетов

> Публичные пакеты Collaboration SDK для Core, History, Thread Comment, Worktree и Office Exchange.

- Human documentation: [https://docs.univer.ai/ru-RU/server/collaboration/packages](https://docs.univer.ai/ru-RU/server/collaboration/packages)

- Agent Markdown: [https://docs.univer.ai/ru-RU/server/collaboration/packages.md](https://docs.univer.ai/ru-RU/server/collaboration/packages.md)

- Requested language: `ru-RU`

- Content language: `ru-RU`

- Documentation version: `1.2.0`

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

---

Это карта выбора пакетов. Сначала соберите Core Collaboration, затем добавьте нужные расширения. Все пакеты устанавливать не нужно.

## Core Collaboration

Core Collaboration предоставляет основной путь браузерной совместной работы, серверного протокола, OT, ревизий и хранения.

| Среда       | Пакет                                                                                                                        | Основная ответственность                                                                   |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ |
| Браузер     | [**@univerjs-pro/collaboration**](https://www.npmjs.com/package/@univerjs-pro/collaboration)                                 | Регистрирует базовые браузерные возможности                                                |
| Браузер     | [**@univerjs-pro/collaboration-client**](https://www.npmjs.com/package/@univerjs-pro/collaboration-client)                   | Загрузка Units, отправка изменений и синхронизация                                         |
| Браузер     | [**@univerjs-pro/collaboration-client-ui**](https://www.npmjs.com/package/@univerjs-pro/collaboration-client-ui)             | Предоставляет UI состояния и стили                                                         |
| Server      | [**@univerjs-pro/collaboration-transport-node**](https://www.npmjs.com/package/@univerjs-pro/collaboration-transport-node)   | Принимает HTTP и WebSocket Node.js                                                         |
| Server      | [**@univerjs-pro/collaboration-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-endpoint)               | Реализует протокол Client, Sessions, Rooms и Presence                                      |
| Server      | [**@univerjs-pro/collaboration-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-service)                 | Управляет Units, OT, ревизиями и API ядра                                                  |
| База данных | [**@univerjs-pro/collaboration-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-memory) | Хранение в процессе для тестов, примеров и временной разработки                            |
| База данных | [**@univerjs-pro/collaboration-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-database-sqlite) | SQLite для разработки, тестов, локальных и небольших установок                             |
| Multi-node  | [**@univerjs-pro/collaboration-cluster-redis**](https://www.npmjs.com/package/@univerjs-pro/collaboration-cluster-redis)     | Pub/sub-адаптер и хранилище session tickets на Redis для развёртывания на нескольких узлах |

Core Server нужны Transport, Endpoint, Service и один Database Adapter. Memory и SQLite реализуют один контракт; обычно выбирают один. Для развёртывания на нескольких узлах также нужны pub/sub-адаптер и общее хранилище session tickets. Оба контракта (`IPubSubAdapter`, `ISessionTicketStore`) определяет Endpoint; SDK предоставляет реализацию на Redis.

## History

History строит индекс версий по событиям создания Unit и фиксации изменений Core.

| Среда       | Пакет                                                                                                                                        | Основная ответственность              |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------- |
| Браузер     | Повторно использует Core Client/UI                                                                                                           | Показывает и читает историю           |
| Server      | [**@univerjs-pro/collaboration-history-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-service)                 | Строит и запрашивает индекс истории   |
| Server      | [**@univerjs-pro/collaboration-history-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-endpoint)               | Предоставляет Client протокол History |
| База данных | [**@univerjs-pro/collaboration-history-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-history-database-sqlite) | Хранит производный индекс History     |

История — восстанавливаемый производный индекс. Наборы изменений Core остаются источником истины содержимого.

## Thread Comment

Thread Comment управляет текстами, ответами и статусом решения комментариев Sheets и Docs.

| Среда       | Пакет                                                                                                                                        | Основная ответственность                                       |
| ----------- | -------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
| Браузер     | Использует пакеты Core Collaboration                                                                                                         | Использует Comment Client и UI                                 |
| Server      | [**@univerjs-pro/collaboration-comment-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-service)                 | Управляет комментариями и событием `commentCommitted`          |
| Server      | [**@univerjs-pro/collaboration-comment-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-endpoint)               | Предоставляет протокол и публикует обновления через Unit Rooms |
| База данных | [**@univerjs-pro/collaboration-comment-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-memory) | Хранение комментариев в процессе                               |
| База данных | [**@univerjs-pro/collaboration-comment-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-comment-database-sqlite) | Хранение комментариев в SQLite                                 |

Comment Adapter хранит комментарии. Движущиеся с содержимым якоря остаются в снимках и изменениях Core.

## Worktree

Worktree предоставляет изолированные черновики, переходы статуса и слияние по Unit.

| Среда       | Пакет                                                                                                                                          | Основная ответственность                              |
| ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------- |
| Браузер     | [**@univerjs-pro/collaboration-worktree-client**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-client)                   | Подключает черновики, статус и слияние Worktree       |
| Server      | [**@univerjs-pro/collaboration-worktree-service**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-service)                 | Управляет изменениями черновиков, статусом и слиянием |
| Server      | [**@univerjs-pro/collaboration-worktree-endpoint**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-endpoint)               | Предоставляет протокол Worktree Client                |
| База данных | [**@univerjs-pro/collaboration-worktree-database-memory**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-memory) | Хранение Worktree в процессе                          |
| База данных | [**@univerjs-pro/collaboration-worktree-database-sqlite**](https://www.npmjs.com/package/@univerjs-pro/collaboration-worktree-database-sqlite) | Хранение Worktree в SQLite                            |

Worktree Service сливает в trunk через Core Service, поэтому Middleware нужны на обеих границах.

## Office Exchange

Office Exchange — прикладной процесс преобразования файлов с Collaboration Service, без собственного совместного Database Adapter.

| Среда   | Пакет                                                                                                          | Основная ответственность                        |
| ------- | -------------------------------------------------------------------------------------------------------------- | ----------------------------------------------- |
| Браузер | [**@univerjs-pro/exchange-client**](https://www.npmjs.com/package/@univerjs-pro/exchange-client)               | Базовые браузерные возможности обмена файлами   |
| Браузер | [**@univerjs-pro/sheets-exchange-client**](https://www.npmjs.com/package/@univerjs-pro/sheets-exchange-client) | Импорт и экспорт Sheet                          |
| Server  | [**@univerjs-pro/exchange-node**](https://www.npmjs.com/package/@univerjs-pro/exchange-node)                   | Преобразование Office и данных Univer в Node.js |

При импорте данные передаются в `createUnitFromSnapshot()`, при экспорте подтверждённая ревизия читается через Core Service. Файлы, задачи и бизнес-API контролирует приложение.

## Правила выбора

1. Начните с пакетов Core из [Быстрого старта](https://docs.univer.ai/ru-RU/server/collaboration/quick-start.md).
2. Выберите один Core Database Adapter: Memory, SQLite или собственный.
3. Для развёртывания на нескольких узлах добавьте pub/sub-адаптер и хранилище session tickets на Redis.
4. Установите только нужные расширения.
5. Создайте отдельный Adapter для каждого модуля даже при общем файле SQLite.

Связи описаны в [Модулях расширений](https://docs.univer.ai/ru-RU/server/collaboration/extensions.md), запускаемые сборки — в [Примерах](https://docs.univer.ai/ru-RU/server/collaboration/examples.md).
