package com.kt.distribution.dto;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 채널별 배포 상태 DTO
 *
 * 각 채널의 배포 진행 상태 및 결과 정보를 담습니다.
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ChannelStatus {

    /**
     * 채널 타입
     */
    private ChannelType channel;

    /**
     * 채널별 배포 상태
     * - PENDING: 대기 중
     * - IN_PROGRESS: 진행 중
     * - COMPLETED: 완료
     * - FAILED: 실패
     */
    private String status;

    /**
     * 진행률 (0-100, IN_PROGRESS 상태일 때 사용)
     */
    private Integer progress;

    /**
     * 채널별 배포 ID (우리동네TV, 지니TV 등)
     */
    private String distributionId;

    /**
     * 예상 노출 수 (우리동네TV, 지니TV)
     */
    private Integer estimatedViews;

    /**
     * 업데이트 완료 시각 (링고비즈)
     */
    private LocalDateTime updateTimestamp;

    /**
     * 이벤트 ID
     */
    private String eventId;

    /**
     * 노출 스케줄 (지니TV)
     */
    private List<String> impressionSchedule;

    /**
     * 게시물 URL (Instagram, Naver Blog)
     */
    private String postUrl;

    /**
     * 게시물 ID (Instagram)
     */
    private String postId;

    /**
     * 메시지 ID (Kakao Channel)
     */
    private String messageId;

    /**
     * 완료 시각
     */
    private LocalDateTime completedAt;

    /**
     * 오류 메시지 (실패 시)
     */
    private String errorMessage;

    /**
     * 재시도 횟수
     */
    private Integer retries;

    /**
     * 마지막 재시도 시각
     */
    private LocalDateTime lastRetryAt;
}
