diff --git a/README.md b/README.md index 8d64e909..4028631a 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # DAP Backend -Spring Boot 기반 DAP 관리자 백엔드 API 서버 및 MCP(Model Context Protocol) Gateway / Tool 분산 서버 프로젝트입니다. +Spring Boot 기반 DAP 관리자 백엔드 API 서버 및 MCP(Model Context Protocol) Gateway / Tool 분산 서버 프로젝트 입니다. --- diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java new file mode 100644 index 00000000..87f56ee9 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java @@ -0,0 +1,31 @@ +package io.shinhanlife.dap.mcc.biz.cmm.converter; + +import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeRequest; +import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeResponse; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_O; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; + +/** + * @package io.shinhanlife.dap.mcc.biz.cmm.converter + * @className MetaCommonCodeConverter + * @description AX HUB 시스템 처리 클래스 + * @author 09863409 + * @create 2026.07.29 + *
+ * ---------- 개정이력 ---------- + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2026.07.29 09863409 최초생성 + * + *+ */ +@Mapper(componentModel = "spring") +public interface MetaCommonCodeConverter { + @Mapping(target = "csNo", source = "groupCode", defaultValue = "GRP_COMM_CD") + CLCNNB00001_I toLegacyRequest(MetaCommonCodeRequest req); + + @Mapping(target = "codeList", ignore = true) + MetaCommonCodeResponse toResponse(CLCNNB00001_O mciRes); +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java new file mode 100644 index 00000000..a28a3afe --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.biz.cmm.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import io.shinhanlife.dap.lib.annotation.McpParameter; +import lombok.Data; + +/** + * @package io.shinhanlife.dap.mcc.biz.cmm.dto + * @className MetaCommonCodeRequest + * @description AX HUB 시스템 처리 클래스 + * @author 09863409 + * @create 2026.07.29 + *
+ * ---------- 개정이력 ---------- + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2026.07.29 09863409 최초생성 + * + *+ */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class MetaCommonCodeRequest { + @McpParameter(description = "통합코드 그룹 ID (예: GRP_SYS_01, GRP_COMM_CD)", required = false) + private String groupCode; + + @McpParameter(description = "코드명 검색 키워드 (예: 사용, 상태)", required = false) + private String codeName; + + @McpParameter(description = "사용여부 (예: Y, N)", required = false) + private String useYn; +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java new file mode 100644 index 00000000..653a32a2 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java @@ -0,0 +1,37 @@ +package io.shinhanlife.dap.mcc.biz.cmm.dto; + +import com.fasterxml.jackson.annotation.JsonInclude; +import lombok.Data; + +import java.util.List; + +/** + * @package io.shinhanlife.dap.mcc.biz.cmm.dto + * @className MetaCommonCodeResponse + * @description AX HUB 시스템 처리 클래스 + * @author 09863409 + * @create 2026.07.29 + *
+ * ---------- 개정이력 ---------- + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2026.07.29 09863409 최초생성 + * + *+ */ +@Data +@JsonInclude(JsonInclude.Include.NON_NULL) +public class MetaCommonCodeResponse { + private List
+ * ---------- 개정이력 ---------- + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2026.07.29 09863409 최초생성 + * + *+ */ +@McpTool( + routingType = "MCI", + categoryKey = "cmm" +) +public interface MetaCommonCodeUseCase { + @McpFunction( + displayName = "메타 통합코드 조회 툴", + name = "metaCommonCode", + description = "메타 통합코드 목록을 조회해줘", + prompt = "메타 통합코드 목록을 조회해줘", + mappingId = "CLCNNB00001", + register = false, + requiresApproval = false, + openWorldHint = true + ) + Object execute(MetaCommonCodeRequest req); +} diff --git a/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java new file mode 100644 index 00000000..92ddf781 --- /dev/null +++ b/dap-tool-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java @@ -0,0 +1,89 @@ +package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.cmm.converter.MetaCommonCodeConverter; +import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeRequest; +import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeResponse; +import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeResponse.MetaCommonCodeItem; +import io.shinhanlife.dap.mcc.biz.cmm.usecase.MetaCommonCodeUseCase; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.MciCfpaClient; +import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl + * @className MetaCommonCodeUseCaseImpl + * @description AX HUB 시스템 처리 클래스 + * @author 09863409 + * @create 2026.07.29 + *
+ * ---------- 개정이력 ---------- + * 수정일 수정자 수정내용 + * ---------- -------- --------------------------- + * 2026.07.29 09863409 최초생성 + * + *+ */ +@Slf4j +@Service +@RequiredArgsConstructor +public class MetaCommonCodeUseCaseImpl implements MetaCommonCodeUseCase { + + private final MciCfpaClient mci; + private final MetaCommonCodeConverter converter; + + @Override + public Object execute(MetaCommonCodeRequest req) { + log.info("[MCI Tool] {} 요청 수신. 파라미터: {}", "metaCommonCode", req); + try { + CLCNNB00001_I mciRequest = converter.toLegacyRequest(req); + + Object mciResponse = mci.callCfpa0001(mciRequest); + log.info("[MCI Tool] CLCNNB00001 MCI call completed. Returning response status: {}", + mciResponse != null); + + // 현업 테스트용으로 MCI 통신을 바이패스하고 하드코딩된 메타 통합코드 샘플 결과를 반환합니다. + MetaCommonCodeResponse res = new MetaCommonCodeResponse(); + List