package com.kt.ai.model.dto.response;

import com.kt.ai.model.enums.JobStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 작업 상태 응답 DTO
 * Redis Key: ai:job:status:{jobId}
 * TTL: 86400초 (24시간)
 *
 * @author AI Service Team
 * @since 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class JobStatusResponse {
    /**
     * Job ID
     */
    private String jobId;

    /**
     * 작업 상태
     */
    private JobStatus status;

    /**
     * 진행률 (0-100)
     */
    private Integer progress;

    /**
     * 상태 메시지
     */
    private String message;

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

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

    /**
     * 작업 시작 시각
     */
    private LocalDateTime startedAt;

    /**
     * 작업 완료 시각 (완료 시)
     */
    private LocalDateTime completedAt;

    /**
     * 작업 실패 시각 (실패 시)
     */
    private LocalDateTime failedAt;

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

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

    /**
     * 처리 시간 (밀리초)
     */
    private Long processingTimeMs;
}
