package com.kt.distribution.config;

import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.info.Contact;
import io.swagger.v3.oas.models.info.Info;
import io.swagger.v3.oas.models.servers.Server;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.List;

/**
 * OpenAPI (Swagger) Configuration
 * Swagger UI 설정 및 API 문서화
 *
 * @author System Architect
 * @since 2025-10-24
 */
@Configuration
public class OpenApiConfig {

    @Bean
    public OpenAPI openAPI() {
        return new OpenAPI()
                .info(new Info()
                        .title("Distribution Service API")
                        .description("""
                                KT AI 기반 소상공인 이벤트 자동 생성 서비스의 다중 채널 배포 관리 API

                                ## 주요 기능
                                - 다중 채널 동시 배포 (우리동네TV, 링고비즈, 지니TV, SNS)
                                - 배포 상태 실시간 모니터링
                                - Circuit Breaker 기반 장애 격리
                                - Retry 패턴 및 Fallback 처리
                                """)
                        .version("1.0.0")
                        .contact(new Contact()
                                .name("Digital Garage Team")
                                .email("support@kt-event-marketing.com")))
                .servers(List.of(
                        new Server()
                                .url("http://localhost:8085")
                                .description("Local Development Server"),
                        new Server()
                                .url("https://dev-api.kt-event-marketing.com/distribution/v1")
                                .description("Development Server"),
                        new Server()
                                .url("https://api.kt-event-marketing.com/distribution/v1")
                                .description("Production Server"),
                        new Server()
                                .url("http://kt-event-marketing-api.20.214.196.128.nip.io/api/v1")
                                .description("VM Development Server")
                ));
    }
}
