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

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

import java.time.LocalDateTime;
import java.util.Map;

/**
 * 서비스 헬스체크 응답 DTO
 *
 * @author AI Service Team
 * @since 1.0.0
 */
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class HealthCheckResponse {
    /**
     * 전체 서비스 상태
     */
    private ServiceStatus status;

    /**
     * 체크 시각
     */
    private LocalDateTime timestamp;

    /**
     * 개별 서비스 상태
     */
    private Services services;

    /**
     * 개별 서비스 상태 정보
     */
    @Data
    @Builder
    @NoArgsConstructor
    @AllArgsConstructor
    public static class Services {
        /**
         * Kafka 연결 상태
         */
        private ServiceStatus kafka;

        /**
         * Redis 연결 상태
         */
        private ServiceStatus redis;

        /**
         * Claude API 상태
         */
        private ServiceStatus claudeApi;

        /**
         * GPT-4 API 상태 (선택)
         */
        private ServiceStatus gpt4Api;

        /**
         * Circuit Breaker 상태
         */
        private CircuitBreakerState circuitBreaker;
    }
}
