From 5ddf6dfeebe24ae321e3e2208cb830131139aa3a Mon Sep 17 00:00:00 2001 From: "gayoun.park" Date: Thu, 19 Feb 2026 14:43:14 +0900 Subject: [PATCH] =?UTF-8?q?=EB=AA=A8=EB=8D=B8=ED=95=99=EC=8A=B5=202?= =?UTF-8?q?=EB=8B=A8=EA=B3=84=20=ED=8C=A8=ED=82=A4=EC=A7=95=20=EC=8B=9C?= =?UTF-8?q?=EC=9E=91,=EC=A2=85=EB=A3=8C=EC=9D=BC=EC=8B=9C,=EC=83=81?= =?UTF-8?q?=ED=83=9C=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../training/model/dto/ModelTrainMngDto.java | 8 +++++++ .../core/ModelTestMetricsJobCoreService.java | 9 ++++++++ .../postgres/entity/ModelMasterEntity.java | 14 ++++++++++++- .../model/ModelDetailRepositoryImpl.java | 6 +++++- .../ModelTestMetricsJobRepositoryCustom.java | 5 +++++ .../ModelTestMetricsJobRepositoryImpl.java | 21 +++++++++++++++++++ .../service/ModelTestMetricsJobService.java | 21 +++++++++++++++++-- 7 files changed, 80 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/kamco/cd/training/model/dto/ModelTrainMngDto.java b/src/main/java/com/kamco/cd/training/model/dto/ModelTrainMngDto.java index 216fe45..3b4c0db 100644 --- a/src/main/java/com/kamco/cd/training/model/dto/ModelTrainMngDto.java +++ b/src/main/java/com/kamco/cd/training/model/dto/ModelTrainMngDto.java @@ -43,6 +43,10 @@ public class ModelTrainMngDto { private Long currentAttemptId; private String requestPath; + private String packingState; + private ZonedDateTime packingStrtDttm; + private ZonedDateTime packingEndDttm; + public String getStatusName() { if (this.statusCd == null || this.statusCd.isBlank()) return null; try { @@ -100,6 +104,10 @@ public class ModelTrainMngDto { public String getStep2Duration() { return formatDuration(this.step2StrtDttm, this.step2EndDttm); } + + public String getPackingDuration() { + return formatDuration(this.packingStrtDttm, this.packingEndDttm); + } } @Schema(name = "searchReq", description = "모델학습 관리 목록조회 파라미터") diff --git a/src/main/java/com/kamco/cd/training/postgres/core/ModelTestMetricsJobCoreService.java b/src/main/java/com/kamco/cd/training/postgres/core/ModelTestMetricsJobCoreService.java index 2f2fec7..e47cb84 100644 --- a/src/main/java/com/kamco/cd/training/postgres/core/ModelTestMetricsJobCoreService.java +++ b/src/main/java/com/kamco/cd/training/postgres/core/ModelTestMetricsJobCoreService.java @@ -4,6 +4,7 @@ import com.kamco.cd.training.postgres.repository.train.ModelTestMetricsJobReposi import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ModelMetricJsonDto; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ModelTestFileName; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ResponsePathDto; +import java.time.ZonedDateTime; import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -36,4 +37,12 @@ public class ModelTestMetricsJobCoreService { public ModelTestFileName findModelTestFileNames(Long modelId) { return modelTestMetricsJobRepository.findModelTestFileNames(modelId); } + + public void updatePackingStart(Long modelId, ZonedDateTime now) { + modelTestMetricsJobRepository.updatePackingStart(modelId, now); + } + + public void updatePackingEnd(Long modelId, ZonedDateTime now, String failSuccState) { + modelTestMetricsJobRepository.updatePackingEnd(modelId, now, failSuccState); + } } diff --git a/src/main/java/com/kamco/cd/training/postgres/entity/ModelMasterEntity.java b/src/main/java/com/kamco/cd/training/postgres/entity/ModelMasterEntity.java index 31b5b8b..ea2f6c2 100644 --- a/src/main/java/com/kamco/cd/training/postgres/entity/ModelMasterEntity.java +++ b/src/main/java/com/kamco/cd/training/postgres/entity/ModelMasterEntity.java @@ -112,6 +112,15 @@ public class ModelMasterEntity { @Column(name = "response_path") private String responsePath; + @Column(name = "packing_state") + private String packingState; + + @Column(name = "packing_strt_dttm") + private ZonedDateTime packingStrtDttm; + + @Column(name = "packing_end_dttm") + private ZonedDateTime packingEndDttm; + public ModelTrainMngDto.Basic toDto() { return new ModelTrainMngDto.Basic( this.id, @@ -128,6 +137,9 @@ public class ModelMasterEntity { this.trainType, this.modelNo, this.currentAttemptId, - this.requestPath); + this.requestPath, + this.packingState, + this.packingStrtDttm, + this.packingEndDttm); } } 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 74d5330..f6a45b3 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 @@ -9,6 +9,7 @@ import static com.kamco.cd.training.postgres.entity.QModelMetricsTestEntity.mode import static com.kamco.cd.training.postgres.entity.QModelMetricsTrainEntity.modelMetricsTrainEntity; import static com.kamco.cd.training.postgres.entity.QModelMetricsValidationEntity.modelMetricsValidationEntity; +import com.kamco.cd.training.common.enums.TrainStatusType; 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; @@ -277,7 +278,10 @@ public class ModelDetailRepositoryImpl implements ModelDetailRepositoryCustom { .select( Projections.constructor( ModelFileInfo.class, - modelMasterEntity.step2MetricSaveYn, + modelMasterEntity + .packingState + .eq(TrainStatusType.COMPLETED.getId()) + .coalesce(false), modelMasterEntity.modelVer)) .from(modelMasterEntity) .where(modelMasterEntity.uuid.eq(uuid)) diff --git a/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryCustom.java b/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryCustom.java index decfdd8..4c55743 100644 --- a/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryCustom.java +++ b/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryCustom.java @@ -3,6 +3,7 @@ package com.kamco.cd.training.postgres.repository.train; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ModelMetricJsonDto; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ModelTestFileName; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ResponsePathDto; +import java.time.ZonedDateTime; import java.util.List; public interface ModelTestMetricsJobRepositoryCustom { @@ -16,4 +17,8 @@ public interface ModelTestMetricsJobRepositoryCustom { ModelMetricJsonDto getTestMetricPackingInfo(Long modelId); ModelTestFileName findModelTestFileNames(Long modelId); + + void updatePackingStart(Long modelId, ZonedDateTime now); + + void updatePackingEnd(Long modelId, ZonedDateTime now, String failSuccState); } diff --git a/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryImpl.java b/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryImpl.java index 50594d6..065d0a6 100644 --- a/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryImpl.java +++ b/src/main/java/com/kamco/cd/training/postgres/repository/train/ModelTestMetricsJobRepositoryImpl.java @@ -12,6 +12,7 @@ import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.Properties; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ResponsePathDto; import com.querydsl.core.types.Projections; import com.querydsl.jpa.impl.JPAQueryFactory; +import java.time.ZonedDateTime; import java.util.List; import org.springframework.data.jpa.repository.support.QuerydslRepositorySupport; import org.springframework.jdbc.core.JdbcTemplate; @@ -114,4 +115,24 @@ public class ModelTestMetricsJobRepositoryImpl extends QuerydslRepositorySupport .where(modelMetricsTestEntity.model.id.eq(modelId)) .fetchOne(); } + + @Override + public void updatePackingStart(Long modelId, ZonedDateTime now) { + queryFactory + .update(modelMasterEntity) + .set(modelMasterEntity.packingStrtDttm, ZonedDateTime.now()) + .set(modelMasterEntity.packingState, TrainStatusType.READY.getId()) + .where(modelMasterEntity.id.eq(modelId)) + .execute(); + } + + @Override + public void updatePackingEnd(Long modelId, ZonedDateTime now, String failSuccState) { + queryFactory + .update(modelMasterEntity) + .set(modelMasterEntity.packingEndDttm, ZonedDateTime.now()) + .set(modelMasterEntity.packingState, failSuccState) + .where(modelMasterEntity.id.eq(modelId)) + .execute(); + } } diff --git a/src/main/java/com/kamco/cd/training/train/service/ModelTestMetricsJobService.java b/src/main/java/com/kamco/cd/training/train/service/ModelTestMetricsJobService.java index e643673..3afd342 100644 --- a/src/main/java/com/kamco/cd/training/train/service/ModelTestMetricsJobService.java +++ b/src/main/java/com/kamco/cd/training/train/service/ModelTestMetricsJobService.java @@ -2,6 +2,7 @@ package com.kamco.cd.training.train.service; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.SerializationFeature; +import com.kamco.cd.training.common.enums.TrainStatusType; import com.kamco.cd.training.postgres.core.ModelTestMetricsJobCoreService; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ModelMetricJsonDto; import com.kamco.cd.training.train.dto.ModelTrainMetricsDto.ModelTestFileName; @@ -14,6 +15,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.StandardOpenOption; +import java.time.ZonedDateTime; import java.util.ArrayList; import java.util.List; import java.util.Set; @@ -111,11 +113,18 @@ public class ModelTestMetricsJobService { modelTestMetricsJobCoreService.insertModelMetricsTest(batchArgs); + // test.csv 파일 읽어서 저장한 여부로만 사용하기 + modelTestMetricsJobCoreService.updateModelMetricsTrainSaveYn( + modelInfo.getModelId(), "step2"); + } catch (IOException e) { throw new RuntimeException(e); } // 패키징할 파일 만들기 + modelTestMetricsJobCoreService.updatePackingStart( + modelInfo.getModelId(), ZonedDateTime.now()); + ModelMetricJsonDto jsonDto = modelTestMetricsJobCoreService.getTestMetricPackingInfo(modelInfo.getModelId()); try { @@ -165,8 +174,16 @@ public class ModelTestMetricsJobService { throw new RuntimeException(e); } - zipFiles(files, zipPath); - modelTestMetricsJobCoreService.updateModelMetricsTrainSaveYn(modelInfo.getModelId(), "step2"); + try { + zipFiles(files, zipPath); + + modelTestMetricsJobCoreService.updatePackingEnd( + modelInfo.getModelId(), ZonedDateTime.now(), TrainStatusType.COMPLETED.getId()); + } catch (IOException e) { + modelTestMetricsJobCoreService.updatePackingEnd( + modelInfo.getModelId(), ZonedDateTime.now(), TrainStatusType.ERROR.getId()); + throw new RuntimeException(e); + } } }