package com.kamco.cd.kamcoback.inference; import com.kamco.cd.kamcoback.config.api.ApiResponseDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList; import com.kamco.cd.kamcoback.inference.service.InferenceResultService; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.responses.ApiResponses; import io.swagger.v3.oas.annotations.tags.Tag; import java.time.LocalDate; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @Tag(name = "추론관리", description = "추론관리 API") @RequestMapping("/api/inference") @RequiredArgsConstructor @RestController public class InferenceResultApiController { private final InferenceResultService inferenceResultService; @Operation(summary = "추론관리 목록", description = "어드민 홈 > 추론관리 > 추론관리 > 추론관리 목록") @ApiResponses( value = { @ApiResponse( responseCode = "200", description = "검색 성공", content = @Content( mediaType = "application/json", schema = @Schema(implementation = Page.class))), @ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content), @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) }) @GetMapping("/list") public ApiResponseDto> getInferenceResultList( @Parameter(description = "국유인 반영 여부", example = "Y") @RequestParam(required = false) String applyYn, @Parameter(description = "반영일", example = "2025-01-01") @RequestParam(required = false) LocalDate strtDttm, @Parameter(description = "반영일", example = "2026-01-01") @RequestParam(required = false) LocalDate endDttm, @Parameter(description = "제목", example = "변화탐지") @RequestParam(required = false) String title, @Parameter(description = "페이지 번호 (0부터 시작)", example = "0") @RequestParam(defaultValue = "0") int page, @Parameter(description = "페이지 크기", example = "20") @RequestParam(defaultValue = "20") int size) { InferenceResultDto.SearchListReq req = new InferenceResultDto.SearchListReq(applyYn, strtDttm, endDttm, title, page, size); Page analResList = inferenceResultService.getInferenceResultList(req); return ApiResponseDto.ok(analResList); } // @ApiResponses( // value = { // @ApiResponse( // responseCode = "200", // description = "검색 성공", // content = // @Content( // mediaType = "application/json", // schema = @Schema(implementation = InferenceDetailDto.AnalResSummary.class))), // @ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content), // @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) // }) // @GetMapping("/summary/{id}") // public ApiResponseDto getInferenceResultSummary( // @Parameter(description = "목록 id", example = "53") @PathVariable Long id) { // return ApiResponseDto.ok(inferenceResultService.getInferenceResultSummary(id)); // } // // @Operation(summary = "추론관리 분석결과 상세", description = "분석결과 상제 정보 Summary, DashBoard") // @ApiResponses( // value = { // @ApiResponse( // responseCode = "200", // description = "검색 성공", // content = // @Content( // mediaType = "application/json", // schema = @Schema(implementation = InferenceDetailDto.Detail.class))), // @ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content), // @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) // }) // @GetMapping("/detail/{id}") // public ApiResponseDto getInferenceDetail( // @Parameter(description = "목록 id", example = "53") @PathVariable Long id) { // return ApiResponseDto.ok(inferenceResultService.getDetail(id)); // } // // @Operation(summary = "추론관리 분석결과 상세 목록", description = "추론관리 분석결과 상세 목록 geojson 데이터 조회") // @ApiResponses( // value = { // @ApiResponse( // responseCode = "200", // description = "검색 성공", // content = // @Content( // mediaType = "application/json", // schema = @Schema(implementation = Page.class))), // @ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content), // @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) // }) // @GetMapping("/geom/{id}") // public ApiResponseDto> getInferenceResultGeomList( // @Parameter(description = "분석결과 id", example = "53") @PathVariable Long id, // @Parameter(description = "기준년도 분류", example = "land") @RequestParam(required = false) // String targetClass, // @Parameter(description = "비교년도 분류", example = "waste") @RequestParam(required = false) // String compareClass, // @Parameter(description = "5000:1 도협번호 37801011,37801012") @RequestParam(required = false) // List mapSheetNum, // @Parameter(description = "페이지 번호 (0부터 시작)", example = "0") @RequestParam(defaultValue = "0") // int page, // @Parameter(description = "페이지 크기", example = "20") @RequestParam(defaultValue = "20") // int size, // @Parameter(description = "정렬 조건 (형식: 필드명,방향)", example = "name,asc") // @RequestParam(required = false) // String sort) { // InferenceDetailDto.SearchGeoReq searchGeoReq = // new InferenceDetailDto.SearchGeoReq( // targetClass, compareClass, mapSheetNum, page, size, sort); // Page geomList = // inferenceResultService.getInferenceResultGeomList(id, searchGeoReq); // return ApiResponseDto.ok(geomList); // } }