package gc.mda.signal_batch.monitoring.dto;

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

import java.time.LocalDateTime;

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class WebSocketUsageLogDto {
    
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
    private LocalDateTime timestamp;
    
    private String sessionId;
    private String clientIp;
    private String userAgent;
    
    // WebSocket 이벤트 타입
    private String eventType; // CONNECT, SUBSCRIBE, MESSAGE, UNSUBSCRIBE, DISCONNECT, ERROR
    
    // STOMP 관련 정보
    private String stompCommand;
    private String destination;
    private String subscriptionId;

    // 요청 파라미터 (destination에서 추출한 파라미터나 STOMP 헤더)
    private String requestParams;
    
    // 메시지 관련
    private String messageType;
    private long payloadSizeBytes;
    private long processingTimeMs;
    
    // 연결 정보
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS")
    private LocalDateTime connectTime;
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss.SSS") 
    private LocalDateTime disconnectTime;
    private long connectionDurationMs;
    
    // 통계 정보
    private int messageCount;
    private long totalDataSent;
    
    // 에러 정보
    private String errorMessage;
    private String exceptionClass;
}