From f3865f74ea2be095286a2b56fba613f24ee45c72 Mon Sep 17 00:00:00 2001 From: bjkim Date: Fri, 19 Sep 2025 10:33:54 +0900 Subject: [PATCH] [REMOVE] PipelineService and related request/response classes; refId parameter added to MinioAttachment search functionality --- .../MinioAttachmentController.java | 74 +------------------ ...2Beta1CreatePipelineAndVersionRequest.java | 9 --- .../payload/request/V2Beta1Pipeline.java | 12 --- .../request/V2Beta1PipelineVersion.java | 14 ---- .../autoflow/service/DataGroupService.java | 1 - .../service/MinioAttachmentService.java | 3 +- .../autoflow/service/PipelineService.java | 49 ------------ .../MinioAttachmentSpecification.java | 6 ++ 8 files changed, 12 insertions(+), 156 deletions(-) delete mode 100644 src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1CreatePipelineAndVersionRequest.java delete mode 100644 src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1Pipeline.java delete mode 100644 src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1PipelineVersion.java delete mode 100644 src/main/java/kr/re/etri/autoflow/service/PipelineService.java 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 dbf8a54..20c07d9 100644 --- a/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java +++ b/src/main/java/kr/re/etri/autoflow/controllers/MinioAttachmentController.java @@ -59,9 +59,10 @@ public class MinioAttachmentController { description = "첨부파일 구분자. 예: WORKFLOW_STEP, DATASET, TRAINING_SCRIPT", example = "WORKFLOW_STEP" ) - @RequestParam(value = "refType", required = false) String refType - ) { - Page page = minioAttachmentService.search(request, refType); + @RequestParam(value = "refType", required = false) String refType, + @RequestParam(value = "refId", required = false, defaultValue = "0") Integer refId + ) { + Page page = minioAttachmentService.search(request, refType, refId); return ResponseEntity.ok(page); } @@ -107,73 +108,6 @@ public class MinioAttachmentController { } } - @Operation(summary = "파일 업로드 및 Kubeflow 업로드", - description = "MinIO와 DB에 저장하고 Kubeflow REST API에도 업로드합니다. Kubeflow API 경로는 요청 시 지정 가능") - @PostMapping(value = "/upload-and-kubeflow", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - public ResponseEntity> uploadFileAndKubeflow( - @Parameter(description = "업로드할 파일") @RequestPart("file") MultipartFile file, - @RequestPart(value = "path", required = false) String path, - @RequestParam(value = "refId", required = false) Long refId, - @RequestParam(value = "refType", required = false, defaultValue = "TRAINING_SCRIPT") String refType, - @RequestParam(value = "title", required = false) String title, - @RequestParam(value = "description", required = false) String description, - @RequestParam(value = "version", required = false, defaultValue = "1") Integer version, - @RequestParam(value = "regUserId") String regUserId, - @RequestParam(value = "projectId") Long projectId, - @RequestParam(value = "kubeflowApi") String kubeflowApi - ) { - Map response = new HashMap<>(); - try { - MinioAttachmentEntity saved = minioAttachmentService.uploadFile( - file, path, refId, refType, title, description, version, regUserId, projectId - ); - String minioUrl = minioAttachmentService.getFileUrl(saved.getStoragePath()); - response.put("attachment", saved); - response.put("minioUrl", minioUrl); - - RestTemplate restTemplate = new RestTemplate(); - MultiValueMap body = new LinkedMultiValueMap<>(); - body.add("uploadfile", new MultipartInputStreamFileResource(file.getInputStream(), file.getOriginalFilename())); - - HttpHeaders headers = new HttpHeaders(); - headers.setContentType(MediaType.MULTIPART_FORM_DATA); - - HttpEntity> requestEntity = new HttpEntity<>(body, headers); - - String fullUrl = kubeflowBaseUrl + kubeflowApi; - ResponseEntity kubeflowResponse = restTemplate.postForEntity(fullUrl, requestEntity, String.class); - - response.put("kubeflowResponse", kubeflowResponse.getBody()); - - return ResponseEntity.ok(response); - - } catch (Exception e) { - log.error("파일 업로드 실패", e); - response.put("error", e.getMessage()); - return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(response); - } - } - - // 파일 업로드용 InputStreamResource - private static class MultipartInputStreamFileResource extends InputStreamResource { - private final String filename; - - public MultipartInputStreamFileResource(InputStream inputStream, String filename) { - super(inputStream); - this.filename = filename; - } - - @Override - public String getFilename() { - return this.filename; - } - - @Override - public long contentLength() { - return -1; - } - } - @Operation(summary = "파일 업데이트", description = "파일을 새 버전으로 업로드합니다. 기존 파일은 그대로 보존되고, 버전은 +1 증가합니다.") @PutMapping(value = "/{id}/update", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) public ResponseEntity> updateFile( diff --git a/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1CreatePipelineAndVersionRequest.java b/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1CreatePipelineAndVersionRequest.java deleted file mode 100644 index 4e2dda6..0000000 --- a/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1CreatePipelineAndVersionRequest.java +++ /dev/null @@ -1,9 +0,0 @@ -//package kr.re.etri.autoflow.payload.request; -// -//import lombok.Data; -// -//@Data -//public class V2Beta1CreatePipelineAndVersionRequest { -// private V2Beta1Pipeline pipeline; -// private V2Beta1PipelineVersion pipeline_version; -//} diff --git a/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1Pipeline.java b/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1Pipeline.java deleted file mode 100644 index 271c2f6..0000000 --- a/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1Pipeline.java +++ /dev/null @@ -1,12 +0,0 @@ -//package kr.re.etri.autoflow.payload.request; -// -//import lombok.Data; -// -//@Data -//public class V2Beta1Pipeline { -// private String pipeline_id; -// private String display_name; -// private String name; -// private String description; -// private String namespace; -//} \ No newline at end of file diff --git a/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1PipelineVersion.java b/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1PipelineVersion.java deleted file mode 100644 index 873ee72..0000000 --- a/src/main/java/kr/re/etri/autoflow/payload/request/V2Beta1PipelineVersion.java +++ /dev/null @@ -1,14 +0,0 @@ -//package kr.re.etri.autoflow.payload.request; -// -//import lombok.Data; -// -//@Data -//public class V2Beta1PipelineVersion { -// private String pipeline_id; -// private String pipeline_version_id; -// private String display_name; -// private String name; -// private String description; -// private String package_url; -// private String code_source_url; -//} \ No newline at end of file diff --git a/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java b/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java index e204ac7..1778b45 100644 --- a/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java +++ b/src/main/java/kr/re/etri/autoflow/service/DataGroupService.java @@ -59,7 +59,6 @@ public class DataGroupService { endDate ); - if (request.getProjectId() != null) { spec = spec.and((root, query, cb) -> cb.equal(root.get("projectId"), request.getProjectId()) diff --git a/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java b/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java index 89b5e86..c351b09 100644 --- a/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java +++ b/src/main/java/kr/re/etri/autoflow/service/MinioAttachmentService.java @@ -110,7 +110,7 @@ public class MinioAttachmentService { /** * 검색 + 페이지네이션 */ - public Page search(ProjectBaseSearchRequest request, String refType) { + public Page search(ProjectBaseSearchRequest request, String refType, Integer refId) { int pageIndex = request.getPage() > 0 ? request.getPage() - 1 : 0; Pageable pageable = PageRequest.of( @@ -125,6 +125,7 @@ public class MinioAttachmentService { Specification spec = minioAttachmentSpecification.searchByConditions( refType, + refId, request.getSearchType(), request.getKeyword(), startDate, diff --git a/src/main/java/kr/re/etri/autoflow/service/PipelineService.java b/src/main/java/kr/re/etri/autoflow/service/PipelineService.java deleted file mode 100644 index 3ea9742..0000000 --- a/src/main/java/kr/re/etri/autoflow/service/PipelineService.java +++ /dev/null @@ -1,49 +0,0 @@ -//package kr.re.etri.autoflow.service; -// -//import kr.re.etri.autoflow.payload.request.V2Beta1CreatePipelineAndVersionRequest; -//import kr.re.etri.autoflow.payload.request.V2Beta1Pipeline; -//import lombok.RequiredArgsConstructor; -//import org.springframework.beans.factory.annotation.Value; -//import org.springframework.http.*; -//import org.springframework.stereotype.Service; -//import org.springframework.web.client.RestTemplate; -// -//@Service -//@RequiredArgsConstructor -//public class PipelineService { -// -// private final RestTemplate restTemplate; -// -// @Value("${kubeflow.api.url}") -// private String kubeflowApiUrl; -// -// public V2Beta1Pipeline createPipeline(V2Beta1Pipeline pipeline) { -// HttpHeaders headers = new HttpHeaders(); -// headers.setContentType(MediaType.APPLICATION_JSON); -// -// HttpEntity request = new HttpEntity<>(pipeline, headers); -// -// ResponseEntity response = restTemplate.exchange( -// kubeflowApiUrl + "/apis/v2beta1/pipelines", -// HttpMethod.POST, -// request, -// V2Beta1Pipeline.class -// ); -// return response.getBody(); -// } -// -// public V2Beta1Pipeline createPipelineAndVersion(V2Beta1CreatePipelineAndVersionRequest requestPayload) { -// HttpHeaders headers = new HttpHeaders(); -// headers.setContentType(MediaType.APPLICATION_JSON); -// -// HttpEntity request = new HttpEntity<>(requestPayload, headers); -// -// ResponseEntity response = restTemplate.exchange( -// kubeflowApiUrl + "/apis/v2beta1/pipelines/create", -// HttpMethod.POST, -// request, -// V2Beta1Pipeline.class -// ); -// return response.getBody(); -// } -//} diff --git a/src/main/java/kr/re/etri/autoflow/specification/MinioAttachmentSpecification.java b/src/main/java/kr/re/etri/autoflow/specification/MinioAttachmentSpecification.java index d9df7a0..c9f0a1a 100644 --- a/src/main/java/kr/re/etri/autoflow/specification/MinioAttachmentSpecification.java +++ b/src/main/java/kr/re/etri/autoflow/specification/MinioAttachmentSpecification.java @@ -43,6 +43,7 @@ public class MinioAttachmentSpecification { public Specification searchByConditions( String refType, + Integer refId, String searchType, String keyword, LocalDate startDate, @@ -56,6 +57,11 @@ public class MinioAttachmentSpecification { predicate = cb.and(predicate, cb.equal(root.get("refType"), refType)); } + // refId 조건 추가 + if (refId != null ) { + predicate = cb.and(predicate, cb.equal(root.get("refId"), refId)); + } + // keyword 검색 if (keyword != null && !keyword.isEmpty()) { if (searchType == null || searchType.isEmpty()