diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java index 4f3167ff..51158a32 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceDetailDto.java @@ -391,4 +391,17 @@ public class InferenceDetailDto { return PageRequest.of(page, size); } } + + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class InferenceBatchSheet { + + private Long m1BatchId; + private Long m2BatchId; + private Long m3BatchId; + private String status; + private String runningModelType; + } } diff --git a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java index c97942d3..057b81fa 100644 --- a/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java +++ b/src/main/java/com/kamco/cd/kamcoback/inference/dto/InferenceResultDto.java @@ -297,4 +297,17 @@ public class InferenceResultDto { return desc; } } + + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class SaveInferenceAiDto { + + private UUID uuid; + private Long batchId; + private String status; + private String type; + private ZonedDateTime inferStartDttm; + } } 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 e78e23a5..42903c8c 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 @@ -15,6 +15,7 @@ import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceServerSt import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetNumDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetScope; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList; +import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.SaveInferenceAiDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Status; import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto; import com.kamco.cd.kamcoback.inference.dto.InferenceSendDto.pred_requests_areas; @@ -25,6 +26,7 @@ import com.kamco.cd.kamcoback.postgres.core.InferenceResultCoreService; import com.kamco.cd.kamcoback.postgres.core.MapSheetMngCoreService; import com.kamco.cd.kamcoback.postgres.core.ModelMngCoreService; import jakarta.validation.constraints.NotNull; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -200,7 +202,14 @@ public class InferenceResultService { m3.setPred_requests_areas(predRequestsAreas); Long batchId = this.ensureAccepted(m1); - inferenceResultCoreService.update(uuid, batchId, Status.IN_PROGRESS.getId()); + + SaveInferenceAiDto saveInferenceAiDto = new SaveInferenceAiDto(); + saveInferenceAiDto.setUuid(uuid); + saveInferenceAiDto.setBatchId(batchId); + saveInferenceAiDto.setStatus(Status.IN_PROGRESS.getId()); + saveInferenceAiDto.setType("M1"); + saveInferenceAiDto.setInferStartDttm(ZonedDateTime.now()); + inferenceResultCoreService.update(saveInferenceAiDto); } /** 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 34419e5f..2cbd3cb7 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 @@ -4,11 +4,13 @@ import com.kamco.cd.kamcoback.common.enums.CommonUseStatus; import com.kamco.cd.kamcoback.common.utils.UserUtil; import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto; import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.Dashboard; +import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.InferenceBatchSheet; import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.MapSheet; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.InferenceServerStatusDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.MapSheetNumDto; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.ResultList; +import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.SaveInferenceAiDto; import com.kamco.cd.kamcoback.postgres.entity.MapInkx5kEntity; import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataInferenceEntity; import com.kamco.cd.kamcoback.postgres.entity.MapSheetAnalDataInferenceGeomEntity; @@ -218,25 +220,42 @@ public class InferenceResultCoreService { .toList(); } - public void update(UUID uuid, Long batchId, String status) { + public void update(SaveInferenceAiDto request) { MapSheetLearnEntity entity = mapSheetLearnRepository - .getInferenceResultByUuid(uuid) - .orElseThrow(() -> new EntityNotFoundException(uuid.toString())); + .getInferenceResultByUuid(request.getUuid()) + .orElseThrow(() -> new EntityNotFoundException()); - entity.setBatchId(batchId); - entity.setStatus(status); + if (request.getType().equals("M1")) { + entity.setM1ModelBatchId(request.getBatchId()); + } else if (request.getType().equals("M2")) { + entity.setM2ModelBatchId(request.getBatchId()); + } else if (request.getType().equals("M3")) { + entity.setM3ModelBatchId(request.getBatchId()); + } + + entity.setStatus(request.getStatus()); + if (request.getInferStartDttm() != null) { + entity.setInferStartDttm(request.getInferStartDttm()); + } } public List getInferenceServerStatusList() { return mapSheetLearnRepository.getInferenceServerStatusList(); } - public Long getInferenceResultByStatus(String status) { + public InferenceBatchSheet getInferenceResultByStatus(String status) { MapSheetLearnEntity entity = mapSheetLearnRepository .getInferenceResultByStatus(status) .orElseThrow(() -> new EntityNotFoundException(status)); - return entity.getBatchId(); + + InferenceBatchSheet inferenceBatchSheet = new InferenceBatchSheet(); + inferenceBatchSheet.setM1BatchId(entity.getM1ModelBatchId()); + inferenceBatchSheet.setM2BatchId(entity.getM2ModelBatchId()); + inferenceBatchSheet.setM3BatchId(entity.getM3ModelBatchId()); + inferenceBatchSheet.setStatus(entity.getStatus()); + inferenceBatchSheet.setRunningModelType(entity.getRunningModelType()); + return inferenceBatchSheet; } } diff --git a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java index 8e70a514..f0a2093d 100644 --- a/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java +++ b/src/main/java/com/kamco/cd/kamcoback/postgres/entity/MapSheetLearnEntity.java @@ -103,8 +103,20 @@ public class MapSheetLearnEntity { @Column(name = "updated_uid") private Long updatedUid; - @Column(name = "batch_id") - private Long batchId; + @Column(name = "running_model_type") + private String runningModelType; + + @Column(name = "m1_model_batch_id") + private Long m1ModelBatchId; + + @Column(name = "m2_model_batch_id") + private Long m2ModelBatchId; + + @Column(name = "m3_model_batch_id") + private Long m3ModelBatchId; + + @Column(name = "detect_end_cnt") + private Long detectEndCnt; public InferenceResultDto.ResultList toDto() { return new InferenceResultDto.ResultList( 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 9ef683bd..80b57955 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 @@ -4,6 +4,7 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient; import com.kamco.cd.kamcoback.config.resttemplate.ExternalHttpClient.ExternalCallResult; +import com.kamco.cd.kamcoback.inference.dto.InferenceDetailDto.InferenceBatchSheet; import com.kamco.cd.kamcoback.inference.dto.InferenceResultDto.Status; import com.kamco.cd.kamcoback.postgres.core.InferenceResultCoreService; import com.kamco.cd.kamcoback.scheduler.dto.JobStatusDto; @@ -37,10 +38,10 @@ public class MapSheetInferenceJobService { try { // TODO: 배치 로직 작성 - Long batchId = + InferenceBatchSheet batchSheet = inferenceResultCoreService.getInferenceResultByStatus(Status.IN_PROGRESS.getId()); - if (batchId == null) { + if (batchSheet == null) { return; } @@ -48,6 +49,16 @@ public class MapSheetInferenceJobService { headers.setContentType(MediaType.APPLICATION_JSON); headers.setAccept(List.of(MediaType.APPLICATION_JSON)); + Long batchId = 0L; + + if (batchSheet.getM3BatchId() != null) { + batchId = batchSheet.getM3BatchId(); + } else if (batchSheet.getM2BatchId() != null) { + batchId = batchSheet.getM2BatchId(); + } else if (batchSheet.getM1BatchId() != null) { + batchId = batchSheet.getM1BatchId(); + } + String url = batchUrl + "/" + batchId; ExternalCallResult result = @@ -61,6 +72,12 @@ public class MapSheetInferenceJobService { String json = result.body(); JobStatusDto dto = objectMapper.readValue(json, JobStatusDto.class); + if ("COMPLETED".equals(dto.getStatus())) { + String type = batchSheet.getRunningModelType(); + + // if(type.equals("M3")) + } + System.out.println(dto); Thread.sleep(3000); // 예시: 처리 시간 3초