From e1ceb769dd7f92f8bf3433787548d3e49b0f7559 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Thu, 12 Feb 2026 22:47:13 +0900 Subject: [PATCH] =?UTF-8?q?=ED=95=99=EC=8A=B5=EB=8D=B0=EC=9D=B4=ED=84=B0?= =?UTF-8?q?=20=EB=8B=A4=EC=9A=B4=EB=A1=9C=EB=93=9C=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=EC=A0=95=EB=B3=B4=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/ModelTrainDetailApiController.java | 22 +++++++++++++++++++ .../model/dto/ModelTrainDetailDto.java | 9 ++++++++ .../service/ModelTrainDetailService.java | 5 +++++ .../core/ModelTrainDetailCoreService.java | 5 +++++ .../model/ModelDetailRepositoryCustom.java | 3 +++ .../model/ModelDetailRepositoryImpl.java | 14 ++++++++++++ 6 files changed, 58 insertions(+) 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(); + } }