package com.unicorn.hgzero.meeting.infra.websocket;

import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 실시간 협업 메시지 DTO
 * WebSocket을 통한 회의록 협업 메시지 형식
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
public class CollaborationMessage {

    /**
     * 메시지 타입
     * - SECTION_UPDATE: 섹션 내용 업데이트
     * - SECTION_LOCK: 섹션 잠금
     * - SECTION_UNLOCK: 섹션 잠금 해제
     * - CURSOR_MOVE: 커서 위치 이동
     * - USER_JOINED: 사용자 입장
     * - USER_LEFT: 사용자 퇴장
     * - TYPING_START: 타이핑 시작
     * - TYPING_STOP: 타이핑 종료
     * - ERROR: 오류 메시지
     */
    private String type;

    // 기본 정보
    private String minutesId;
    private String userId;
    private String userName;
    private Long timestamp;

    // 섹션 관련 정보
    private String sectionId;
    private String sectionTitle;
    private String content;
    private Integer position; // 커서 위치

    // 기타 메시지
    private String message;
    private Object data; // 추가 데이터
}