package com.unicorn.hgzero.stt.domain;

import lombok.Builder;
import lombok.Getter;
import lombok.ToString;

import java.time.LocalDateTime;

/**
 * 녹음 도메인 모델
 * 회의 음성 녹음 정보를 나타내는 도메인 객체
 */
@Getter
@Builder
@ToString
public class Recording {
    
    /**
     * 녹음 ID
     */
    private final String recordingId;
    
    /**
     * 회의 ID
     */
    private final String meetingId;
    
    /**
     * 세션 ID
     */
    private final String sessionId;
    
    /**
     * 녹음 상태
     */
    private final RecordingStatus status;
    
    /**
     * 시작 시간
     */
    private final LocalDateTime startTime;
    
    /**
     * 종료 시간
     */
    private final LocalDateTime endTime;
    
    /**
     * 녹음 시간 (초)
     */
    private final Integer duration;
    
    /**
     * 파일 크기 (bytes)
     */
    private final Long fileSize;
    
    /**
     * 저장 경로
     */
    private final String storagePath;
    
    /**
     * 언어 설정
     */
    private final String language;
    
    /**
     * 화자 수
     */
    private final Integer speakerCount;
    
    /**
     * 세그먼트 수
     */
    private final Integer segmentCount;
    
    /**
     * 녹음 상태 열거형
     */
    public enum RecordingStatus {
        READY("준비"),
        RECORDING("녹음중"),
        STOPPED("중지됨"),
        COMPLETED("완료"),
        ERROR("오류");
        
        private final String description;
        
        RecordingStatus(String description) {
            this.description = description;
        }
        
        public String getDescription() {
            return description;
        }
    }
}