From 3d6c4d9ef3fa263c1f650a880cff95b75d8f1a8c Mon Sep 17 00:00:00 2001 From: can019 Date: Mon, 29 Sep 2025 17:16:05 +0900 Subject: [PATCH 1/2] =?UTF-8?q?chore:=20gitingore=EC=97=90=20key,=20blogge?= =?UTF-8?q?r=20=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/pre-processing-service/.gitignore | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 apps/pre-processing-service/.gitignore diff --git a/apps/pre-processing-service/.gitignore b/apps/pre-processing-service/.gitignore new file mode 100644 index 00000000..26d2fb2d --- /dev/null +++ b/apps/pre-processing-service/.gitignore @@ -0,0 +1,2 @@ +/blogger +/key \ No newline at end of file From 58e40e0e83d3e79d6b54d29e6b15f7d645848a79 Mon Sep 17 00:00:00 2001 From: can019 Date: Mon, 29 Sep 2025 18:14:13 +0900 Subject: [PATCH 2/2] feat: Task io data api --- .../workflow/controller/TaskController.java | 29 +++++++++++++++++++ .../workflow/mapper/TaskIoDataMapper.java | 7 +++++ .../workflow/service/WorkflowService.java | 20 +++++++++++++ .../mybatis/mapper/TaskIoDataMapper.xml | 15 ++++++++++ 4 files changed, 71 insertions(+) diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/TaskController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/TaskController.java index fd3ce8f4..c0ba5542 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/TaskController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/TaskController.java @@ -1,5 +1,6 @@ package site.icebang.domain.workflow.controller; +import java.util.List; import java.util.Map; import org.springframework.http.HttpStatus; @@ -9,7 +10,9 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; +import site.icebang.common.dto.ApiResponse; import site.icebang.domain.workflow.dto.TaskDto; +import site.icebang.domain.workflow.model.TaskIoData; import site.icebang.domain.workflow.service.WorkflowService; @RestController @@ -33,4 +36,30 @@ public ResponseEntity> getTask(@PathVariable Long id) { } return ResponseEntity.ok(Map.of("success", true, "data", task)); } + + /** + * Task Run ID 목록으로 Task IO 데이터 조회 + * + * @param taskRunIds Task Run ID 목록 (쉼표로 구분) + * @param ioType IO 타입 필터 ("INPUT", "OUTPUT", 미지정시 모두 조회) + * @param limit 조회 제한 수 (선택사항) + * @return Task IO 데이터 목록 (created_at 기준 내림차순 정렬) + */ + @GetMapping("/io-data") + public ResponseEntity>> getTaskIoData( + @RequestParam List taskRunIds, + @RequestParam(required = false) String ioType, + @RequestParam(required = false) Integer limit) { + + try { + List ioData = + workflowService.getTaskIoDataByTaskRunIds(taskRunIds, ioType, limit); + return ResponseEntity.ok(ApiResponse.success(ioData, "Task IO 데이터 조회 성공")); + } catch (Exception e) { + return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR) + .body( + ApiResponse.error( + "Task IO 데이터 조회 실패: " + e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR)); + } + } } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/TaskIoDataMapper.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/TaskIoDataMapper.java index 6f44de02..dffeeb8e 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/TaskIoDataMapper.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/TaskIoDataMapper.java @@ -1,8 +1,10 @@ package site.icebang.domain.workflow.mapper; +import java.util.List; import java.util.Optional; import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; import site.icebang.domain.workflow.model.TaskIoData; @@ -11,4 +13,9 @@ public interface TaskIoDataMapper { void insert(TaskIoData taskIoData); Optional findOutputByTaskRunId(Long taskRunId); + + List findByTaskRunIds( + @Param("taskRunIds") List taskRunIds, + @Param("ioType") String ioType, + @Param("limit") Integer limit); } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowService.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowService.java index 69a55002..6362d061 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowService.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowService.java @@ -24,8 +24,10 @@ import site.icebang.domain.schedule.service.QuartzScheduleService; import site.icebang.domain.workflow.dto.*; import site.icebang.domain.workflow.mapper.JobMapper; +import site.icebang.domain.workflow.mapper.TaskIoDataMapper; import site.icebang.domain.workflow.mapper.TaskMapper; import site.icebang.domain.workflow.mapper.WorkflowMapper; +import site.icebang.domain.workflow.model.TaskIoData; /** * 워크플로우의 '정의'와 관련된 비즈니스 로직을 처리하는 서비스 클래스입니다. @@ -52,6 +54,7 @@ public class WorkflowService implements PageableService { private final QuartzScheduleService quartzScheduleService; private final JobMapper jobMapper; private final TaskMapper taskMapper; + private final TaskIoDataMapper taskIoDataMapper; /** * 워크플로우 목록을 페이징 처리하여 조회합니다. @@ -248,6 +251,23 @@ public TaskDto findTaskById(Long id) { return taskMapper.findTaskById(id); } + /** + * Task Run ID 목록으로 Task IO 데이터 조회 + * + * @param taskRunIds Task Run ID 목록 + * @param ioType IO 타입 필터 ("INPUT", "OUTPUT", null이면 모두 조회) + * @param limit 조회 제한 수 (null이면 모두 조회) + * @return Task IO 데이터 목록 (created_at 기준 내림차순 정렬) + */ + @Transactional(readOnly = true) + public List getTaskIoDataByTaskRunIds( + List taskRunIds, String ioType, Integer limit) { + if (taskRunIds == null || taskRunIds.isEmpty()) { + return List.of(); + } + return taskIoDataMapper.findByTaskRunIds(taskRunIds, ioType, limit); + } + /** 기본 입력값 검증 */ private void validateBasicInput(WorkflowCreateDto dto, BigInteger createdBy) { if (dto == null) { diff --git a/apps/user-service/src/main/resources/mybatis/mapper/TaskIoDataMapper.xml b/apps/user-service/src/main/resources/mybatis/mapper/TaskIoDataMapper.xml index fa0dd73c..4feaaa33 100644 --- a/apps/user-service/src/main/resources/mybatis/mapper/TaskIoDataMapper.xml +++ b/apps/user-service/src/main/resources/mybatis/mapper/TaskIoDataMapper.xml @@ -13,4 +13,19 @@ ORDER BY id DESC LIMIT 1 + + \ No newline at end of file