모델학습관리 > 모델별 진행 상황 API 추가
This commit is contained in:
@@ -11,6 +11,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelTrainMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelValidationMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.TransferDetailDto;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.Basic;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.ModelProgressStepDto;
|
||||
import com.kamco.cd.training.model.service.ModelTrainDetailService;
|
||||
import com.kamco.cd.training.model.service.ModelTrainMngService;
|
||||
import io.swagger.v3.oas.annotations.Operation;
|
||||
@@ -304,4 +305,25 @@ public class ModelTrainDetailApiController {
|
||||
UUID uuid) {
|
||||
return ApiResponseDto.ok(modelTrainDetailService.getModelTrainFileInfo(uuid));
|
||||
}
|
||||
|
||||
@Operation(summary = "모델관리 > 모델별 진행 상황", description = "모델관리 > 모델별 진행 상황 API")
|
||||
@ApiResponses(
|
||||
value = {
|
||||
@ApiResponse(
|
||||
responseCode = "200",
|
||||
description = "조회 성공",
|
||||
content =
|
||||
@Content(
|
||||
mediaType = "application/json",
|
||||
schema = @Schema(implementation = ModelProgressStepDto.class))),
|
||||
@ApiResponse(responseCode = "404", description = "데이터셋을 찾을 수 없음", content = @Content),
|
||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||
})
|
||||
@GetMapping("/progress/{uuid}")
|
||||
public ApiResponseDto<List<ModelProgressStepDto>> findModelTrainProgressInfo(
|
||||
@Parameter(description = "모델 uuid", example = "95cb116c-380a-41c0-98d8-4d1142f15bbf")
|
||||
@PathVariable
|
||||
UUID uuid) {
|
||||
return ApiResponseDto.ok(modelTrainDetailService.findModelTrainProgressInfo(uuid));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -312,4 +312,16 @@ public class ModelTrainMngDto {
|
||||
return formatDuration(this.packingStrtDttm, this.packingEndDttm);
|
||||
}
|
||||
}
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
public static class ModelProgressStepDto {
|
||||
|
||||
private int step;
|
||||
private String status;
|
||||
@JsonFormatDttm private ZonedDateTime startTime;
|
||||
@JsonFormatDttm private ZonedDateTime endTime;
|
||||
private boolean isError;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelValidationMetric
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.TransferDetailDto;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.TransferHyperSummary;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.Basic;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.ModelProgressStepDto;
|
||||
import com.kamco.cd.training.postgres.core.ModelTrainDetailCoreService;
|
||||
import com.kamco.cd.training.postgres.core.ModelTrainMngCoreService;
|
||||
import java.util.ArrayList;
|
||||
@@ -121,4 +122,8 @@ public class ModelTrainDetailService {
|
||||
public ModelFileInfo getModelTrainFileInfo(UUID uuid) {
|
||||
return modelTrainDetailCoreService.getModelTrainFileInfo(uuid);
|
||||
}
|
||||
|
||||
public List<ModelProgressStepDto> findModelTrainProgressInfo(UUID uuid) {
|
||||
return modelTrainDetailCoreService.findModelTrainProgressInfo(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelTrainMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelValidationMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.TransferHyperSummary;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.Basic;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.ModelProgressStepDto;
|
||||
import com.kamco.cd.training.postgres.entity.ModelMasterEntity;
|
||||
import com.kamco.cd.training.postgres.repository.model.ModelConfigRepository;
|
||||
import com.kamco.cd.training.postgres.repository.model.ModelDetailRepository;
|
||||
@@ -102,4 +103,8 @@ public class ModelTrainDetailCoreService {
|
||||
public ModelFileInfo getModelTrainFileInfo(UUID uuid) {
|
||||
return modelDetailRepository.getModelTrainFileInfo(uuid);
|
||||
}
|
||||
|
||||
public List<ModelProgressStepDto> findModelTrainProgressInfo(UUID uuid) {
|
||||
return modelDetailRepository.findModelTrainProgressInfo(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelTestMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelTrainMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelValidationMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.TransferHyperSummary;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.ModelProgressStepDto;
|
||||
import com.kamco.cd.training.postgres.entity.ModelMasterEntity;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
@@ -37,4 +38,6 @@ public interface ModelDetailRepositoryCustom {
|
||||
ModelBestEpoch getModelTrainBestEpoch(UUID uuid);
|
||||
|
||||
ModelFileInfo getModelTrainFileInfo(UUID uuid);
|
||||
|
||||
List<ModelProgressStepDto> findModelTrainProgressInfo(UUID uuid);
|
||||
}
|
||||
|
||||
@@ -19,12 +19,14 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelTestMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelTrainMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelValidationMetrics;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainDetailDto.TransferHyperSummary;
|
||||
import com.kamco.cd.training.model.dto.ModelTrainMngDto.ModelProgressStepDto;
|
||||
import com.kamco.cd.training.postgres.entity.ModelMasterEntity;
|
||||
import com.kamco.cd.training.postgres.entity.QModelHyperParamEntity;
|
||||
import com.kamco.cd.training.postgres.entity.QModelMasterEntity;
|
||||
import com.querydsl.core.types.Projections;
|
||||
import com.querydsl.jpa.JPAExpressions;
|
||||
import com.querydsl.jpa.impl.JPAQueryFactory;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.UUID;
|
||||
@@ -287,4 +289,70 @@ public class ModelDetailRepositoryImpl implements ModelDetailRepositoryCustom {
|
||||
.where(modelMasterEntity.uuid.eq(uuid))
|
||||
.fetchOne();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ModelProgressStepDto> findModelTrainProgressInfo(UUID uuid) {
|
||||
ModelMasterEntity entity = findByModelByUUID(uuid);
|
||||
if (entity == null) {
|
||||
return List.of();
|
||||
}
|
||||
|
||||
List<ModelProgressStepDto> steps = new ArrayList<>();
|
||||
|
||||
// 0단계 : 대기 상태
|
||||
steps.add(
|
||||
ModelProgressStepDto.builder()
|
||||
.step(0)
|
||||
.status(TrainStatusType.READY.getId())
|
||||
.startTime(entity.getCreatedDttm())
|
||||
.endTime(null)
|
||||
.isError(false)
|
||||
.build());
|
||||
|
||||
// 1단계 : Train/Validation 실행
|
||||
boolean step1Active =
|
||||
entity.getStep1StrtDttm() != null
|
||||
&& !TrainStatusType.READY.getId().equals(entity.getStep1State());
|
||||
|
||||
if (step1Active) {
|
||||
steps.add(
|
||||
ModelProgressStepDto.builder()
|
||||
.step(1)
|
||||
.status(entity.getStep1State())
|
||||
.startTime(entity.getStep1StrtDttm())
|
||||
.endTime(entity.getStep1EndDttm())
|
||||
.isError(TrainStatusType.ERROR.getId().equals(entity.getStep1State()))
|
||||
.build());
|
||||
}
|
||||
|
||||
// 2단계 : Test 실행
|
||||
boolean step2Done = entity.getStep2State() != null;
|
||||
|
||||
if (step2Done) {
|
||||
steps.add(
|
||||
ModelProgressStepDto.builder()
|
||||
.step(2)
|
||||
.status(entity.getStep2State())
|
||||
.startTime(entity.getStep2StrtDttm())
|
||||
.endTime(entity.getStep2EndDttm())
|
||||
.isError(TrainStatusType.ERROR.getId().equals(entity.getStep2State()))
|
||||
.build());
|
||||
}
|
||||
|
||||
// 3단계 : 패키징
|
||||
boolean step3Done = entity.getPackingState() != null;
|
||||
|
||||
if (step3Done) {
|
||||
steps.add(
|
||||
ModelProgressStepDto.builder()
|
||||
.step(3)
|
||||
.status(entity.getPackingState())
|
||||
.startTime(entity.getPackingStrtDttm())
|
||||
.endTime(entity.getPackingEndDttm())
|
||||
.isError(TrainStatusType.ERROR.getId().equals(entity.getPackingState()))
|
||||
.build());
|
||||
}
|
||||
|
||||
return steps;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user