From ca4a56721fd731ed75a2e440f66dfc60f6b03969 Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 13 Jan 2026 13:57:59 +0900 Subject: [PATCH] =?UTF-8?q?[KC-99]=20=EC=B6=94=EB=A1=A0=20=EC=A7=84?= =?UTF-8?q?=ED=96=89=EC=97=AC=EB=B6=80=20api=20=EC=B6=94=EA=B0=80,=20spotl?= =?UTF-8?q?ess=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../InferenceResultApiController.java | 22 ++++++++++++++++ .../service/InferenceResultService.java | 9 +++++++ .../core/InferenceResultCoreService.java | 9 +++++++ .../MapSheetLearnRepositoryCustom.java | 4 ++- .../MapSheetLearnRepositoryImpl.java | 18 +++++++++++++ .../service/MapSheetInferenceJobService.java | 25 ++++++++++++------- 6 files changed, 77 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java index 5da4c5bc..0e65de75 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/InferenceResultApiController.java @@ -73,6 +73,28 @@ public class InferenceResultApiController { return ApiResponseDto.ok(analResList); } + @Operation(summary = "추론 진행 여부 확인", description = "어드민 홈 > 추론관리 > 추론관리 > 추론관리 목록") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "검색 성공", + content = + @Content( + mediaType = "application/json", + schema = + @Schema( + description = "진행 여부 (Y: 진행중, N: 없음)", + type = "string", + example = "N"))), + @ApiResponse(responseCode = "400", description = "잘못된 검색 조건", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @GetMapping("/processing-yn") + public ApiResponseDto getProcessing() { + return ApiResponseDto.ok(inferenceResultService.getProcessing()); + } + @Operation(summary = "년도 목록 조회", description = "어드민 홈 > 추론관리 > 추론목록 > 변화탐지 실행 정보 입력 > 년도 목록 조회") @ApiResponses( value = { diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java index 770adb70..28ba6963 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/service/InferenceResultService.java @@ -74,6 +74,15 @@ public class InferenceResultService { return inferenceResultCoreService.getInferenceResultList(req); } + /** + * 추론 진행중인지 확인 + * + * @return + */ + public String getProcessing() { + return inferenceResultCoreService.getProcessing(); + } + /** * 변화탐지 실행 정보 생성 * diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java index 24f89f4b..fe12b417 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/core/InferenceResultCoreService.java @@ -341,4 +341,13 @@ public class InferenceResultCoreService { public InferenceStatusDetailDto getInferenceStatus(UUID uuid) { return mapSheetLearnRepository.getInferenceStatus(uuid); } + + /** + * 추론 진행중인지 확인 + * + * @return + */ + public String getProcessing() { + return mapSheetLearnRepository.getProcessing(); + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java index 8b8ecac5..c26d52b4 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryCustom.java @@ -22,5 +22,7 @@ public interface MapSheetLearnRepositoryCustom { InferenceProgressDto getInferenceAiResultById(Long id, UUID modelUuid); - public InferenceStatusDetailDto getInferenceStatus(UUID uuid); + InferenceStatusDetailDto getInferenceStatus(UUID uuid); + + String getProcessing(); } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java index 1a09ad5b..93e4b1df 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/repository/Inference/MapSheetLearnRepositoryImpl.java @@ -225,4 +225,22 @@ public class MapSheetLearnRepositoryImpl implements MapSheetLearnRepositoryCusto .fetchOne(); return dto; } + + /** + * 추론 진행중인지 조회 + * + * @return + */ + public String getProcessing() { + Long processing = + queryFactory + .select(mapSheetLearnEntity.count()) + .from(mapSheetLearnEntity) + .where(mapSheetLearnEntity.status.eq("IN_PROGRESS")) + .fetchOne(); + if (Long.valueOf(0L).equals(processing)) { + return "N"; + } + return "Y"; + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java index cf4a5db0..f9017e3f 100644 --- a/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java +++ b/src/main/java/com/kamco/cd/kamcoback/scheduler/service/MapSheetInferenceJobService.java @@ -96,7 +96,14 @@ public class MapSheetInferenceJobService { String json = result.body(); JobStatusDto dto = objectMapper.readValue(json, JobStatusDto.class); - if ("COMPLETED".equals(dto.getStatus())) { + int totalJobs = dto.getTotalJobs(); + int completedJobs = dto.getCompletedJobs(); + int failedJobs = dto.getFailedJobs(); + + // 성공, 실패 값 더해서 total 과 같으면 완료 + String inferStatus = this.setStatus(totalJobs, completedJobs, failedJobs); + + if ("COMPLETED".equals(inferStatus)) { String type = batchSheet.getRunningModelType(); if (type.equals("M1")) { @@ -122,18 +129,11 @@ public class MapSheetInferenceJobService { // 종료시간 this.updateProcessingEndTimeByModel(batchSheet.getUuid(), ZonedDateTime.now(), "M3"); } - } else if ("COMPLETED_WITH_FAILURES".equals(dto.getStatus())) { - SaveInferenceAiDto saveInferenceAiDto = new SaveInferenceAiDto(); - saveInferenceAiDto.setUuid(batchSheet.getUuid()); - saveInferenceAiDto.setStatus(Status.END.getId()); - saveInferenceAiDto.setInferEndDttm(ZonedDateTime.now()); - saveInferenceAiDto.setType(batchSheet.getRunningModelType()); - inferenceResultCoreService.update(saveInferenceAiDto); } else { SaveInferenceAiDto saveInferenceAiDto = new SaveInferenceAiDto(); saveInferenceAiDto.setUuid(batchSheet.getUuid()); saveInferenceAiDto.setStatus(Status.IN_PROGRESS.getId()); - saveInferenceAiDto.setDetectEndCnt(dto.getCompletedJobs().longValue()); + saveInferenceAiDto.setDetectEndCnt((long) (completedJobs + failedJobs)); saveInferenceAiDto.setType(batchSheet.getRunningModelType()); inferenceResultCoreService.update(saveInferenceAiDto); } @@ -236,4 +236,11 @@ public class MapSheetInferenceJobService { saveInferenceAiDto.setType(type); inferenceResultCoreService.update(saveInferenceAiDto); } + + private String setStatus(int totalJobs, int completedJobs, int failedJobs) { + if (totalJobs <= (completedJobs + failedJobs)) { + return "COMPLETED"; + } + return "PROCESSING"; + } }