[KC-99] 추론 진행여부 api 추가, spotless 적용

This commit is contained in:
2026-01-13 13:57:59 +09:00
parent 4b3ddcac9a
commit ca4a56721f
6 changed files with 77 additions and 10 deletions

View File

@@ -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<String> getProcessing() {
return ApiResponseDto.ok(inferenceResultService.getProcessing());
}
@Operation(summary = "년도 목록 조회", description = "어드민 홈 > 추론관리 > 추론목록 > 변화탐지 실행 정보 입력 > 년도 목록 조회")
@ApiResponses(
value = {

View File

@@ -74,6 +74,15 @@ public class InferenceResultService {
return inferenceResultCoreService.getInferenceResultList(req);
}
/**
* 추론 진행중인지 확인
*
* @return
*/
public String getProcessing() {
return inferenceResultCoreService.getProcessing();
}
/**
* 변화탐지 실행 정보 생성
*

View File

@@ -341,4 +341,13 @@ public class InferenceResultCoreService {
public InferenceStatusDetailDto getInferenceStatus(UUID uuid) {
return mapSheetLearnRepository.getInferenceStatus(uuid);
}
/**
* 추론 진행중인지 확인
*
* @return
*/
public String getProcessing() {
return mapSheetLearnRepository.getProcessing();
}
}

View File

@@ -22,5 +22,7 @@ public interface MapSheetLearnRepositoryCustom {
InferenceProgressDto getInferenceAiResultById(Long id, UUID modelUuid);
public InferenceStatusDetailDto getInferenceStatus(UUID uuid);
InferenceStatusDetailDto getInferenceStatus(UUID uuid);
String getProcessing();
}

View File

@@ -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";
}
}

View File

@@ -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";
}
}