From dc0f9689268291ef32eff6621543f7246d2a163d Mon Sep 17 00:00:00 2001 From: teddy Date: Tue, 27 Jan 2026 16:16:02 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AA=A8=EB=8D=B8=EB=93=B1=EB=A1=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/enums/FileUploadStatus.java | 3 +- .../model/service/ModelMngService.java | 49 ++++++++++++++++++- .../upload/service/UploadService.java | 4 +- 3 files changed, 52 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/kamco/cd/kamcoback/common/enums/FileUploadStatus.java b/src/main/java/com/kamco/cd/kamcoback/common/enums/FileUploadStatus.java index d6c1b004..d81ab6eb 100644 --- a/src/main/java/com/kamco/cd/kamcoback/common/enums/FileUploadStatus.java +++ b/src/main/java/com/kamco/cd/kamcoback/common/enums/FileUploadStatus.java @@ -12,7 +12,8 @@ public enum FileUploadStatus implements EnumType { INIT("초기화"), UPLOADING("업로드중"), DONE("업로드완료"), - MERGED("병합완료"); + MERGED("병합완료"), + MERGE_FAIL("병합 실패"); private final String desc; diff --git a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java index 79efd3fd..fec4824e 100644 --- a/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java +++ b/src/main/java/com/kamco/cd/kamcoback/model/service/ModelMngService.java @@ -19,12 +19,14 @@ import java.time.LocalDate; import java.util.List; import java.util.UUID; import lombok.RequiredArgsConstructor; +import lombok.extern.log4j.Log4j2; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.domain.Page; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @Service +@Log4j2 @RequiredArgsConstructor public class ModelMngService { @@ -71,11 +73,18 @@ public class ModelMngService { } public ApiResponseDto.ResponseObj insertModel(ModelMngDto.AddReq addReq) { + UUID uuid = UUID.randomUUID(); addReq.setUuid(uuid); addReq.setClsModelVersion(addReq.getModelVer()); addReq.setPriority(0d); + log.info( + "insertModel start: uuid={}, fileName={}, filePath={}", + uuid, + addReq.getFileName(), + addReq.getFilePath()); + ModelUploadResDto modelUploadResDto = new ModelUploadResDto(); try { FIleChecker.unzip(addReq.getFileName(), addReq.getFilePath()); @@ -88,6 +97,14 @@ public class ModelMngService { || modelUploadResDto.getClsModelFileName() == null || modelUploadResDto.getClsModelFileName().isEmpty()) { + log.warn( + "model file missing: uuid={}, path={}, cdModel={}, cdConfig={}, clsModel={}", + uuid, + addReq.getFilePath(), + modelUploadResDto.getCdModelFileName(), + modelUploadResDto.getCdModelConfigFileName(), + modelUploadResDto.getClsModelFileName()); + return new ApiResponseDto.ResponseObj( ApiResponseCode.NOT_FOUND, "pth,json,py파일이 모두 존재하지 않습니다"); } @@ -101,12 +118,20 @@ public class ModelMngService { } catch (IOException e) { // throw new RuntimeException(e); - + log.error( + "unzip or scan failed: uuid={}, fileName={}, filePath={}", + uuid, + addReq.getFileName(), + addReq.getFilePath(), + e); return new ApiResponseDto.ResponseObj(ApiResponseCode.NOT_FOUND, "파일이 존재하지 않습니다"); } Long modelUid = modelMngCoreService.insertModel(addReq); + log.info( + "model inserted: uuid={}, modelUid={}, modelVer={}", uuid, modelUid, addReq.getModelVer()); + ModelMetricAddReq modelMetricAddReq = new ModelMetricAddReq(); modelMetricAddReq.setModelUid(modelUid); modelMetricAddReq.setModelVerUid(modelUid); @@ -136,14 +161,28 @@ public class ModelMngService { modelMetricAddReq.setIou(iou); } catch (IOException e) { + log.error("metric json parse failed: uuid={}, jsonPath={}", uuid, filePath, e); return new ApiResponseDto.ResponseObj(ApiResponseCode.NOT_FOUND, "JSON파일 오류"); } modelMngCoreService.insertModelResultMetric(modelMetricAddReq); + log.info( + "model metric inserted: modelUid={}, f1={}, precision={}, recall={}, iou={}", + modelUid, + modelMetricAddReq.getF1Score(), + modelMetricAddReq.getPrecision(), + modelMetricAddReq.getRecall(), + modelMetricAddReq.getIou()); + String zipFilePath = addReq.getFilePath() + "/" + addReq.getFileName(); boolean isDeleted = FIleChecker.deleteFile(zipFilePath); + if (!isDeleted) { + log.warn("zip file delete failed: uuid={}, path={}", uuid, zipFilePath); + } + + log.info("insertModel success: uuid={}, modelUid={}", uuid, modelUid); return new ApiResponseDto.ResponseObj(ApiResponseDto.ApiResponseCode.OK, "등록되었습니다."); } @@ -174,6 +213,14 @@ public class ModelMngService { } */ + log.info( + "end uploadChunkModelFile: res={}, resMsg={}, uuid={}, filePath={}, fileName={}", + modelUploadResDto.getRes(), + modelUploadResDto.getResMsg(), + modelUploadResDto.getUuid(), + modelUploadResDto.getFilePath(), + modelUploadResDto.getFileName()); + return modelUploadResDto; } diff --git a/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java b/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java index 7372b7e2..6d41bf62 100644 --- a/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java +++ b/src/main/java/com/kamco/cd/kamcoback/upload/service/UploadService.java @@ -123,7 +123,7 @@ public class UploadService { try { this.mergeChunks(tmpDataSetDir, fianlDir, fileName, chunkTotalIndex); - upAddReqDto.setStatus("MERGED"); + upAddReqDto.setStatus(FileUploadStatus.MERGED.name()); uploadSessionCoreService.updateUploadSessionStatus(upAddReqDto); log.info( @@ -135,7 +135,7 @@ public class UploadService { } catch (IOException e) { // 실패 상태도 남기는 걸 강추 - upAddReqDto.setStatus("MERGE_FAIL"); + upAddReqDto.setStatus(FileUploadStatus.MERGE_FAIL.name()); uploadSessionCoreService.updateUploadSessionStatus(upAddReqDto); log.error(