From 977a5e75be62cafa275749cb71485192b6de8f06 Mon Sep 17 00:00:00 2001 From: JiHoon Date: Mon, 22 Sep 2025 18:55:46 +0900 Subject: [PATCH 1/3] =?UTF-8?q?feat=20:=20=EC=9B=8C=ED=81=AC=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=20=ED=9E=88=EC=8A=A4=ED=86=A0=EB=A6=AC=20=ED=8E=98?= =?UTF-8?q?=EC=9D=B4=EC=A7=80=EB=84=A4=EC=9D=B4=EC=85=98=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WorkflowController.java | 10 +++++++ .../workflow/dto/WorkflowHistoryDTO.java | 20 ++++++++++++++ .../workflow/mapper/WorkflowMapper.java | 5 ++++ .../service/WorkflowHistoryService.java | 27 +++++++++++++++++++ .../mybatis/mapper/WorkflowMapper.xml | 27 +++++++++++++++++++ 5 files changed, 89 insertions(+) create mode 100644 apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java create mode 100644 apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java index 9cd5933b..0d91f71b 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java @@ -9,7 +9,9 @@ import site.icebang.common.dto.PageParams; import site.icebang.common.dto.PageResult; import site.icebang.domain.workflow.dto.WorkflowCardDto; +import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; import site.icebang.domain.workflow.service.WorkflowExecutionService; +import site.icebang.domain.workflow.service.WorkflowHistoryService; import site.icebang.domain.workflow.service.WorkflowService; @RestController @@ -18,6 +20,7 @@ public class WorkflowController { private final WorkflowService workflowService; private final WorkflowExecutionService workflowExecutionService; + private final WorkflowHistoryService workflowHistoryService; @GetMapping("") public ApiResponse> getWorkflowList( @@ -26,6 +29,13 @@ public ApiResponse> getWorkflowList( return ApiResponse.success(result); } + @GetMapping("/history") + public ApiResponse> getWorkflowHistoryList( + @ModelAttribute PageParams pageParams) { + PageResult result = workflowHistoryService.getPagedResult(pageParams); + return ApiResponse.success(result); + } + @PostMapping("/{workflowId}/run") public ResponseEntity runWorkflow(@PathVariable Long workflowId) { // HTTP 요청/응답 스레드를 블로킹하지 않도록 비동기 실행 diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java new file mode 100644 index 00000000..946393e5 --- /dev/null +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java @@ -0,0 +1,20 @@ +package site.icebang.domain.workflow.dto; + +import lombok.Data; + +import java.math.BigInteger; +import java.time.LocalDateTime; + +@Data +public class WorkflowHistoryDTO { + + private BigInteger id; + private BigInteger workflowId; + private String traceId; + private LocalDateTime startedAt; + private LocalDateTime finishedAt; + private BigInteger createdBy; + private String triggerType; + private String runNumber; + private String status; +} diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java index 00afbebc..f1f128ff 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java @@ -5,6 +5,7 @@ import site.icebang.common.dto.PageParams; import site.icebang.domain.workflow.dto.WorkflowCardDto; +import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; public interface WorkflowMapper { List selectWorkflowList(PageParams pageParams); @@ -12,4 +13,8 @@ public interface WorkflowMapper { int selectWorkflowCount(PageParams pageParams); WorkflowCardDto selectWorkflowById(BigInteger id); + + List selectWorkflowHistoryList(PageParams pageParams); + + int selectWorkflowHistoryCount(PageParams pageParams); } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java new file mode 100644 index 00000000..092b80d0 --- /dev/null +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java @@ -0,0 +1,27 @@ +package site.icebang.domain.workflow.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import site.icebang.common.dto.PageParams; +import site.icebang.common.dto.PageResult; +import site.icebang.common.service.PageableService; +import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; +import site.icebang.domain.workflow.mapper.WorkflowMapper; + +@Service +@RequiredArgsConstructor +public class WorkflowHistoryService implements PageableService { + + private final WorkflowMapper workflowMapper; + + @Override + @Transactional(readOnly = true) + public PageResult getPagedResult(PageParams pageParams) { + + return PageResult.from( + pageParams, + () -> workflowMapper.selectWorkflowHistoryList(pageParams), + () -> workflowMapper.selectWorkflowHistoryCount(pageParams)); + } +} diff --git a/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml b/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml index dacade96..5968c395 100644 --- a/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml +++ b/apps/user-service/src/main/resources/mybatis/mapper/WorkflowMapper.xml @@ -39,4 +39,31 @@ LEFT JOIN user u ON w.created_by = u.id WHERE w.id = #{id} + + + + + \ No newline at end of file From f9f1ae735992b8d6311f8969e253da72f4c76526 Mon Sep 17 00:00:00 2001 From: JiHoon Date: Mon, 22 Sep 2025 19:42:16 +0900 Subject: [PATCH 2/3] =?UTF-8?q?fix=20:=20=EC=9B=8C=ED=81=AC=ED=94=8C?= =?UTF-8?q?=EB=A1=9C=20=ED=9E=88=EC=8A=A4=ED=86=A0=EB=A6=AC=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WorkflowController.java | 7 ------- .../controller/WorkflowHistoryController.java | 15 +++++++++---- .../mapper/WorkflowHistoryMapper.java | 18 ++++++++++++++++ .../workflow/mapper/WorkflowMapper.java | 3 --- .../service/WorkflowHistoryService.java | 21 ++++++++++++++++++- 5 files changed, 49 insertions(+), 15 deletions(-) diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java index 0d91f71b..85ca445c 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java @@ -29,13 +29,6 @@ public ApiResponse> getWorkflowList( return ApiResponse.success(result); } - @GetMapping("/history") - public ApiResponse> getWorkflowHistoryList( - @ModelAttribute PageParams pageParams) { - PageResult result = workflowHistoryService.getPagedResult(pageParams); - return ApiResponse.success(result); - } - @PostMapping("/{workflowId}/run") public ResponseEntity runWorkflow(@PathVariable Long workflowId) { // HTTP 요청/응답 스레드를 블로킹하지 않도록 비동기 실행 diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java index 8ca79726..4267c8ff 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java @@ -1,13 +1,13 @@ package site.icebang.domain.workflow.controller; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import lombok.RequiredArgsConstructor; import site.icebang.common.dto.ApiResponse; +import site.icebang.common.dto.PageParams; +import site.icebang.common.dto.PageResult; +import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; import site.icebang.domain.workflow.dto.WorkflowRunDetailResponse; import site.icebang.domain.workflow.service.WorkflowHistoryService; @@ -17,6 +17,13 @@ public class WorkflowHistoryController { private final WorkflowHistoryService workflowHistoryService; + @GetMapping("") + public ApiResponse> getWorkflowHistoryList( + @ModelAttribute PageParams pageParams) { + PageResult response = workflowHistoryService.getPagedResult(pageParams); + return ApiResponse.success(response); + } + /** * 워크플로우 실행 상세 조회 * diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java index 6833a6d7..27406e19 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java @@ -4,8 +4,10 @@ import org.apache.ibatis.annotations.Mapper; +import site.icebang.common.dto.PageParams; import site.icebang.domain.workflow.dto.JobRunDto; import site.icebang.domain.workflow.dto.TaskRunDto; +import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; import site.icebang.domain.workflow.dto.WorkflowRunDto; @Mapper @@ -41,4 +43,20 @@ public interface WorkflowHistoryMapper { * @return String traceId */ String selectTraceIdByRunId(Long runId); + + /** + * 워크플로우 런 페이지네이션 + * + * @param pageParams pageParams + * @return List + * */ + List selectWorkflowHistoryList(PageParams pageParams); + + /** + * 워크플로우 런 인스턴스 개수 조회 + * @param pageParams pageParams + * @return 결과 개수 + * */ + int selectWorkflowHistoryCount(PageParams pageParams); + } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java index f1f128ff..f5ec2a9a 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java @@ -14,7 +14,4 @@ public interface WorkflowMapper { WorkflowCardDto selectWorkflowById(BigInteger id); - List selectWorkflowHistoryList(PageParams pageParams); - - int selectWorkflowHistoryCount(PageParams pageParams); } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java index 583e2b20..ab0827e9 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java @@ -7,14 +7,33 @@ import lombok.RequiredArgsConstructor; +import site.icebang.common.dto.PageParams; +import site.icebang.common.dto.PageResult; +import site.icebang.common.service.PageableService; import site.icebang.domain.workflow.dto.*; import site.icebang.domain.workflow.mapper.WorkflowHistoryMapper; +import site.icebang.domain.workflow.mapper.WorkflowMapper; @Service @RequiredArgsConstructor -public class WorkflowHistoryService { +public class WorkflowHistoryService implements PageableService { private final WorkflowHistoryMapper workflowHistoryMapper; + /** + * 워크플로우 런 조회 + * @param pageParams pageParams + * @return PageResult + * */ + @Override + @Transactional(readOnly = true) + public PageResult getPagedResult(PageParams pageParams) { + + return PageResult.from( + pageParams, + () -> workflowHistoryMapper.selectWorkflowHistoryList(pageParams), + () -> workflowHistoryMapper.selectWorkflowHistoryCount(pageParams)); + } + /** * 워크플로우 실행 상세 조회 * From ba9b854e612ab1c0898d251d019f8c2f6d6bc27d Mon Sep 17 00:00:00 2001 From: JiHoon Date: Mon, 22 Sep 2025 19:48:00 +0900 Subject: [PATCH 3/3] chore: fix lint --- .../controller/WorkflowController.java | 1 - .../controller/WorkflowHistoryController.java | 2 +- .../workflow/dto/WorkflowHistoryDTO.java | 22 +++++++++---------- .../mapper/WorkflowHistoryMapper.java | 6 ++--- .../workflow/mapper/WorkflowMapper.java | 2 -- .../service/WorkflowHistoryService.java | 10 ++++----- 6 files changed, 20 insertions(+), 23 deletions(-) diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java index 85ca445c..650a2bcf 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowController.java @@ -9,7 +9,6 @@ import site.icebang.common.dto.PageParams; import site.icebang.common.dto.PageResult; import site.icebang.domain.workflow.dto.WorkflowCardDto; -import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; import site.icebang.domain.workflow.service.WorkflowExecutionService; import site.icebang.domain.workflow.service.WorkflowHistoryService; import site.icebang.domain.workflow.service.WorkflowService; diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java index 4267c8ff..07d4f20e 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/controller/WorkflowHistoryController.java @@ -19,7 +19,7 @@ public class WorkflowHistoryController { @GetMapping("") public ApiResponse> getWorkflowHistoryList( - @ModelAttribute PageParams pageParams) { + @ModelAttribute PageParams pageParams) { PageResult response = workflowHistoryService.getPagedResult(pageParams); return ApiResponse.success(response); } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java index 946393e5..18a25b7e 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/dto/WorkflowHistoryDTO.java @@ -1,20 +1,20 @@ package site.icebang.domain.workflow.dto; -import lombok.Data; - import java.math.BigInteger; import java.time.LocalDateTime; +import lombok.Data; + @Data public class WorkflowHistoryDTO { - private BigInteger id; - private BigInteger workflowId; - private String traceId; - private LocalDateTime startedAt; - private LocalDateTime finishedAt; - private BigInteger createdBy; - private String triggerType; - private String runNumber; - private String status; + private BigInteger id; + private BigInteger workflowId; + private String traceId; + private LocalDateTime startedAt; + private LocalDateTime finishedAt; + private BigInteger createdBy; + private String triggerType; + private String runNumber; + private String status; } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java index 27406e19..d22e2a68 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowHistoryMapper.java @@ -49,14 +49,14 @@ public interface WorkflowHistoryMapper { * * @param pageParams pageParams * @return List - * */ + */ List selectWorkflowHistoryList(PageParams pageParams); /** * 워크플로우 런 인스턴스 개수 조회 + * * @param pageParams pageParams * @return 결과 개수 - * */ + */ int selectWorkflowHistoryCount(PageParams pageParams); - } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java index f5ec2a9a..00afbebc 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/mapper/WorkflowMapper.java @@ -5,7 +5,6 @@ import site.icebang.common.dto.PageParams; import site.icebang.domain.workflow.dto.WorkflowCardDto; -import site.icebang.domain.workflow.dto.WorkflowHistoryDTO; public interface WorkflowMapper { List selectWorkflowList(PageParams pageParams); @@ -13,5 +12,4 @@ public interface WorkflowMapper { int selectWorkflowCount(PageParams pageParams); WorkflowCardDto selectWorkflowById(BigInteger id); - } diff --git a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java index ab0827e9..d04e238f 100644 --- a/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java +++ b/apps/user-service/src/main/java/site/icebang/domain/workflow/service/WorkflowHistoryService.java @@ -12,7 +12,6 @@ import site.icebang.common.service.PageableService; import site.icebang.domain.workflow.dto.*; import site.icebang.domain.workflow.mapper.WorkflowHistoryMapper; -import site.icebang.domain.workflow.mapper.WorkflowMapper; @Service @RequiredArgsConstructor @@ -21,17 +20,18 @@ public class WorkflowHistoryService implements PageableService getPagedResult(PageParams pageParams) { return PageResult.from( - pageParams, - () -> workflowHistoryMapper.selectWorkflowHistoryList(pageParams), - () -> workflowHistoryMapper.selectWorkflowHistoryCount(pageParams)); + pageParams, + () -> workflowHistoryMapper.selectWorkflowHistoryList(pageParams), + () -> workflowHistoryMapper.selectWorkflowHistoryCount(pageParams)); } /**