feat/training_260202 #17
@@ -164,6 +164,7 @@ public class ApiResponseDto<T> {
|
|||||||
NOT_FOUND_USER_FOR_EMAIL("이메일로 유저를 찾을 수 없습니다."),
|
NOT_FOUND_USER_FOR_EMAIL("이메일로 유저를 찾을 수 없습니다."),
|
||||||
NOT_FOUND_USER("사용자를 찾을 수 없습니다."),
|
NOT_FOUND_USER("사용자를 찾을 수 없습니다."),
|
||||||
UNPROCESSABLE_ENTITY("이 데이터는 삭제할 수 없습니다."),
|
UNPROCESSABLE_ENTITY("이 데이터는 삭제할 수 없습니다."),
|
||||||
|
UNPROCESSABLE_ENTITY_UPDATE("이 데이터는 수정할 수 없습니다."),
|
||||||
LOGIN_ID_NOT_FOUND("아이디를 잘못 입력하셨습니다."),
|
LOGIN_ID_NOT_FOUND("아이디를 잘못 입력하셨습니다."),
|
||||||
LOGIN_PASSWORD_MISMATCH("비밀번호를 잘못 입력하셨습니다."),
|
LOGIN_PASSWORD_MISMATCH("비밀번호를 잘못 입력하셨습니다."),
|
||||||
LOGIN_PASSWORD_EXCEEDED("비밀번호 오류 횟수를 초과하여 이용하실 수 없습니다.\n로그인 오류에 대해 관리자에게 문의하시기 바랍니다."),
|
LOGIN_PASSWORD_EXCEEDED("비밀번호 오류 횟수를 초과하여 이용하실 수 없습니다.\n로그인 오류에 대해 관리자에게 문의하시기 바랍니다."),
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public class HyperParamApiController {
|
|||||||
mediaType = "application/json",
|
mediaType = "application/json",
|
||||||
schema = @Schema(implementation = String.class))),
|
schema = @Schema(implementation = String.class))),
|
||||||
@ApiResponse(responseCode = "400", description = "잘못된 요청", content = @Content),
|
@ApiResponse(responseCode = "400", description = "잘못된 요청", content = @Content),
|
||||||
|
@ApiResponse(responseCode = "422", description = "HPs_0001 수정 불가", content = @Content),
|
||||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||||
})
|
})
|
||||||
@PutMapping("/{uuid}")
|
@PutMapping("/{uuid}")
|
||||||
@@ -132,7 +133,7 @@ public class HyperParamApiController {
|
|||||||
@ApiResponses(
|
@ApiResponses(
|
||||||
value = {
|
value = {
|
||||||
@ApiResponse(responseCode = "200", description = "삭제 성공", content = @Content),
|
@ApiResponse(responseCode = "200", description = "삭제 성공", content = @Content),
|
||||||
@ApiResponse(responseCode = "409", description = "HPs_0001 삭제 불가", content = @Content),
|
@ApiResponse(responseCode = "422", description = "HPs_0001 삭제 불가", content = @Content),
|
||||||
@ApiResponse(responseCode = "404", description = "하이퍼파라미터를 찾을 수 없음", content = @Content),
|
@ApiResponse(responseCode = "404", description = "하이퍼파라미터를 찾을 수 없음", content = @Content),
|
||||||
})
|
})
|
||||||
@DeleteMapping("/{uuid}")
|
@DeleteMapping("/{uuid}")
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import io.swagger.v3.oas.annotations.media.Schema;
|
|||||||
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
||||||
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
import io.swagger.v3.oas.annotations.responses.ApiResponses;
|
||||||
import io.swagger.v3.oas.annotations.tags.Tag;
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.data.domain.Page;
|
import org.springframework.data.domain.Page;
|
||||||
@@ -86,7 +87,7 @@ public class ModelTrainMngApiController {
|
|||||||
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
|
||||||
})
|
})
|
||||||
@PostMapping
|
@PostMapping
|
||||||
public ApiResponseDto<String> createModelTrain(@RequestBody ModelTrainMngDto.AddReq req) {
|
public ApiResponseDto<String> createModelTrain(@Valid @RequestBody ModelTrainMngDto.AddReq req) {
|
||||||
modelTrainMngService.createModelTrain(req);
|
modelTrainMngService.createModelTrain(req);
|
||||||
return ApiResponseDto.ok("ok");
|
return ApiResponseDto.ok("ok");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,6 +53,7 @@ public class ModelTrainMngService {
|
|||||||
HyperParam hyperParam = req.getHyperParam();
|
HyperParam hyperParam = req.getHyperParam();
|
||||||
HyperParamDto.Basic hyper = new HyperParamDto.Basic();
|
HyperParamDto.Basic hyper = new HyperParamDto.Basic();
|
||||||
|
|
||||||
|
// 하이파라미터 신규저장
|
||||||
if (HyperParamSelectType.NEW.getId().equals(req.getHyperParamType())) {
|
if (HyperParamSelectType.NEW.getId().equals(req.getHyperParamType())) {
|
||||||
// 하이퍼파라미터 등록
|
// 하이퍼파라미터 등록
|
||||||
hyper = hyperParamCoreService.createHyperParam(hyperParam);
|
hyper = hyperParamCoreService.createHyperParam(hyperParam);
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ public class HyperParamCoreService {
|
|||||||
.findHyperParamByUuid(uuid)
|
.findHyperParamByUuid(uuid)
|
||||||
.orElseThrow(() -> new CustomApiException("NOT_FOUND_DATA", HttpStatus.NOT_FOUND));
|
.orElseThrow(() -> new CustomApiException("NOT_FOUND_DATA", HttpStatus.NOT_FOUND));
|
||||||
|
|
||||||
|
if (entity.getHyperVer().equals("HPs_0001")) {
|
||||||
|
throw new CustomApiException("UNPROCESSABLE_ENTITY_UPDATE", HttpStatus.UNPROCESSABLE_ENTITY);
|
||||||
|
}
|
||||||
applyHyperParam(entity, createReq);
|
applyHyperParam(entity, createReq);
|
||||||
|
|
||||||
// user
|
// user
|
||||||
@@ -120,7 +123,7 @@ public class HyperParamCoreService {
|
|||||||
.orElseThrow(() -> new CustomApiException("NOT_FOUND_DATA", HttpStatus.NOT_FOUND));
|
.orElseThrow(() -> new CustomApiException("NOT_FOUND_DATA", HttpStatus.NOT_FOUND));
|
||||||
|
|
||||||
if (entity.getHyperVer().equals("HPs_0001")) {
|
if (entity.getHyperVer().equals("HPs_0001")) {
|
||||||
throw new CustomApiException("CONFLICT", HttpStatus.CONFLICT, "HPs_0001 버전은 삭제할수 없습니다.");
|
throw new CustomApiException("UNPROCESSABLE_ENTITY", HttpStatus.UNPROCESSABLE_ENTITY);
|
||||||
}
|
}
|
||||||
|
|
||||||
entity.setDelYn(true);
|
entity.setDelYn(true);
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.kamco.cd.training.postgres.core;
|
package com.kamco.cd.training.postgres.core;
|
||||||
|
|
||||||
|
import com.kamco.cd.training.common.enums.HyperParamSelectType;
|
||||||
import com.kamco.cd.training.common.enums.ModelType;
|
import com.kamco.cd.training.common.enums.ModelType;
|
||||||
import com.kamco.cd.training.common.enums.TrainStatusType;
|
import com.kamco.cd.training.common.enums.TrainStatusType;
|
||||||
import com.kamco.cd.training.common.exception.BadRequestException;
|
import com.kamco.cd.training.common.exception.BadRequestException;
|
||||||
@@ -71,22 +72,37 @@ public class ModelTrainMngCoreService {
|
|||||||
*/
|
*/
|
||||||
public Long saveModel(ModelTrainMngDto.AddReq addReq) {
|
public Long saveModel(ModelTrainMngDto.AddReq addReq) {
|
||||||
ModelMasterEntity entity = new ModelMasterEntity();
|
ModelMasterEntity entity = new ModelMasterEntity();
|
||||||
ModelHyperParamEntity hyperParamEntity =
|
ModelHyperParamEntity hyperParamEntity = new ModelHyperParamEntity();
|
||||||
|
|
||||||
|
// 최적화 파라미터는 HPs_0001 사용
|
||||||
|
if (HyperParamSelectType.OPTIMIZED.getId().equals(addReq.getHyperParamType())) {
|
||||||
|
hyperParamEntity = hyperParamRepository.findByHyperVer("HPs_0001").orElse(null);
|
||||||
|
|
||||||
|
} else {
|
||||||
|
hyperParamEntity =
|
||||||
hyperParamRepository.findHyperParamByUuid(addReq.getHyperUuid()).orElse(null);
|
hyperParamRepository.findHyperParamByUuid(addReq.getHyperUuid()).orElse(null);
|
||||||
|
|
||||||
entity.setModelNo(addReq.getModelNo());
|
|
||||||
entity.setTrainType(addReq.getTrainType());
|
|
||||||
|
|
||||||
if (hyperParamEntity != null) {
|
|
||||||
entity.setHyperParamId(hyperParamEntity.getId());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (hyperParamEntity == null || hyperParamEntity.getHyperVer() == null) {
|
||||||
|
throw new CustomApiException("NOT_FOUND_DATA", HttpStatus.NOT_FOUND);
|
||||||
|
}
|
||||||
|
|
||||||
|
String modelVer =
|
||||||
|
String.join(
|
||||||
|
".", addReq.getModelNo(), hyperParamEntity.getHyperVer(), entity.getUuid().toString());
|
||||||
|
entity.setModelVer(modelVer);
|
||||||
|
entity.setHyperParamId(hyperParamEntity.getId());
|
||||||
|
entity.setModelNo(addReq.getModelNo());
|
||||||
|
entity.setTrainType(addReq.getTrainType()); // 일반, 전이
|
||||||
|
|
||||||
if (addReq.getIsStart()) {
|
if (addReq.getIsStart()) {
|
||||||
entity.setModelStep((short) 1);
|
entity.setModelStep((short) 1);
|
||||||
entity.setStatusCd(TrainStatusType.IN_PROGRESS.getId());
|
entity.setStatusCd(TrainStatusType.IN_PROGRESS.getId());
|
||||||
entity.setStrtDttm(ZonedDateTime.now());
|
entity.setStrtDttm(ZonedDateTime.now());
|
||||||
entity.setStep1StrtDttm(ZonedDateTime.now());
|
entity.setStep1StrtDttm(ZonedDateTime.now());
|
||||||
entity.setStep1State(TrainStatusType.IN_PROGRESS.getId());
|
entity.setStep1State(TrainStatusType.IN_PROGRESS.getId());
|
||||||
|
} else {
|
||||||
|
entity.setStatusCd(TrainStatusType.READY.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
entity.setCreatedUid(userUtil.getId());
|
entity.setCreatedUid(userUtil.getId());
|
||||||
|
|||||||
@@ -32,8 +32,8 @@ public class ModelMasterEntity {
|
|||||||
@Column(name = "model_no", length = 10)
|
@Column(name = "model_no", length = 10)
|
||||||
private String modelNo;
|
private String modelNo;
|
||||||
|
|
||||||
@Size(max = 50)
|
@Size(max = 200)
|
||||||
@Column(name = "model_ver", length = 50)
|
@Column(name = "model_ver", length = 200)
|
||||||
private String modelVer;
|
private String modelVer;
|
||||||
|
|
||||||
@Column(name = "model_step")
|
@Column(name = "model_step")
|
||||||
|
|||||||
@@ -1,9 +1,12 @@
|
|||||||
package com.kamco.cd.training.postgres.repository.hyperparam;
|
package com.kamco.cd.training.postgres.repository.hyperparam;
|
||||||
|
|
||||||
import com.kamco.cd.training.postgres.entity.ModelHyperParamEntity;
|
import com.kamco.cd.training.postgres.entity.ModelHyperParamEntity;
|
||||||
|
import java.util.Optional;
|
||||||
import org.springframework.data.jpa.repository.JpaRepository;
|
import org.springframework.data.jpa.repository.JpaRepository;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
@Repository
|
@Repository
|
||||||
public interface HyperParamRepository
|
public interface HyperParamRepository
|
||||||
extends JpaRepository<ModelHyperParamEntity, Long>, HyperParamRepositoryCustom {}
|
extends JpaRepository<ModelHyperParamEntity, Long>, HyperParamRepositoryCustom {
|
||||||
|
Optional<ModelHyperParamEntity> findByHyperVer(String hyperVer);
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user