실시간 공동 편집¶
Live Mode에서 활성화되는 실시간 협업 기능을 설명합니다.
Awareness (존재 인식)¶
Live Mode에서는 같은 다이어그램을 편집하고 있는 모든 사용자가 Awareness 정보를 공유합니다.
공유되는 정보¶
| 정보 | 설명 |
|---|---|
| 사용자 이름 | 프로필에 등록된 이름 |
| 아바타 색상 | 사용자별 고유 색상 (자동 배정) |
| 커서 위치 | 캔버스 위의 마우스 위치 |
| 선택 영역 | 현재 선택한 엔터티 목록 |
| 이동 중인 노드 | 드래그 중인 엔터티의 실시간 위치 |
사용자 목록 (Facepile)¶
상단 바에 현재 접속 중인 사용자 목록이 **아바타**로 표시됩니다. 각 아바타에는 고유 색상이 부여되어 캔버스의 커서 색상과 일치합니다.
충돌 해결¶
ThinkERD는 동시 편집 시 충돌을 **자동으로 해결**합니다. 여러 사용자가 같은 요소를 동시에 수정해도 데이터 손실 없이 병합됩니다.
자동 병합 규칙¶
| 상황 | 동작 |
|---|---|
| 두 사용자가 다른 엔터티 편집 | 독립 적용 (충돌 없음) |
| 두 사용자가 같은 엔터티의 다른 속성 편집 | 각각 반영됨 |
| 두 사용자가 같은 속성 동시 수정 | 마지막 변경이 적용 (last-writer-wins) |
| 엔터티 이동 동시 수행 | 각 사용자의 최종 위치가 병합됨 |
데이터 무결성
네트워크 지연이 있어도 **데이터 손실 없이 자동 병합**됩니다. 오프라인 상태에서 편집한 내용도 재접속 시 동기화 됩니다.
세션 관리¶
Presence Monitor (SSE)¶
서버에서 SSE(Server-Sent Events) 스트림을 통해 현재 활성 사용자 수를 실시간으로 추적합니다.
| 상태 | 의미 |
|---|---|
sessionCount = 1 | 혼자 편집 중 (Solo Mode 유지) |
sessionCount ≥ 2 | 다른 사용자 있음 (Live Mode 전환) |
같은 사용자의 멀티 세션¶
같은 사용자가 여러 브라우저나 디바이스에서 접속해도 정상적으로 동작합니다. 각 브라우저 세션은 독립적인 clientId로 관리됩니다.