From fd51f21ba692cd699c95c72deaaf64d205d0ec97 Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Fri, 8 May 2026 09:58:52 +0900 Subject: [PATCH] =?UTF-8?q?=EB=82=A9=ED=92=88=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=EC=A0=80=EC=9E=A5=20=EC=8B=9C=20uid=20=EC=88=98?= =?UTF-8?q?=EC=A0=95,=20=ED=8C=8C=EC=9D=BC=20=EC=97=85=EB=A1=9C=EB=93=9C?= =?UTF-8?q?=20=EA=B2=BD=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose-dev.yml | 2 +- .../cd/training/dataset/DatasetApiController.java | 2 ++ .../dataset/service/DatasetAsyncService.java | 9 +++++++-- .../training/dataset/service/DatasetService.java | 14 ++++++++++++++ src/main/resources/application-dev.yml | 9 +++++---- 5 files changed, 29 insertions(+), 7 deletions(-) diff --git a/docker-compose-dev.yml b/docker-compose-dev.yml index 63dc9ae..7680d5b 100644 --- a/docker-compose-dev.yml +++ b/docker-compose-dev.yml @@ -18,7 +18,7 @@ services: - SPRING_PROFILES_ACTIVE=dev - TZ=Asia/Seoul volumes: - - /data/training:/data/training + - /backup/data/training:/backup/data/training - /var/run/docker.sock:/var/run/docker.sock networks: - kamco-cds diff --git a/src/main/java/com/kamco/cd/training/dataset/DatasetApiController.java b/src/main/java/com/kamco/cd/training/dataset/DatasetApiController.java index c8589a3..f74fd61 100644 --- a/src/main/java/com/kamco/cd/training/dataset/DatasetApiController.java +++ b/src/main/java/com/kamco/cd/training/dataset/DatasetApiController.java @@ -293,6 +293,8 @@ public class DatasetApiController { DatasetService.validateTrainValTestDirs(req.getFilePath()); // 파일 개수 검증 DatasetService.validateDirFileCount(req.getFilePath()); + // 폴더명(uid)으로 등록한 건이 있는지 체크 + datasetService.validateExistsUidChk(req.getFilePath()); datasetAsyncService.insertDeliveriesDatasetAsync(req); return ApiResponseDto.createOK("ok"); diff --git a/src/main/java/com/kamco/cd/training/dataset/service/DatasetAsyncService.java b/src/main/java/com/kamco/cd/training/dataset/service/DatasetAsyncService.java index 8c6db6f..0d46f35 100644 --- a/src/main/java/com/kamco/cd/training/dataset/service/DatasetAsyncService.java +++ b/src/main/java/com/kamco/cd/training/dataset/service/DatasetAsyncService.java @@ -4,7 +4,8 @@ import com.kamco.cd.training.common.enums.LearnDataRegister; import com.kamco.cd.training.dataset.dto.DatasetDto.AddDeliveriesReq; import com.kamco.cd.training.dataset.dto.DatasetDto.DatasetMngRegDto; import com.kamco.cd.training.postgres.core.DatasetCoreService; -import java.util.UUID; +import java.nio.file.Path; +import java.nio.file.Paths; import lombok.RequiredArgsConstructor; import lombok.extern.log4j.Log4j2; import org.springframework.scheduling.annotation.Async; @@ -45,7 +46,11 @@ public class DatasetAsyncService { try { // ===== 1. UID 생성 ===== - String uid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); + // String uid = UUID.randomUUID().toString().replace("-", "").toUpperCase(); + + // 26-05-08: UID를 생성하지 않고 folder name 을 uid 로 저장하기 -> req.getFilePath() + Path selectedPath = Paths.get(req.getFilePath()); + String uid = selectedPath.getFileName().toString(); log.info("{} 생성된 UID: {}", LOG_PREFIX, uid); // ===== 2. 마스터 데이터 생성 ===== diff --git a/src/main/java/com/kamco/cd/training/dataset/service/DatasetService.java b/src/main/java/com/kamco/cd/training/dataset/service/DatasetService.java index a2ca0da..43fbaec 100644 --- a/src/main/java/com/kamco/cd/training/dataset/service/DatasetService.java +++ b/src/main/java/com/kamco/cd/training/dataset/service/DatasetService.java @@ -676,4 +676,18 @@ public class DatasetService { total, System.currentTimeMillis() - start); } + + public void validateExistsUidChk(String filePath) { + Path selectedPath = Paths.get(filePath); + String uid = selectedPath.getFileName().toString(); + + // 같은 uid 로 등록한 파일이 있는지 확인 + Long existsCnt = datasetCoreService.findDatasetByUidExistsCnt(uid); + if (existsCnt > 0) { + throw new CustomApiException( + ApiResponseCode.DUPLICATE_DATA.getId(), + HttpStatus.CONFLICT, + "이미 등록된 회차 데이터 파일입니다. 확인 부탁드립니다."); + } + } } diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 0fa621a..0fef04f 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -50,16 +50,17 @@ swagger: file: - dataset-dir: /data/training/request/ + base_path: /backup/data/training + dataset-dir: ${file.base_path}/request/ dataset-tmp-dir: ${file.dataset-dir}tmp/ - pt-path: /data/training/response/v6-cls-checkpoints/ + pt-path: ${file.base_path}/response/v6-cls-checkpoints/ pt-FileName: yolov8_6th-6m.pt train: docker: image: kamco-cd-train:latest - base_path: /data/training + base_path: /backup/data/training request_dir: ${train.docker.base_path}/request response_dir: ${train.docker.base_path}/response symbolic_link_dir: ${train.docker.base_path}/tmp @@ -71,4 +72,4 @@ hyper: parameter: gpus: 1 gpu-ids: 0 - batch-size: 10 \ No newline at end of file + batch-size: 10