# 패키지 개요

> Core, History, Thread Comment, Worktree, Office Exchange의 공개 Collaboration SDK 패키지를 알아봅니다.

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

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

- Requested language: `ko-KR`

- Content language: `ko-KR`

- Documentation version: `1.0.4`

- Source: [collaboration/packages.ko-KR.mdx](https://github.com/dream-num/documentation/blob/dev/content/server/collaboration/packages.ko-KR.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)                   | Unit 로드, 변경 제출, 실시간 동기화                   |
| 브라우저   | [**@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)   | Node.js HTTP 및 WebSocket 트래픽 수신           |
| 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)                 | Unit, OT, 리비전, 핵심 Service 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 영구 저장            |

Core Server에는 Transport, Endpoint, Service, Database Adapter 하나가 필요합니다. Memory와 SQLite는 같은 계약을 구현하며 보통 하나를 선택합니다.

## History

History는 Core Unit 생성과 변경 커밋 이벤트로 버전 이력 인덱스를 만듭니다.

| 실행 환경  | 패키지                                                                                                                                          | 주요 역할                   |
| ------ | -------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |
| 브라우저   | 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 인덱스 저장       |

기록은 재구축 가능한 파생 인덱스이며 Unit 내용의 기준은 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) | SQLite Worktree 영구 저장   |

Worktree Service는 Core Service를 통해 trunk에 병합하므로 두 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)                   | Node.js에서 Office 파일과 Univer 데이터 변환 |

가져오기는 변환 데이터를 `createUnitFromSnapshot()`에 전달하고 내보내기는 Core Service로 확정 리비전을 읽습니다. 파일, 작업, 업무 API는 애플리케이션이 관리합니다.

## 선택 원칙

1. [빠른 시작](https://docs.univer.ai/ko-KR/server/collaboration/quick-start.md)의 Core 패키지부터 시작하세요.
2. Memory, SQLite, 자체 구현 중 Core Database Adapter 하나를 선택하세요.
3. 제품에서 사용하는 확장만 설치하세요.
4. 같은 SQLite 파일을 사용해도 모듈별 Adapter를 따로 만드세요.

모듈 관계는 [공동 편집 확장](https://docs.univer.ai/ko-KR/server/collaboration/extensions.md), 실행 구성은 [예제 목록](https://docs.univer.ai/ko-KR/server/collaboration/examples.md)을 참고하세요.
