From c6bb176913e2ade613d6a9b38fcb5d0d760b8516 Mon Sep 17 00:00:00 2001 From: bjkim Date: Tue, 23 Sep 2025 09:47:10 +0900 Subject: [PATCH] =?UTF-8?q?[ADD]=20Experiment=20=EC=A1=B0=ED=9A=8C=20API?= =?UTF-8?q?=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=B6=94=EA=B0=80=20(MlflowContr?= =?UTF-8?q?oller)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MinioAttachmentController.java | 4 ---- .../controllers/MlflowController.java | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java b/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java index 7b51a4b..7f76f56 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java @@ -13,13 +13,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springdoc.core.annotations.ParameterObject; import org.springframework.beans.factory.annotation.Value; -import org.springframework.core.io.InputStreamResource; import org.springframework.data.domain.Page; import org.springframework.http.*; -import org.springframework.util.LinkedMultiValueMap; -import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.*; -import org.springframework.web.client.RestTemplate; import org.springframework.web.multipart.MultipartFile; import java.io.InputStream; diff --git a/src/main/java/kr/re/etri/autoflow/controllers/MlflowController.java b/src/main/java/kr/re/etri/autoflow/controllers/MlflowController.java index 0b3ba02..773dcd4 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/MlflowController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/MlflowController.java @@ -25,6 +25,26 @@ public class MlflowController { .build(); } + @Operation(summary = "Experiment 조회", description = "Experiment 이름으로 MLflow Experiment 정보를 조회합니다.") + @GetMapping(value = "/experiment", produces = MediaType.APPLICATION_JSON_VALUE) + public Map getExperimentByName(@RequestParam String experimentName) { + Map response = webClient.get() + .uri(uriBuilder -> uriBuilder + .path("/experiments/get-by-name") + .queryParam("experiment_name", experimentName) + .build()) + .retrieve() + .bodyToMono(Map.class) + .block(); + + if (response == null || !response.containsKey("experiment")) { + throw new RuntimeException("Experiment not found: " + experimentName); + } + + return (Map) response.get("experiment"); + } + + @Operation(summary = "Experiment의 Run 목록 조회", description = "주어진 Experiment ID의 Run을 최대 1000개까지 조회합니다.") @GetMapping(value = "/runs", produces = MediaType.APPLICATION_JSON_VALUE) public Mono> getRuns(@RequestParam String experimentId) {