diff --git a/src/main/java/com/kamco/cd/training/model/ModelTrainDetailApiController.java b/src/main/java/com/kamco/cd/training/model/ModelTrainDetailApiController.java index 9118d2e..c4af03f 100644 --- a/src/main/java/com/kamco/cd/training/model/ModelTrainDetailApiController.java +++ b/src/main/java/com/kamco/cd/training/model/ModelTrainDetailApiController.java @@ -5,6 +5,7 @@ import com.kamco.cd.training.config.api.ApiResponseDto; import com.kamco.cd.training.model.dto.ModelTrainDetailDto; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.MappingDataset; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelBestEpoch; +import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelFileInfo; 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; @@ -282,4 +283,25 @@ public class ModelTrainDetailApiController { return rangeDownloadResponder.buildZipResponse(zipPath, info.getModelVer() + ".zip", request); } + + @Operation(summary = "모델관리 > 모델 상세 > 파일 정보", description = "모델 상세 > 파일 정보 API") + @ApiResponses( + value = { + @ApiResponse( + responseCode = "200", + description = "조회 성공", + content = + @Content( + mediaType = "application/json", + schema = @Schema(implementation = TransferDetailDto.class))), + @ApiResponse(responseCode = "404", description = "데이터셋을 찾을 수 없음", content = @Content), + @ApiResponse(responseCode = "500", description = "서버 오류", content = @Content) + }) + @GetMapping("/file-info/{uuid}") + public ApiResponseDto getModelTrainFileInfo( + @Parameter(description = "모델 uuid", example = "95cb116c-380a-41c0-98d8-4d1142f15bbf") + @PathVariable + UUID uuid) { + return ApiResponseDto.ok(modelTrainDetailService.getModelTrainFileInfo(uuid)); + } } diff --git a/src/main/java/com/kamco/cd/training/model/dto/ModelTrainDetailDto.java b/src/main/java/com/kamco/cd/training/model/dto/ModelTrainDetailDto.java index 912588b..e93e4c9 100644 --- a/src/main/java/com/kamco/cd/training/model/dto/ModelTrainDetailDto.java +++ b/src/main/java/com/kamco/cd/training/model/dto/ModelTrainDetailDto.java @@ -245,4 +245,13 @@ public class ModelTrainDetailDto { private Float iou; private Float accuracy; } + + @Getter + @Setter + @NoArgsConstructor + @AllArgsConstructor + public static class ModelFileInfo { + private Boolean fileExistsYn; + private String fileName; + } } diff --git a/src/main/java/com/kamco/cd/training/model/service/ModelTrainDetailService.java b/src/main/java/com/kamco/cd/training/model/service/ModelTrainDetailService.java index 486fa16..34f8480 100644 --- a/src/main/java/com/kamco/cd/training/model/service/ModelTrainDetailService.java +++ b/src/main/java/com/kamco/cd/training/model/service/ModelTrainDetailService.java @@ -7,6 +7,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.DetailSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.HyperSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.MappingDataset; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelBestEpoch; +import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelFileInfo; 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; @@ -116,4 +117,8 @@ public class ModelTrainDetailService { public ModelBestEpoch getModelTrainBestEpoch(UUID uuid) { return modelTrainDetailCoreService.getModelTrainBestEpoch(uuid); } + + public ModelFileInfo getModelTrainFileInfo(UUID uuid) { + return modelTrainDetailCoreService.getModelTrainFileInfo(uuid); + } } diff --git a/src/main/java/com/kamco/cd/training/postgres/core/ModelTrainDetailCoreService.java b/src/main/java/com/kamco/cd/training/postgres/core/ModelTrainDetailCoreService.java index a0efb09..7573f3b 100644 --- a/src/main/java/com/kamco/cd/training/postgres/core/ModelTrainDetailCoreService.java +++ b/src/main/java/com/kamco/cd/training/postgres/core/ModelTrainDetailCoreService.java @@ -8,6 +8,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.DetailSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.HyperSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.MappingDataset; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelBestEpoch; +import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelFileInfo; 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; @@ -97,4 +98,8 @@ public class ModelTrainDetailCoreService { public ModelBestEpoch getModelTrainBestEpoch(UUID uuid) { return modelDetailRepository.getModelTrainBestEpoch(uuid); } + + public ModelFileInfo getModelTrainFileInfo(UUID uuid) { + return modelDetailRepository.getModelTrainFileInfo(uuid); + } } diff --git a/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryCustom.java b/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryCustom.java index 2c74db6..1f7cf09 100644 --- a/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryCustom.java @@ -4,6 +4,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.DetailSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.HyperSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.MappingDataset; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelBestEpoch; +import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelFileInfo; 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; @@ -34,4 +35,6 @@ public interface ModelDetailRepositoryCustom { List getModelTestMetricResult(UUID uuid); ModelBestEpoch getModelTrainBestEpoch(UUID uuid); + + ModelFileInfo getModelTrainFileInfo(UUID uuid); } diff --git a/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryImpl.java b/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryImpl.java index 779368c..74d5330 100644 --- a/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/training/postgres/repository/model/ModelDetailRepositoryImpl.java @@ -13,6 +13,7 @@ import com.kamco.cd.training.model.dto.ModelTrainDetailDto.DetailSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.HyperSummary; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.MappingDataset; import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelBestEpoch; +import com.kamco.cd.training.model.dto.ModelTrainDetailDto.ModelFileInfo; 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; @@ -269,4 +270,17 @@ public class ModelDetailRepositoryImpl implements ModelDetailRepositoryCustom { modelMetricsTrainEntity.epoch.eq(modelMasterEntity.getBestEpoch())) .fetchOne(); } + + @Override + public ModelFileInfo getModelTrainFileInfo(UUID uuid) { + return queryFactory + .select( + Projections.constructor( + ModelFileInfo.class, + modelMasterEntity.step2MetricSaveYn, + modelMasterEntity.modelVer)) + .from(modelMasterEntity) + .where(modelMasterEntity.uuid.eq(uuid)) + .fetchOne(); + } }