package com.snp.batch.global.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.info.License; import io.swagger.v3.oas.models.servers.Server; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.List; /** * Swagger/OpenAPI 3.0 설정 * * Swagger UI 접속 URL: * - Swagger UI: http://localhost:8041/snp-api/swagger-ui/index.html * - API 문서 (JSON): http://localhost:8041/snp-api/v3/api-docs * - API 문서 (YAML): http://localhost:8041/snp-api/v3/api-docs.yaml * * 주요 기능: * - REST API 자동 문서화 * - API 테스트 UI 제공 * - OpenAPI 3.0 스펙 준수 */ @Configuration public class SwaggerConfig { @Value("${server.port:8081}") private int serverPort; @Value("${server.servlet.context-path:}") private String contextPath; @Bean public OpenAPI openAPI() { return new OpenAPI() .info(apiInfo()) .servers(List.of( new Server() .url("http://localhost:" + serverPort + contextPath) .description("로컬 개발 서버"), new Server() .url("http://10.26.252.39:" + serverPort + contextPath) .description("로컬 개발 서버"), new Server() .url("http://211.208.115.83:" + serverPort + contextPath) .description("중계 서버"), new Server() .url("https://guide.gc-si.dev" + contextPath) .description("중계 서버 도메인"), new Server() .url("http://10.187.58.58:" + serverPort + contextPath) .description("운영 서버"), new Server() .url("https://mda.kcg.go.kr" + contextPath) .description("운영 서버 프록시") )); } private Info apiInfo() { return new Info() .title("SNP Batch REST API") .description(""" ## SNP Batch 시스템 REST API 문서 해양 데이터 통합 배치 시스템의 REST API 문서입니다. ### 제공 API - **Batch Management API**: 배치 Job 실행, 이력 조회, 스케줄 관리 - **AIS Target API**: AIS 선박 위치 정보 조회 (캐시 기반, 공간/조건 검색) ### 주요 기능 - 배치 Job 실행 및 중지 - Job 실행 이력 조회 - 스케줄 관리 (Quartz) - AIS 선박 실시간 위치 조회 (MMSI 단건/다건, 시간/공간 범위 검색) - 항해 조건 필터 검색 (SOG, COG, Heading, 목적지, 항행상태) - 폴리곤/WKT 범위 검색, 거리 포함 검색, 항적 조회 ### 버전 정보 - API Version: v1.0.0 - Spring Boot: 3.2.1 - Spring Batch: 5.1.0 """) .version("v1.0.0") .contact(new Contact() .name("SNP Batch Team") .email("support@snp-batch.com") .url("https://github.com/snp-batch")) .license(new License() .name("Apache 2.0") .url("https://www.apache.org/licenses/LICENSE-2.0")); } }