제품 안에 스프레드시트와 문서를 심고 AI 에이전트가 함께 편집하게 하는 오피스 SDK
브라우저 화면에 표를 넣고 사용자가 숫자를 고치면 합계가 자동으로 다시 계산되는 장면을 떠올려 보세요. 이 저장소는 그런 편집 기능을 내 제품 안에 심고, AI 에이전트도 같은 방식으로 내용을 읽고 고치게 하는 도구입니다. 오픈소스 코어에 기반해 스프레드시트와 문서 편집, 계산, 파일 처리를 하나의 구조로 묶어 줍니다.
웹, 서버, AI로 나뉜 세 가지 구성 요소
Univer는 웹 SDK, 서버 SDK, AI SDK로 구성됩니다. 웹 SDK는 콘텐츠 모델, 편집, 렌더링, 수식 계산, 그리고 애플리케이션이 쓰는 Facade API를 포함하는 기초입니다. 서버 SDK는 실시간 협업, 편집 이력, 오피스 파일 가져오기/내보내기를 위한 백엔드 서비스를 더합니다. AI SDK는 기존 에이전트나 워크플로에 오피스 기능을 연결해 주는 도구입니다. 이 저장소에는 웹 SDK의 코어 아키텍처와 엔진 구현이 Apache-2.0 라이선스로 포함되어 있습니다.
플러그인으로 조합하는 편집 기능
기능은 플러그인과 프리셋으로 조합됩니다. 빠른 시작 예제에서는 @univerjs/preset-sheets-core만 사용해 스프레드시트 편집기를 만듭니다. 셀 스타일, 병합, 셀 안의 리치 텍스트, 고정 창, 플로팅 이미지, 실행 취소/다시 실행 같은 기본 편집 기능이 포함됩니다. 데이터와 계산 영역에서는 수식, 정의된 이름, 필터, 정렬, 데이터 유효성 검사, 조건부 서식, 하이퍼링크, 댓글, 찾기/바꾸기를 지원합니다. 문서(Docs) 영역에서는 리치 텍스트 편집, 단락 서식, 목록, 하이퍼링크, 댓글, 도형 통합을 제공합니다.
애플리케이션과 에이전트가 공유하는 편집 흐름
Facade API는 워크북, 시트, 범위에 접근하는 애플리케이션용 인터페이스입니다. 예제에서는 견적서를 만들고, 애플리케이션 코드나 에이전트가 수량을 수정하면 수식이 자동으로 다시 계산되어 총액이 갱신됩니다. workbook.save()는 워크북과 플러그인 데이터를 포함한 JSON 스냅샷을 반환하며, 애플리케이션이 저장 방식을 결정합니다. 브라우저 저장소나 다른 저장소를 사용해 나중에 이 스냅샷을 복원할 수 있습니다. 이 워크플로에는 상업용 라이선스나 서버 SDK가 필요하지 않습니다.
로직과 UI를 분리한 확장 구조
콘텐츠 로직과 UI 상호작용은 별도의 플러그인으로 분리됩니다. 기능 플러그인은 규칙과 콘텐츠 변경을 관리하고, UI 플러그인은 인터페이스와 사용자 상호작용을 담당합니다. 명령 시스템은 비즈니스 액션을 조율하는 Command, 스냅샷에 저장되는 콘텐츠를 바꾸는 Mutation, 일시적인 상태를 바꾸는 Operation으로 구분합니다. 여러 기능이 영향을 주는 편집은 하나의 실행 취소/다시 실행 기록으로 묶여 사용자가 전체 액션을 되돌릴 수 있습니다. 의존성 주입과 명시적인 플러그인 의존성 선언을 통해 외부 의존성을 대체하거나 테스트 이중체를 공급할 수 있어 모델과 서비스를 독립적으로 테스트하기 쉽습니다.
오픈소스 범위와 상업용 확장 확인
이 저장소는 웹 SDK의 코어 아키텍처와 엔진 구현을 제공합니다. 상업용 웹 SDK 플러그인, 서버 SDK, 상업용 AI SDK 확장 기능은 별도로 배포되고 라이선스가 다릅니다. 데모에 보이는 일부 기능은 상업용 기능을 포함하므로, 오픈소스 기본 설정과 상업용 확장 범위를 구분해야 합니다. @univerjs/* 패키지들은 같은 버전을 유지해야 하며, 상업용 패키지는 일치하는 릴리스 라인을 사용해야 합니다. 확장 지점에 의존하기 전에 API 안정성 정책을 확인하는 것이 좋습니다. XLSX 가져오기/내보내기는 별도로 배포되는 파일 변환 기능을 사용합니다.