From 06b724459ee91ad9c14bc480cacb98ad1cdc1c15 Mon Sep 17 00:00:00 2001 From: jade Date: Wed, 29 Jul 2026 10:26:32 +0900 Subject: [PATCH] feat: add solgitReqList and get_mcp_tool_team_members tools --- .../presentation/BusinessToolController.java | 8 +- .../cmm/usecase/TemplateUtilityUseCase.java | 4 +- .../converter/SolgitReqListConverter.java | 33 ++++++++ .../biz/solgit/dto/SolgitReqListRequest.java | 32 ++++++++ .../biz/solgit/dto/SolgitReqListResponse.java | 37 +++++++++ .../solgit/usecase/SolgitReqListUseCase.java | 23 ++++++ .../impl/SolgitReqListUseCaseImpl.java | 75 +++++++++++++++++++ .../team/converter/TeamMemberConverter.java | 32 ++++++++ .../mcc/biz/team/dto/TeamMemberRequest.java | 26 +++++++ .../mcc/biz/team/dto/TeamMemberResponse.java | 24 ++++++ .../team/legacy/TeamMemberLegacyRequest.java | 30 ++++++++ .../team/legacy/TeamMemberLegacyResponse.java | 22 ++++++ .../biz/team/usecase/TeamMemberUseCase.java | 23 ++++++ .../usecase/impl/TeamMemberUseCaseImpl.java | 57 ++++++++++++++ .../infra/itrf/mci/ncl/g/MciNclgClient.java | 30 ++++++++ .../itrf/mci/ncl/g/io/SOLG00000001_I.java | 24 ++++++ .../itrf/mci/ncl/g/io/SOLG00000001_O.java | 34 +++++++++ 17 files changed, 510 insertions(+), 4 deletions(-) create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/converter/SolgitReqListConverter.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListRequest.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListResponse.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/SolgitReqListUseCase.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/impl/SolgitReqListUseCaseImpl.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/converter/TeamMemberConverter.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberRequest.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberResponse.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyRequest.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyResponse.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/TeamMemberUseCase.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/impl/TeamMemberUseCaseImpl.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java create mode 100644 dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java diff --git a/dap-tool-core/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java b/dap-tool-core/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java index edcd7ac1..3c722d3d 100644 --- a/dap-tool-core/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java +++ b/dap-tool-core/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java @@ -190,11 +190,13 @@ public class BusinessToolController { } } - // 4. 메서드 실행 - long startTime = System.currentTimeMillis(); Object methodResult = null; - methodResult = targetMethod.invoke(targetBean, invokeArgument); + if (targetMethod.getParameterCount() == 0) { + methodResult = targetMethod.invoke(targetBean); + } else { + methodResult = targetMethod.invoke(targetBean, invokeArgument); + } long elapsed = System.currentTimeMillis() - startTime; diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java index 24ecdcfe..f47789e6 100644 --- a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java @@ -4,6 +4,8 @@ import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.mcc.biz.cmm.dto.*; +import java.util.Map; + @McpTool( routingType = "HTTP", categoryKey = "cmm" @@ -15,5 +17,5 @@ public interface TemplateUtilityUseCase { description = "요청한 템플릿(엑셀, 워드 등) 파일(양식)을 다운로드 받을 수 있는 시스템 URL을 반환합니다. AI는 이 URL을 사용자에게 마크다운 링크 형태로 제공해야 합니다.", prompt = "요청하신 템플릿 양식 파일 다운로드 URL은 다음과 같습니다. 클릭하여 다운로드하세요:" ) - java.util.Map getTemplateFileUrl(TemplateDownloadRequest req); + Map getTemplateFileUrl(TemplateDownloadRequest req); } diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/converter/SolgitReqListConverter.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/converter/SolgitReqListConverter.java new file mode 100644 index 00000000..fef0eb63 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/converter/SolgitReqListConverter.java @@ -0,0 +1,33 @@ +package io.shinhanlife.dap.mcc.biz.solgit.converter; + +import io.shinhanlife.dap.mcc.biz.solgit.dto.SolgitReqListRequest; +import io.shinhanlife.dap.mcc.biz.solgit.dto.SolgitReqListResponse; +import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io.SOLG00000001_I; +import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io.SOLG00000001_O; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +/** + * @package io.shinhanlife.dap.mcc.biz.solgit.converter + * @className SolgitReqListConverter + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Mapper(componentModel = "spring") +public interface SolgitReqListConverter { + @Mapping(source = "status", target = "reqStatus", defaultValue = "진행중") + @Mapping(source = "period", target = "reqPeriod", defaultValue = "최근 3개월") + @Mapping(source = "target", target = "reqTarget", defaultValue = "나의 업무") + SOLG00000001_I toLegacyRequest(SolgitReqListRequest req); + + SolgitReqListResponse toResponse(SOLG00000001_O mciRes); +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListRequest.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListRequest.java new file mode 100644 index 00000000..f2aff85c --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListRequest.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.solgit.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.shinhanlife.dap.lib.annotation.McpParameter; +import lombok.Data; + +/** + * @package io.shinhanlife.dap.mcc.biz.solgit.dto + * @className SolgitReqListRequest + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SolgitReqListRequest { + @McpParameter(description = "진행상태 (예: 진행중, 완료 등)", required = false) + private String status; + + @McpParameter(description = "조회기간 (예: 1개월, 3개월 등)", required = false) + private String period; + + @McpParameter(description = "조회대상 (예: 나의 업무, 전체 등)", required = false) + private String target; +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListResponse.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListResponse.java new file mode 100644 index 00000000..9c0f2979 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/dto/SolgitReqListResponse.java @@ -0,0 +1,37 @@ +package io.shinhanlife.dap.mcc.biz.solgit.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.List; + +/** + * @package io.shinhanlife.dap.mcc.biz.solgit.dto + * @className SolgitReqListResponse + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class SolgitReqListResponse { + private List reqList; + + @Data + @JsonInclude(JsonInclude.Include.NON_NULL) + public static class SolgitReqListItem { + private String srId; + private String srName; + private String process; + private String devStage; + private String appName; + private String requester; + } +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/SolgitReqListUseCase.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/SolgitReqListUseCase.java new file mode 100644 index 00000000..ac7242ef --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/SolgitReqListUseCase.java @@ -0,0 +1,23 @@ +package io.shinhanlife.dap.mcc.biz.solgit.usecase; + +import io.shinhanlife.dap.lib.annotation.McpFunction; +import io.shinhanlife.dap.lib.annotation.McpTool; +import io.shinhanlife.dap.mcc.biz.solgit.dto.SolgitReqListRequest; + +@McpTool( + routingType = "MCI", + categoryKey = "solgit" +) +public interface SolgitReqListUseCase { + @McpFunction( + displayName = "SolgitReqList 툴", + name = "solgitReqList", + description = "SOLGIT 의뢰서 목록 조회해줘", + prompt = "SOLGIT 의뢰서 목록 조회해줘", + mappingId = "SOLG00000001", + register = false, + requiresApproval = false, + openWorldHint = true + ) + Object execute(SolgitReqListRequest req); +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/impl/SolgitReqListUseCaseImpl.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/impl/SolgitReqListUseCaseImpl.java new file mode 100644 index 00000000..4e77b1cd --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/solgit/usecase/impl/SolgitReqListUseCaseImpl.java @@ -0,0 +1,75 @@ +package io.shinhanlife.dap.mcc.biz.solgit.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.solgit.dto.SolgitReqListRequest; +import io.shinhanlife.dap.mcc.biz.solgit.dto.SolgitReqListResponse; +import io.shinhanlife.dap.mcc.biz.solgit.usecase.SolgitReqListUseCase; +import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent; +import io.shinhanlife.glow.communication.dto.Transfer; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import java.util.Map; +import java.util.List; +import java.util.ArrayList; +import io.shinhanlife.dap.mcc.biz.solgit.converter.SolgitReqListConverter; +import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io.SOLG00000001_I; +import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.MciNclgClient; +import io.shinhanlife.dap.mcc.biz.solgit.dto.SolgitReqListResponse.SolgitReqListItem; + +/** + * @package io.shinhanlife.dap.mcc.biz.solgit.usecase.impl + * @className SolgitReqListUseCaseImpl + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Slf4j +@Service +@RequiredArgsConstructor +public class SolgitReqListUseCaseImpl implements SolgitReqListUseCase { + + private final MciNclgClient mci; + private final SolgitReqListConverter converter; + + @Override + public Object execute(SolgitReqListRequest req) { + log.info("[MCI Tool] {} 요청 수신. 파라미터: {}", "solgitReqList", req); + try { + // 현업 테스트용으로 MCI 통신을 바이패스하고 하드코딩된 결과를 반환합니다. + SolgitReqListResponse res = new SolgitReqListResponse(); + List list = new ArrayList<>(); + + SolgitReqListItem item1 = new SolgitReqListItem(); + item1.setSrId("SR-2026-001"); + item1.setSrName("AX HUB 메인 화면 UI 개편"); + item1.setProcess("진행중"); + item1.setDevStage("개발(단위테스트)"); + item1.setAppName("AX HUB"); + item1.setRequester("윤희준"); + list.add(item1); + + SolgitReqListItem item2 = new SolgitReqListItem(); + item2.setSrId("SR-2026-002"); + item2.setSrName("툴 연동 모듈 추가 개발"); + item2.setProcess("진행중"); + item2.setDevStage("분석/설계"); + item2.setAppName("MCP Gateway"); + item2.setRequester("고석민"); + list.add(item2); + + res.setReqList(list); + + return res; + } catch (Exception e) { + log.error("[MCI Tool] 연동 중 오류 발생: {}", e.getMessage(), e); + return Map.of("status", "ERROR", "message", e.getMessage() != null ? e.getMessage() : "Unknown error"); + } + } +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/converter/TeamMemberConverter.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/converter/TeamMemberConverter.java new file mode 100644 index 00000000..202c3f12 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/converter/TeamMemberConverter.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.team.converter; + +import io.shinhanlife.dap.mcc.biz.team.dto.TeamMemberRequest; +import io.shinhanlife.dap.mcc.biz.team.dto.TeamMemberResponse; +import io.shinhanlife.dap.mcc.biz.team.legacy.TeamMemberLegacyRequest; +import io.shinhanlife.dap.mcc.biz.team.legacy.TeamMemberLegacyResponse; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +/** + * @package io.shinhanlife.dap.mcc.biz.team.converter + * @className TeamMemberConverter + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Mapper(componentModel = "spring") +public interface TeamMemberConverter { + TeamMemberLegacyRequest toLegacyRequest(TeamMemberRequest req); + + TeamMemberRequest toRequest(TeamMemberLegacyRequest legacyRequest); + + // TeamMemberResponse toResponse(TeamMemberLegacyResponse legacyResponse); +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberRequest.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberRequest.java new file mode 100644 index 00000000..3be1cd70 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberRequest.java @@ -0,0 +1,26 @@ +package io.shinhanlife.dap.mcc.biz.team.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.shinhanlife.dap.lib.annotation.McpParameter; +import lombok.Data; + +/** + * @package io.shinhanlife.dap.mcc.biz.team.dto + * @className TeamMemberRequest + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class TeamMemberRequest { + @McpParameter(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false) + private String teamName; +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberResponse.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberResponse.java new file mode 100644 index 00000000..2083680f --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/dto/TeamMemberResponse.java @@ -0,0 +1,24 @@ +package io.shinhanlife.dap.mcc.biz.team.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +/** + * @package io.shinhanlife.dap.mcc.biz.team.dto + * @className TeamMemberResponse + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class TeamMemberResponse { + private String result; +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyRequest.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyRequest.java new file mode 100644 index 00000000..ae7b94d3 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyRequest.java @@ -0,0 +1,30 @@ +package io.shinhanlife.dap.mcc.biz.team.legacy; + +import lombok.Data; + +/** + * @package io.shinhanlife.dap.mcc.biz.team.legacy + * @className TeamMemberLegacyRequest + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +public class TeamMemberLegacyRequest { + /** + * EAI 시스템이 요구하는 수신자 번호 파라미터명 + */ + private String phone; + + /** + * EAI 시스템이 요구하는 메시지 내용 파라미터명 + */ + private String content; +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyResponse.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyResponse.java new file mode 100644 index 00000000..817f64a2 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/legacy/TeamMemberLegacyResponse.java @@ -0,0 +1,22 @@ +package io.shinhanlife.dap.mcc.biz.team.legacy; + +import lombok.Data; + +/** + * @package io.shinhanlife.dap.mcc.biz.team.legacy + * @className TeamMemberLegacyResponse + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +public class TeamMemberLegacyResponse { + // TODO: Add legacy response fields here +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/TeamMemberUseCase.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/TeamMemberUseCase.java new file mode 100644 index 00000000..58d7560f --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/TeamMemberUseCase.java @@ -0,0 +1,23 @@ +package io.shinhanlife.dap.mcc.biz.team.usecase; + +import io.shinhanlife.dap.lib.annotation.McpFunction; +import io.shinhanlife.dap.lib.annotation.McpTool; +import io.shinhanlife.dap.mcc.biz.team.dto.TeamMemberRequest; + +@McpTool( + routingType = "DIRECT", + categoryKey = "team" +) +public interface TeamMemberUseCase { + @McpFunction( + displayName = "신한라이프 MCP, TOOL 파트 구성원 조회", + name = "get_mcp_tool_team_members", + description = "신한라이프 MCP, TOOL 파트 구성원을 조회합니다.", + prompt = "신한라이프 MCP, TOOL 파트 구성원을 조회해 줘. (주의: 응답 시 ** 등 마크다운 기호를 절대 사용하지 말고 평문으로만 출력해 줘)", + mappingId = "DIRECT0001", + register = false, + requiresApproval = false, + openWorldHint = true + ) + Object execute(TeamMemberRequest req); +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/impl/TeamMemberUseCaseImpl.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/impl/TeamMemberUseCaseImpl.java new file mode 100644 index 00000000..b471d65b --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/team/usecase/impl/TeamMemberUseCaseImpl.java @@ -0,0 +1,57 @@ +package io.shinhanlife.dap.mcc.biz.team.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.team.dto.TeamMemberRequest; +import io.shinhanlife.dap.mcc.biz.team.dto.TeamMemberResponse; +import io.shinhanlife.dap.mcc.biz.team.usecase.TeamMemberUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.biz.team.converter.TeamMemberConverter; +import org.springframework.stereotype.Service; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +/** + * @package io.shinhanlife.dap.mcc.biz.team.usecase.impl + * @className TeamMemberUseCaseImpl + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Slf4j +@Service +@RequiredArgsConstructor +public class TeamMemberUseCaseImpl extends AbstractMcpToolUseCase implements TeamMemberUseCase { + + private final TeamMemberConverter converter; + + @Override + public Object execute(TeamMemberRequest req) { + log.info("[A01] 신한라이프 MCP, TOOL 파트 구성원 조회 요청: {}", req); + + String filter = req != null && req.getTeamName() != null ? req.getTeamName().toUpperCase() : "전체"; + + String resultString = ""; + if (filter.contains("AX")) { + resultString += "ax 추진팀 박세진 프로\n"; + } else if (filter.contains("MCP") && !filter.contains("TOOL")) { + resultString += "MCP 팀은 고석민 수석 , 장효원 책임\n"; + } else if (filter.contains("TOOL") && !filter.contains("MCP")) { + resultString += "TOOL 팀은 김형식 수석 ,김영진 책임 , 김도겸 대리 , 이주희 선임 , 문주현 선임 , 이보람 대리 , 박수빈 대리\n"; + } else { + resultString += "ax 추진팀 박세진 프로\n" + + "MCP & TOOL 팀 담당자는 윤희준 이사\n" + + "MCP 팀은 고석민 수석 , 장효원 책임\n" + + "TOOL 팀은 김형식 수석 ,김영진 책임 , 김도겸 대리 , 이주희 선임 , 문주현 선임 , 이보람 대리 , 박수빈 대리"; + } + + TeamMemberResponse res = new TeamMemberResponse(); + res.setResult(resultString.trim()); + return res; + } +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java new file mode 100644 index 00000000..6ca133b0 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java @@ -0,0 +1,30 @@ +package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g; + +import org.springframework.stereotype.Component; +import lombok.RequiredArgsConstructor; +import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent; +import io.shinhanlife.glow.communication.dto.Transfer; + +/** + * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g + * @className MciNclgClient + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Component +@RequiredArgsConstructor +public class MciNclgClient { + private final AxhubMciComponent mci; + + public Transfer callTo(String interfaceId, String dummy, Object mciReq, Class resType) throws Exception { + return mci.callTo(interfaceId, dummy, mciReq, resType); + } +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java new file mode 100644 index 00000000..cc976137 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java @@ -0,0 +1,24 @@ +package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io; + +import lombok.Data; + +/** + * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io + * @className SOLG00000001_I + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +public class SOLG00000001_I { + private String reqStatus; + private String reqPeriod; + private String reqTarget; +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java new file mode 100644 index 00000000..7c1e4959 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java @@ -0,0 +1,34 @@ +package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io; + +import lombok.Data; + +import java.util.List; + +/** + * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io + * @className SOLG00000001_O + * @description AX HUB 시스템 처리 클래스 + * @author jade + * @create 2026.07.29 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.07.29  jade    최초생성
+ *
+ * 
+ */ +@Data +public class SOLG00000001_O { + private List reqList; + + @Data + public static class SOLG00000001_O_Item { + private String srId; + private String srName; + private String process; + private String devStage; + private String appName; + private String requester; + } +}