daniel 작업 내용 커밋

This commit is contained in:
2026-04-09 09:16:42 +09:00
parent 501b4a6f51
commit 59d39a79c3
10 changed files with 1189 additions and 2 deletions

View File

@@ -1,9 +1,11 @@
package com.kamco.cd.training.train;
import com.kamco.cd.training.config.api.ApiResponseDto;
import com.kamco.cd.training.train.dto.TrainingMetricsDto;
import com.kamco.cd.training.train.service.DataSetCountersService;
import com.kamco.cd.training.train.service.TestJobService;
import com.kamco.cd.training.train.service.TrainJobService;
import com.kamco.cd.training.train.service.TrainingMetricsService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
@@ -29,6 +31,7 @@ public class TrainApiController {
private final TrainJobService trainJobService;
private final TestJobService testJobService;
private final DataSetCountersService dataSetCountersService;
private final TrainingMetricsService trainingMetricsService;
@Operation(summary = "학습 실행", description = "학습 실행 API")
@ApiResponses(
@@ -236,4 +239,63 @@ public class TrainApiController {
trainJobService.status(uuid, modelId);
return ApiResponseDto.ok("ok");
}
@Operation(
summary = "하이퍼파라미터 기반 학습 메트릭 조회",
description =
"하이퍼파라미터 UUID로 해당 파라미터를 사용하는 모델의 학습 메트릭을 조회합니다. "
+ "val.csv와 train.csv를 우선 사용하며, 없을 경우 processing.log를 파싱합니다.")
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "조회 성공",
content =
@Content(
mediaType = "application/json",
schema = @Schema(implementation = TrainingMetricsDto.Response.class))),
@ApiResponse(
responseCode = "404",
description = "하이퍼파라미터 또는 모델을 찾을 수 없음",
content = @Content),
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
})
@GetMapping(
path = "/metrics/hyper-param/{hyperParamUuid}",
produces = MediaType.APPLICATION_JSON_VALUE)
public ApiResponseDto<TrainingMetricsDto.Response> getMetricsByHyperParam(
@Parameter(description = "하이퍼파라미터 UUID", example = "57fc9170-64c1-4128-aa7b-0657f08d6d10")
@PathVariable
UUID hyperParamUuid) {
TrainingMetricsDto.Response response =
trainingMetricsService.getTrainingMetricsByHyperParam(hyperParamUuid);
return ApiResponseDto.ok(response);
}
@Operation(
summary = "모델 기반 학습 메트릭 조회",
description =
"모델 UUID로 해당 모델의 학습 메트릭을 조회합니다. "
+ "val.csv와 train.csv를 우선 사용하며, 없을 경우 processing.log를 파싱합니다.")
@ApiResponses(
value = {
@ApiResponse(
responseCode = "200",
description = "조회 성공",
content =
@Content(
mediaType = "application/json",
schema = @Schema(implementation = TrainingMetricsDto.Response.class))),
@ApiResponse(responseCode = "404", description = "모델을 찾을 수 없음", content = @Content),
@ApiResponse(responseCode = "500", description = "서버 오류", content = @Content)
})
@GetMapping(path = "/metrics/model/{modelUuid}", produces = MediaType.APPLICATION_JSON_VALUE)
public ApiResponseDto<TrainingMetricsDto.Response> getMetricsByModel(
@Parameter(description = "모델 UUID", example = "b34a2d18-11e6-4b1b-a156-cd314bec45bb")
@PathVariable
UUID modelUuid) {
TrainingMetricsDto.Response response =
trainingMetricsService.getTrainingMetricsByModelUuid(modelUuid);
return ApiResponseDto.ok(response);
}
}