package com.kt.event.eventservice.application.dto.kafka;

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

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

/**
 * AI 이벤트 생성 작업 메시지 DTO
 *
 * ai-event-generation-job 토픽에서 구독하는 메시지 형식
 * JSON 필드명: camelCase (Jackson 기본 설정)
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AIEventGenerationJobMessage {

    /**
     * 작업 ID
     */
    private String jobId;

    /**
     * 사용자 ID (UUID String)
     */
    private String userId;

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

    /**
     * 매장명
     */
    private String storeName;

    /**
     * 매장 업종
     */
    private String storeCategory;

    /**
     * 매장 설명
     */
    private String storeDescription;

    /**
     * 이벤트 목적
     */
    private String objective;

    /**
     * 작업 상태 (PENDING, PROCESSING, COMPLETED, FAILED)
     */
    private String status;

    /**
     * AI 추천 결과 데이터
     */
    private AIRecommendationData aiRecommendation;

    /**
     * 에러 메시지 (실패 시)
     */
    private String errorMessage;

    /**
     * 작업 생성 일시
     */
    private LocalDateTime createdAt;

    /**
     * 작업 완료/실패 일시
     */
    private LocalDateTime completedAt;

    /**
     * AI 추천 데이터 내부 클래스
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class AIRecommendationData {

        private String eventTitle;

        private String eventDescription;

        private String eventType;

        private List<String> targetKeywords;

        private List<String> recommendedBenefits;

        private String startDate;

        private String endDate;
    }
}
