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

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

import java.time.LocalDateTime;

/**
 * 이미지 생성 작업 메시지 DTO
 *
 * image-generation-job 토픽에서 구독하는 메시지 형식
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ImageGenerationJobMessage {

    /**
     * 작업 ID
     */
    @JsonProperty("job_id")
    private String jobId;

    /**
     * 이벤트 ID
     */
    @JsonProperty("event_id")
    private Long eventId;

    /**
     * 사용자 ID
     */
    @JsonProperty("user_id")
    private Long userId;

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

    /**
     * 생성된 이미지 URL
     */
    @JsonProperty("image_url")
    private String imageUrl;

    /**
     * 이미지 생성 프롬프트
     */
    @JsonProperty("prompt")
    private String prompt;

    /**
     * 에러 메시지 (실패 시)
     */
    @JsonProperty("error_message")
    private String errorMessage;

    /**
     * 작업 생성 일시
     */
    @JsonProperty("created_at")
    private LocalDateTime createdAt;

    /**
     * 작업 완료/실패 일시
     */
    @JsonProperty("completed_at")
    private LocalDateTime completedAt;
}
