package com.kt.event.analytics.messaging.event;

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

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

/**
 * 배포 완료 이벤트 (설계서 기준)
 *
 * Distribution Service가 한 이벤트의 모든 채널 배포 완료 시 발행
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DistributionCompletedEvent {

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

    /**
     * 배포된 채널 목록 (여러 채널을 배열로 포함)
     */
    private List<ChannelDistribution> distributedChannels;

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

    /**
     * 개별 채널 배포 정보
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class ChannelDistribution {

        /**
         * 채널명 (우리동네TV, 지니TV, 링고비즈, SNS)
         */
        private String channel;

        /**
         * 채널 유형 (TV, CALL, SNS)
         */
        private String channelType;

        /**
         * 배포 상태 (SUCCESS, FAILURE)
         */
        private String status;

        /**
         * 예상 노출 수
         */
        private Integer expectedViews;

        /**
         * 배포 비용 (원)
         */
        private java.math.BigDecimal distributionCost;
    }
}
