diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/CustomerGuidanceToolConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/CustomerGuidanceToolConverter.java deleted file mode 100644 index ac0a31b4..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/CustomerGuidanceToolConverter.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.converter; - -import io.shinhanlife.dap.mcc.biz.cmm.dto.CcCstUnfcNotiCarhDto; -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolRequest; -import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_I; -import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_O.CstUnfcNotiCarhInqrOutDto; -import org.mapstruct.*; - -import java.util.List; - -@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface CustomerGuidanceToolConverter { - - /** - * 고객통합이력조회 전사 Request -> I/F - */ - @Mapping(target = "cstUnfcNotiCarhInqrInDto.inqrEndYmd", source = "inqrEndYmd") - @Mapping(target = "cstUnfcNotiCarhInqrInDto.inqrStrtYmd", source = "inqrStrYmd") - @Mapping(target = "cstUnfcNotiCarhInqrInDto.notiPmlMdCd", source = "notiPmlMdCd") - @Mapping(target = "cstUnfcNotiCarhInqrInDto.ntleCd", source = "ntleCd") - @Mapping(target = "cstUnfcNotiCarhInqrInDto.csNo", source = "csNo") - public abstract ONILD0320_I toONILD0320_I(CustomerGuidanceToolRequest req); - - @Named("toCcCstUnfcNotiCarhDto") - public abstract CcCstUnfcNotiCarhDto toCcCstUnfcNotiCarhDto(CstUnfcNotiCarhInqrOutDto cstUnfcNotiCarhInqrOutDto); - - @IterableMapping(qualifiedByName = "toCcCstUnfcNotiCarhDto") - public abstract List toCcCstUnfcNotiCarhDtoList(List cstUnfcNotiCarhInqrOutDto); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java deleted file mode 100644 index 87f56ee9..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java +++ /dev/null @@ -1,31 +0,0 @@ -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-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaTableConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaTableConverter.java deleted file mode 100644 index c59e3524..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaTableConverter.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.converter; - -import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableRequest; -import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableResponse; -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 MetaTableConverter - * @description AX HUB 시스템 처리 클래스 - * @author 09863409 - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  09863409    최초생성
- * 
- * 
- */ -@Mapper(componentModel = "spring") -public interface MetaTableConverter { - @Mapping(target = "csNo", source = "tableName", defaultValue = "TB_META_BAS") - CLCNNB00001_I toLegacyRequest(MetaTableRequest req); - - @Mapping(target = "tableList", ignore = true) - MetaTableResponse toResponse(CLCNNB00001_O mciRes); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/AnalysisDataQueryRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/AnalysisDataQueryRequest.java deleted file mode 100644 index 30b1958f..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/AnalysisDataQueryRequest.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class AnalysisDataQueryRequest { - @Schema(description = "데이터 조회를 시작할 날짜", example = "2024-01-01") - private String startDate; - - @Schema(description = "데이터 조회를 종료할 날짜", example = "2024-12-31") - private String endDate; - - @Schema(description = "분석할 데이터 카테고리", example = "sales") - private String category; - - @Schema(description = "지역 필터", example = "seoul") - private String region; - - @Schema(description = "조회할 결과 수 제한", example = "100") - private Integer limit; - - @Schema(description = "조회할 결과 시작 위치", example = "0") - private Integer offset; - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CcCstUnfcNotiCarhDto.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CcCstUnfcNotiCarhDto.java deleted file mode 100644 index 73771a46..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CcCstUnfcNotiCarhDto.java +++ /dev/null @@ -1,97 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Builder; -import lombok.Data; -import lombok.Getter; -import lombok.Setter; - -@Getter -@Setter -@Builder -@Data -public class CcCstUnfcNotiCarhDto { - @Schema(description = "고객번호", example = "CUST123") - private String csNo; - - @Schema(description = "안내일시", example = "20260812093000") - private String notiDt; - - @Schema(description = "발송일련번호", example = "1") - private int pmlSriaNo; - - @Schema(description = "안내신청상세일시", example = "20260812092500") - private String notiPetDtptDt; - - @Schema(description = "안내장코드", example = "NT001") - private String ntleCd; - - @Schema(description = "안내장명", example = "카드대금 결제일 안내") - private String ntleNm; - - @Schema(description = "안내발송일련번호", example = "10") - private int notiPmlSriaNo; - - @Schema(description = "안내발송방법코드", example = "SMS") - private String notiPmlMdCd; - - @Schema(description = "안내수신정보암호화내용", example = "AbC123EncRypTed==") - private String notiRcvInfoEncrCt; - - @Schema(description = "메시지ID", example = "MSG20260812000001") - private String msgId; - - @Schema(description = "안내내용", example = "8월 카드대금 결제일은 8월 25일입니다.") - private String notiCt; - - @Schema(description = "통합안내발송결과코드", example = "00") - private String unfcNotiPmlRsltCd; - - @Schema(description = "통합안내발송결과상세코드", example = "0001") - private String unfcNotiPmlRsltDtptCd; - - @Schema(description = "발송시스템코드", example = "SYS01") - private String pmlSystCd; - - @Schema(description = "발송조직번호", example = "1001") - private String pmlOgnzNo; - - @Schema(description = "발송조직명", example = "고객지원팀") - private String pmlOgnzNm; - - @Schema(description = "발신기관조직명", example = "카드사업본부") - private String msdilttOgnzNm; - - @Schema(description = "조회구분명", example = "전체") - private String inqrDvsnNm; - - @Schema(description = "등록일시", example = "20260812090000") - private String rgiDt; - - @Schema(description = "등록자명", example = "홍길동") - private String rgstNm; - - @Schema(description = "등록자조직명", example = "고객지원팀") - private String rgstOgnzNm; - - @Schema(description = "최종변경자명", example = "김철수") - private String lstPrwpNm; - - @Schema(description = "최종변경일시", example = "20260812101500") - private String lstChgDt; - - @Schema(description = "최종변경자조직명", example = "운영지원팀") - private String lstPrwpOgnzNm; - - @Schema(description = "원천회사구분코드", example = "01") - private String oriCpnyDvsnCd; - - @Schema(description = "고객한글명", example = "이보람") - private String cstHanNm; - - @Schema(description = "시스템등록인사번호", example = "20260001") - private String systRgiPrafNo; - - @Schema(description = "시스템변경인사번호", example = "20260002") - private String systChgPrafNo; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolRequest.java deleted file mode 100644 index 0cdc45fb..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolRequest.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -@Data -@Getter -@Builder -public class CustomerGuidanceToolRequest { - @Schema(description = "고객번호", example = "CUST123") - private String csNo; - - @Schema(description = "안내장코드", example = "ab12321") - private String ntleCd; - - @Schema(description = "안내발송방법코드", example = "aa") - private String notiPmlMdCd; - - @Schema(description = "조회시작일자", example = "20260101") - private String inqrStrYmd; - - @Schema(description = "조회종료일자", example = "20260101") - private String inqrEndYmd; - - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolResponse.java deleted file mode 100644 index 150670fd..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolResponse.java +++ /dev/null @@ -1,21 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.util.List; - -@Getter -@Builder -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class CustomerGuidanceToolResponse { - - private String resultCode; - - private String resultMessage; - - private List ccCstUnfcNotiCarhDtoList; - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleStringResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleStringResponse.java deleted file mode 100644 index 441b1092..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleStringResponse.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.shinhanlife.glow.GlowMciFieldInfo; -import lombok.Data; -import java.util.List; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className MciSampleStringResponse - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class MciSampleStringResponse { - @GlowMciFieldInfo(order = 1, length = 10, description = "이름") - private String name; - - @GlowMciFieldInfo(order = 2, length = 3, description = "나이") - private int age; - - @GlowMciFieldInfo(order = 3, length = 8, description = "가입일자(YYYYMMDD)") - private String joinDate; - - @GlowMciFieldInfo(order = 4, length = 2, description = "상태코드") - private String statusCode; - - @GlowMciFieldInfo(order = 5, length = 30, description = "타겟 리스트", target = MciSampleTargetDto.class) - private List targetList; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleTargetDto.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleTargetDto.java deleted file mode 100644 index 6c11d39c..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleTargetDto.java +++ /dev/null @@ -1,20 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - -import io.shinhanlife.glow.GlowMciFieldInfo; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className MciSampleTargetDto - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - */ -@Data -public class MciSampleTargetDto { - @GlowMciFieldInfo(order = 1, length = 5, description = "항목 코드") - private String itemCode; - - @GlowMciFieldInfo(order = 2, length = 5, description = "항목 값") - private String itemValue; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java deleted file mode 100644 index 78a26a2a..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - - - - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonInclude; -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 { - @McpToolParam(description = "통합코드 그룹 ID (예: GRP_SYS_01, GRP_COMM_CD)", required = false) - @Schema(example = "GRP_001") - private String groupCode; - - -@McpToolParam(description = "코드명 검색 키워드 (예: 사용, 상태)", required = false) - private String codeName; - - @McpToolParam(description = "사용여부 (예: Y, N)", required = false) - @Schema(example = "Y") - private String useYn; -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java deleted file mode 100644 index 653a32a2..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -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 codeList; - - @Data - @JsonInclude(JsonInclude.Include.NON_NULL) - public static class MetaCommonCodeItem { - private String groupCode; - private String code; - private String codeName; - private String codeDesc; - private Integer sortSeq; - private String useYn; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableRequest.java deleted file mode 100644 index cccef9d4..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableRequest.java +++ /dev/null @@ -1,40 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - - - - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.biz.cmm.dto - * @className MetaTableRequest - * @description AX HUB 시스템 처리 클래스 - * @author 09863409 - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  09863409    최초생성
- * 
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class MetaTableRequest { - @McpToolParam(description = "테이블 물리명 키워드 (예: TB_CUST_BAS, TB_CONT)", required = false) - @Schema(example = "TB_USER") - private String tableName; - - -@McpToolParam(description = "테이블 논리명(한글) 키워드 (예: 고객기본, 계약)", required = false) - @Schema(example = "고객기본") - private String tableLogicalName; - - @McpToolParam(description = "스키마/소유자명 (예: DAPADM, SHLOWN)", required = false) - @Schema(example = "DAPADM") - private String owner; -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableResponse.java deleted file mode 100644 index 1b9eaf6b..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -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 MetaTableResponse - * @description AX HUB 시스템 처리 클래스 - * @author 09863409 - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  09863409    최초생성
- * 
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class MetaTableResponse { - private List tableList; - - @Data - @JsonInclude(JsonInclude.Include.NON_NULL) - public static class MetaTableItem { - private String owner; - private String tableName; - private String tableLogicalName; - private String tableDesc; - private Integer columnCount; - private Long rowCount; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringRequest.java deleted file mode 100644 index 8553125e..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringRequest.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - - -import io.swagger.v3.oas.annotations.media.Schema; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className SampleStringRequest - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class SampleStringRequest { - @Schema(example = "test query") - private String query; -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringResponse.java deleted file mode 100644 index ab1810d7..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringResponse.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.shinhanlife.glow.communication.annotation.GlowTrgmField; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className SampleStringResponse - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class SampleStringResponse { - @GlowTrgmField(order = 1, length = 10, description = "이름") - private String name; - - @GlowTrgmField(order = 2, length = 3, description = "나이") - private int age; - - @GlowTrgmField(order = 3, length = 8, description = "가입일자(YYYYMMDD)") - private String joinDate; - - @GlowTrgmField(order = 4, length = 2, description = "상태코드") - private String statusCode; - - @GlowTrgmField(order = 5, length = 10, description = "타겟") - private String target; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/TemplateDownloadRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/TemplateDownloadRequest.java deleted file mode 100644 index 96340c54..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/TemplateDownloadRequest.java +++ /dev/null @@ -1,38 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.dto; - - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.ToString; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className TemplateDownloadRequest - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -@Getter -@Builder -@ToString -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -public class TemplateDownloadRequest { - - /** - * 다운로드할 템플릿의 종류 ID (예: CUSTOMER_EXCEL, PRODUCT_PDF 등) - */ - @Schema(example = "TPL_001") - private String templateId; -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCase.java deleted file mode 100644 index 9777efec..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCase.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase; - -import io.shinhanlife.glow.BaseResponse; -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolRequest; -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolResponse; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestBody; - -/** - * @package io.shinhanlife.dap.mcc.biz.cmm.usecase - * @className CustomerGuidanceToolUseCase - * @description AX HUB ?쒖뒪??泥섎━ ?대옒?? - * @author Boram - * @create 2026.08.12 - *
- * ---------- 媛쒖젙?대젰 ----------
- * ?섏젙??     ?섏젙??   ?섏젙?댁슜
- * ---------- -------- ---------------------------
- * 2026.08.12  Boram    理쒖큹?앹꽦
- *
- * 
- */ -public interface CustomerGuidanceToolUseCase { - - @McpTool(name = "cmm_customer_tool", title = "고객 통합 안내이력 조회", description = "고객의 통합 안내 이력을 조회하는 도구입니다. 고객 ID와 조회 기간을 입력하면 해당 기간 동안의 안내 이력을 반환합니다.") - @GrowToolHint(categoryKey = "cmm", mappingId = "ONILD0320") - CustomerGuidanceToolResponse searchCustomerGuidance(CustomerGuidanceToolRequest req) throws Exception; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaCommonCodeUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaCommonCodeUseCase.java deleted file mode 100644 index 131b14af..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaCommonCodeUseCase.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; - -import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeRequest; - -/** - * @package io.shinhanlife.dap.mcc.biz.cmm.usecase - * @className MetaCommonCodeUseCase - * @description AX HUB 시스템 처리 클래스 - * @author 09863409 - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  09863409    최초생성
- * 
- * 
- */ -public interface MetaCommonCodeUseCase { - @McpTool(name = "cmm_comcode_lookup", title = "메타 공통코드 조회 툴", description = "메타 통합코드 목록을 조회해줘", annotations = @McpTool.McpAnnotations(openWorldHint = false)) - @GrowToolHint(requiresApproval = false, categoryKey = "cmm", mappingId = "CLCNNB00001") - Object searchCommonCode(MetaCommonCodeRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaTableUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaTableUseCase.java deleted file mode 100644 index b1c63896..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaTableUseCase.java +++ /dev/null @@ -1,26 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; - -import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableRequest; - -/** - * @package io.shinhanlife.dap.mcc.biz.cmm.usecase - * @className MetaTableUseCase - * @description AX HUB 시스템 처리 클래스 - * @author 09863409 - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  09863409    최초생성
- * 
- * 
- */ -public interface MetaTableUseCase { - @McpTool(name = "cmm_meta_table", title = "메타 테이블 조회 툴", description = "메타 테이블 정보 목록을 조회해줘", annotations = @McpTool.McpAnnotations(openWorldHint = false)) - @GrowToolHint(requiresApproval = false, categoryKey = "cmm", mappingId = "CLCNNB00001") - Object searchMetaTable(MetaTableRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java deleted file mode 100644 index bc42d8db..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java +++ /dev/null @@ -1,14 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase; - - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; -import io.shinhanlife.dap.mcc.biz.cmm.dto.*; - -import java.util.Map; - -public interface TemplateUtilityUseCase { - @McpTool(name = "cmm_template_url", title = "템플릿 유틸리티 툴", description = "요청한 템플릿(엑셀, 워드 등) 파일(양식)을 다운로드 받을 수 있는 시스템 URL을 반환합니다. AI는 이 URL을 사용자에게 마크다운 링크 형태로 제공해야 합니다.") - @GrowToolHint(categoryKey = "cmm") - Map getTemplateFileUrl(TemplateDownloadRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerGuidanceToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerGuidanceToolUseCaseImpl.java deleted file mode 100644 index 688d406f..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerGuidanceToolUseCaseImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.cmm.dto.CcCstUnfcNotiCarhDto; -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolRequest; -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolResponse; -import io.shinhanlife.dap.mcc.biz.cmm.usecase.CustomerGuidanceToolUseCase; -import io.shinhanlife.glow.BaseResponse; -import io.shinhanlife.glow.ResponseUtil; -import io.shinhanlife.glow.communication.dto.Transfer; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Service; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import io.shinhanlife.dap.mcc.biz.cmm.converter.CustomerGuidanceToolConverter; -import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_I; -import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_O; -import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.MciNildClient; - -import java.util.List; -import java.util.Map; - - -/** - * @package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl - * @className CustomerGuidanceToolUseCaseImpl - * @description AX HUB ?쒖뒪??泥섎━ ?대옒?? - * @author Boram - * @create 2026.08.12 - *
- * ---------- 媛쒖젙?대젰 ----------
- * ?섏젙??     ?섏젙??   ?섏젙?댁슜
- * ---------- -------- ---------------------------
- * 2026.08.12  Boram    理쒖큹?앹꽦
- *
- * 
- */ -@Slf4j -@Service -@RequiredArgsConstructor -public class CustomerGuidanceToolUseCaseImpl implements CustomerGuidanceToolUseCase { - - private final MciNildClient mci; - private final CustomerGuidanceToolConverter converter; - - @Override - public CustomerGuidanceToolResponse searchCustomerGuidance(CustomerGuidanceToolRequest req) throws Exception { - ONILD0320_I onild0320_i = converter.toONILD0320_I(req); - ONILD0320_O onild0320_o = mci.callOnild0320(onild0320_i); - - List ccCstUnfcNotiCarhDtoList = converter.toCcCstUnfcNotiCarhDtoList(onild0320_o.getCstUnfcNotiCarhInqrOutDto()); - - return CustomerGuidanceToolResponse.builder() - .ccCstUnfcNotiCarhDtoList(ccCstUnfcNotiCarhDtoList) - .resultCode("SUCCESS") - .resultMessage("") - .build(); - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java deleted file mode 100644 index 5aa0bbba..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -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 searchCommonCode(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 list = new ArrayList<>(); - - MetaCommonCodeItem item1 = new MetaCommonCodeItem(); - item1.setGroupCode(req.getGroupCode() != null ? req.getGroupCode() : "GRP_COMM_CD"); - item1.setCode("CD001"); - item1.setCodeName("진행중"); - item1.setCodeDesc("SR 요청 처리 진행 중 상태"); - item1.setSortSeq(1); - item1.setUseYn("Y"); - list.add(item1); - - MetaCommonCodeItem item2 = new MetaCommonCodeItem(); - item2.setGroupCode(req.getGroupCode() != null ? req.getGroupCode() : "GRP_COMM_CD"); - item2.setCode("CD002"); - item2.setCodeName("완료"); - item2.setCodeDesc("SR 요청 처리 완료 상태"); - item2.setSortSeq(2); - item2.setUseYn("Y"); - list.add(item2); - - MetaCommonCodeItem item3 = new MetaCommonCodeItem(); - item3.setGroupCode(req.getGroupCode() != null ? req.getGroupCode() : "GRP_COMM_CD"); - item3.setCode("CD003"); - item3.setCodeName("보류"); - item3.setCodeDesc("SR 요청 처리 일시 보류 상태"); - item3.setSortSeq(3); - item3.setUseYn("N"); - list.add(item3); - - res.setCodeList(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-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaTableUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaTableUseCaseImpl.java deleted file mode 100644 index 9b45776e..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaTableUseCaseImpl.java +++ /dev/null @@ -1,89 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.cmm.converter.MetaTableConverter; -import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableRequest; -import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableResponse; -import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableResponse.MetaTableItem; -import io.shinhanlife.dap.mcc.biz.cmm.usecase.MetaTableUseCase; -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 MetaTableUseCaseImpl - * @description AX HUB 시스템 처리 클래스 - * @author 09863409 - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  09863409    최초생성
- * 
- * 
- */ -@Slf4j -@Service -@RequiredArgsConstructor -public class MetaTableUseCaseImpl implements MetaTableUseCase { - - private final MciCfpaClient mci; - private final MetaTableConverter converter; - - @Override - public Object searchMetaTable(MetaTableRequest req) { - log.info("[MCI Tool] {} 요청 수신. 파라미터: {}", "metaTable", 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 통신을 바이패스하고 하드코딩된 메타 테이블 샘플 결과를 반환합니다. - MetaTableResponse res = new MetaTableResponse(); - List list = new ArrayList<>(); - - MetaTableItem item1 = new MetaTableItem(); - item1.setOwner(req.getOwner() != null ? req.getOwner() : "DAPADM"); - item1.setTableName(req.getTableName() != null ? req.getTableName() : "TB_CUST_BAS"); - item1.setTableLogicalName("고객기본정보"); - item1.setTableDesc("고객 기본 프로필 및 인적사항 관리 테이블"); - item1.setColumnCount(35); - item1.setRowCount(1250000L); - list.add(item1); - - MetaTableItem item2 = new MetaTableItem(); - item2.setOwner(req.getOwner() != null ? req.getOwner() : "DAPADM"); - item2.setTableName("TB_CONT_MCD"); - item2.setTableLogicalName("계약주계약정보"); - item2.setTableDesc("보험 계약 주계약 상세 원장 테이블"); - item2.setColumnCount(58); - item2.setRowCount(3400000L); - list.add(item2); - - MetaTableItem item3 = new MetaTableItem(); - item3.setOwner(req.getOwner() != null ? req.getOwner() : "DAPADM"); - item3.setTableName("TB_CLAIM_DTL"); - item3.setTableLogicalName("청구접수상세"); - item3.setTableDesc("보험금 청구 접수 건별 내역 테이블"); - item3.setColumnCount(42); - item3.setRowCount(890000L); - list.add(item3); - - res.setTableList(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-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java deleted file mode 100644 index 5cb28b3f..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java +++ /dev/null @@ -1,57 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.cmm.usecase.TemplateUtilityUseCase; -import io.shinhanlife.dap.mcc.biz.cmm.dto.TemplateDownloadRequest; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.Collections; -import java.util.HashMap; -import java.util.Map; - -@Slf4j -@Service - -/** - * @package io.shinhanlife.dap.mcc.service - * @className TemplateUtilityService - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -public class TemplateUtilityUseCaseImpl implements TemplateUtilityUseCase { - - @Override - public Map getTemplateFileUrl(TemplateDownloadRequest data) { - try { - String templateId = (data != null && data.getTemplateId() != null) ? data.getTemplateId().toLowerCase() : "default"; - log.info("MCP 툴 호출됨: get_template_file_url, 요청 템플릿 ID: {}", templateId); - - String fileName = "sample_" + templateId + ".xlsx"; - String downloadUrl = "https://axhub-file-server.shinhanlife.io/downloads/" + fileName; - - Map result = new HashMap<>(); - result.put("status", "success"); - - Map contract = new HashMap<>(); - contract.put("fileName", fileName); - contract.put("downloadUrl", downloadUrl); - contract.put("message", "다운로드 링크가 성공적으로 생성되었습니다. AI는 이 링크를 마크다운 형식으로 사용자에게 전달해야 합니다."); - contract.put("status", "success"); - - result.put("contracts", Collections.singletonList(contract)); - - return result; - } catch (Exception e) { - log.error("getTemplateFileUrl 내부 예외 발생", e); - throw new RuntimeException("템플릿 URL 생성 실패", e); - } - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/dto/CrmToolRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/dto/CrmToolRequest.java new file mode 100644 index 00000000..bf0022f5 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/dto/CrmToolRequest.java @@ -0,0 +1,34 @@ +package io.shinhanlife.dap.mcc.biz.crm.dto; + +import lombok.Data; +import org.springaicommunity.mcp.annotation.McpToolParam; + +@Data +public class CrmToolRequest { + @McpToolParam(description = "업무 대상 식별자", required = false) + private String subjectId; + + @McpToolParam(description = "고객 식별자", required = false) + private String customerId; + + @McpToolParam(description = "검색어 또는 처리 내용", required = false) + private String content; + + @McpToolParam(description = "상태, 유형, 등급 또는 처리 값", required = false) + private String value; + + @McpToolParam(description = "담당자 식별자", required = false) + private String assigneeId; + + @McpToolParam(description = "조회 시작일(YYYY-MM-DD)", required = false) + private String startDate; + + @McpToolParam(description = "조회 종료일 또는 처리 예정일(YYYY-MM-DD)", required = false) + private String endDate; + + @McpToolParam(description = "페이지 번호", required = false) + private Integer page; + + @McpToolParam(description = "페이지 크기", required = false) + private Integer size; +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/dto/CrmToolResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/dto/CrmToolResponse.java new file mode 100644 index 00000000..5880deb4 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/dto/CrmToolResponse.java @@ -0,0 +1,15 @@ +package io.shinhanlife.dap.mcc.biz.crm.dto; + +import java.util.List; +import lombok.Data; + +@Data +public class CrmToolResponse { + private String toolName; + private String category; + private String referenceId; + private String status; + private String summary; + private String processedAt; + private List details; +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/usecase/CrmToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/usecase/CrmToolUseCase.java new file mode 100644 index 00000000..507c2519 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/usecase/CrmToolUseCase.java @@ -0,0 +1,60 @@ +package io.shinhanlife.dap.mcc.biz.crm.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolRequest; +import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface CrmToolUseCase { + @McpTool(name = "crm_customer_search", title = "고객 통합 조회", description = "고객 통합 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_CUSTOMER_SEARCH") + CrmToolResponse searchCustomers(CrmToolRequest request); + @McpTool(name = "crm_customer_detail", title = "고객 상세 정보 조회", description = "고객 상세 정보 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_CUSTOMER_DETAIL") + CrmToolResponse getCustomerDetail(CrmToolRequest request); + @McpTool(name = "crm_customer_create", title = "고객 정보 등록", description = "고객 정보 등록 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_CUSTOMER_CREATE") + CrmToolResponse createCustomer(CrmToolRequest request); + @McpTool(name = "crm_customer_update", title = "고객 정보 수정", description = "고객 정보 수정 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_CUSTOMER_UPDATE") + CrmToolResponse updateCustomer(CrmToolRequest request); + @McpTool(name = "crm_customer_duplicate_check", title = "고객 중복 여부 확인", description = "고객 중복 여부 확인 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_CUSTOMER_DUPLICATE_CHECK") + CrmToolResponse checkDuplicateCustomer(CrmToolRequest request); + @McpTool(name = "crm_consultation_history", title = "고객 상담 이력 조회", description = "고객 상담 이력 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_CONSULTATION_HISTORY") + CrmToolResponse getConsultationHistory(CrmToolRequest request); + @McpTool(name = "crm_consultation_register", title = "고객 상담 이력 등록", description = "고객 상담 이력 등록 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_CONSULTATION_REGISTER") + CrmToolResponse registerConsultation(CrmToolRequest request); + @McpTool(name = "crm_contact_history", title = "고객 접촉 이력 조회", description = "고객 접촉 이력 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_CONTACT_HISTORY") + CrmToolResponse getContactHistory(CrmToolRequest request); + @McpTool(name = "crm_contact_register", title = "고객 접촉 이력 등록", description = "고객 접촉 이력 등록 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_CONTACT_REGISTER") + CrmToolResponse registerContact(CrmToolRequest request); + @McpTool(name = "crm_grade_detail", title = "고객 등급 조회", description = "고객 등급 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_GRADE_DETAIL") + CrmToolResponse getCustomerGrade(CrmToolRequest request); + @McpTool(name = "crm_grade_change", title = "고객 등급 변경", description = "고객 등급 변경 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_GRADE_CHANGE") + CrmToolResponse changeCustomerGrade(CrmToolRequest request); + @McpTool(name = "crm_segment_detail", title = "고객 세그먼트 조회", description = "고객 세그먼트 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_SEGMENT_DETAIL") + CrmToolResponse getCustomerSegment(CrmToolRequest request); + @McpTool(name = "crm_tag_manage", title = "고객 태그 관리", description = "고객 태그 관리 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_TAG_MANAGE") + CrmToolResponse manageCustomerTags(CrmToolRequest request); + @McpTool(name = "crm_consent_detail", title = "고객 동의 정보 조회", description = "고객 동의 정보 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_CONSENT_DETAIL") + CrmToolResponse getCustomerConsent(CrmToolRequest request); + @McpTool(name = "crm_consent_change", title = "고객 동의 정보 변경", description = "고객 동의 정보 변경 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_CONSENT_CHANGE") + CrmToolResponse changeCustomerConsent(CrmToolRequest request); + @McpTool(name = "crm_owner_assign", title = "고객 담당자 배정", description = "고객 담당자 배정 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "crm", mappingId = "DIRECT_CRM_OWNER_ASSIGN") + CrmToolResponse assignCustomerOwner(CrmToolRequest request); + @McpTool(name = "crm_activity_status", title = "고객 활동 현황 조회", description = "고객 활동 현황 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "crm", mappingId = "DIRECT_CRM_ACTIVITY_STATUS") + CrmToolResponse getCustomerActivityStatus(CrmToolRequest request); +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/usecase/impl/CrmToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/usecase/impl/CrmToolUseCaseImpl.java new file mode 100644 index 00000000..ed6e01ed --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/crm/usecase/impl/CrmToolUseCaseImpl.java @@ -0,0 +1,95 @@ +package io.shinhanlife.dap.mcc.biz.crm.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolRequest; +import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolResponse; +import io.shinhanlife.dap.mcc.biz.crm.usecase.CrmToolUseCase; +import java.time.LocalDateTime; +import java.util.List; +import org.springframework.stereotype.Service; + +@Service +public class CrmToolUseCaseImpl implements CrmToolUseCase { + @Override + public CrmToolResponse searchCustomers(CrmToolRequest request) { + return mockResponse(request, "crm_customer_search", "고객 통합 조회"); + } + @Override + public CrmToolResponse getCustomerDetail(CrmToolRequest request) { + return mockResponse(request, "crm_customer_detail", "고객 상세 정보 조회"); + } + @Override + public CrmToolResponse createCustomer(CrmToolRequest request) { + return mockResponse(request, "crm_customer_create", "고객 정보 등록"); + } + @Override + public CrmToolResponse updateCustomer(CrmToolRequest request) { + return mockResponse(request, "crm_customer_update", "고객 정보 수정"); + } + @Override + public CrmToolResponse checkDuplicateCustomer(CrmToolRequest request) { + return mockResponse(request, "crm_customer_duplicate_check", "고객 중복 여부 확인"); + } + @Override + public CrmToolResponse getConsultationHistory(CrmToolRequest request) { + return mockResponse(request, "crm_consultation_history", "고객 상담 이력 조회"); + } + @Override + public CrmToolResponse registerConsultation(CrmToolRequest request) { + return mockResponse(request, "crm_consultation_register", "고객 상담 이력 등록"); + } + @Override + public CrmToolResponse getContactHistory(CrmToolRequest request) { + return mockResponse(request, "crm_contact_history", "고객 접촉 이력 조회"); + } + @Override + public CrmToolResponse registerContact(CrmToolRequest request) { + return mockResponse(request, "crm_contact_register", "고객 접촉 이력 등록"); + } + @Override + public CrmToolResponse getCustomerGrade(CrmToolRequest request) { + return mockResponse(request, "crm_grade_detail", "고객 등급 조회"); + } + @Override + public CrmToolResponse changeCustomerGrade(CrmToolRequest request) { + return mockResponse(request, "crm_grade_change", "고객 등급 변경"); + } + @Override + public CrmToolResponse getCustomerSegment(CrmToolRequest request) { + return mockResponse(request, "crm_segment_detail", "고객 세그먼트 조회"); + } + @Override + public CrmToolResponse manageCustomerTags(CrmToolRequest request) { + return mockResponse(request, "crm_tag_manage", "고객 태그 관리"); + } + @Override + public CrmToolResponse getCustomerConsent(CrmToolRequest request) { + return mockResponse(request, "crm_consent_detail", "고객 동의 정보 조회"); + } + @Override + public CrmToolResponse changeCustomerConsent(CrmToolRequest request) { + return mockResponse(request, "crm_consent_change", "고객 동의 정보 변경"); + } + @Override + public CrmToolResponse assignCustomerOwner(CrmToolRequest request) { + return mockResponse(request, "crm_owner_assign", "고객 담당자 배정"); + } + @Override + public CrmToolResponse getCustomerActivityStatus(CrmToolRequest request) { + return mockResponse(request, "crm_activity_status", "고객 활동 현황 조회"); + } + private CrmToolResponse mockResponse(CrmToolRequest request, String toolName, String title) { + CrmToolResponse response = new CrmToolResponse(); + response.setToolName(toolName); + response.setCategory("CRM"); + response.setReferenceId(request != null && hasText(request.getSubjectId()) ? request.getSubjectId() : "CRM-000001"); + response.setStatus("정상"); + response.setSummary(title + " 처리 결과"); + response.setProcessedAt(LocalDateTime.now().toString()); + response.setDetails(List.of(title + " 모의 상세 정보", "외부 시스템을 변경하지 않는 샘플 응답")); + return response; + } + + private boolean hasText(String value) { + return value != null && !value.isBlank(); + } +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/converter/InsuranceClaimProcessorConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/converter/InsuranceClaimProcessorConverter.java deleted file mode 100644 index e6d7d139..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/converter/InsuranceClaimProcessorConverter.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.ins.converter; - -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorRequest; -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorResponse; -import io.shinhanlife.dap.mcc.infra.itrf.http.insurance.io.InsuranceClaimProcessorHttpRequest; -import io.shinhanlife.dap.mcc.infra.itrf.http.insurance.io.InsuranceClaimProcessorHttpResponse; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; -import org.mapstruct.ReportingPolicy; - -@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE) -public interface InsuranceClaimProcessorConverter { - // Field names differ? Add mappings like this before the method. - // @Mapping(source = "sourceField", target = "targetField") - InsuranceClaimProcessorHttpRequest toHttpRequest(InsuranceClaimProcessorRequest request); - InsuranceClaimProcessorResponse toResponse(InsuranceClaimProcessorHttpResponse httpResponse); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorRequest.java deleted file mode 100644 index ccc1338d..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.ins.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class InsuranceClaimProcessorRequest { - @Schema(description = "보험 청구 번호", example = "CLM20230001", requiredMode = Schema.RequiredMode.REQUIRED) - private String claimNumber; - - @Schema(description = "청구 금액", example = "1500000.00", requiredMode = Schema.RequiredMode.REQUIRED) - private Double claimAmount; - - @Schema(description = "청구 일자 (YYYY-MM-DD)", example = "2023-09-15", requiredMode = Schema.RequiredMode.REQUIRED) - private String claimDate; - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorResponse.java deleted file mode 100644 index a4830ea5..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.ins.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class InsuranceClaimProcessorResponse { - private String resultCode; - - private String resultMessage; - @Schema(description = "청구 처리 고유 식별자", example = "CLM20230001", requiredMode = Schema.RequiredMode.REQUIRED) - private String claimId; - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCase.java deleted file mode 100644 index d1918351..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCase.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.ins.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorRequest; -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorResponse; - -/** - * @package io.shinhanlife.dap.mcc.biz.ins.usecase - * @className InsuranceClaimProcessorUseCase - * @description AX HUB 시스템 처리 클래스 - * @author Admin - * @create 2026.08.11 - *
- * ---------- 개정이력 ----------
- * 수정일       수정자     수정내용
- * ---------- -------- ---------------------------
- * 2026.08.11  Admin    최초생성
- *
- * 
- */ -public interface InsuranceClaimProcessorUseCase { - - @McpTool(name = "ins_insurance_processor", title = "보험금 청구", description = "보험금 청구 요청을 처리하고 결과를 반환하는 LLM 도구 가이드") - @GrowToolHint(categoryKey = "ins", mappingId = "CLAIM0000001") - InsuranceClaimProcessorResponse processInsuranceClaim(InsuranceClaimProcessorRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/impl/InsuranceClaimProcessorUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/impl/InsuranceClaimProcessorUseCaseImpl.java deleted file mode 100644 index 7003480b..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/impl/InsuranceClaimProcessorUseCaseImpl.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.ins.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.ins.converter.InsuranceClaimProcessorConverter; -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorRequest; -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorResponse; -import io.shinhanlife.dap.mcc.infra.itrf.http.insurance.InsuranceClient; -import io.shinhanlife.dap.mcc.infra.itrf.http.insurance.io.InsuranceClaimProcessorHttpRequest; -import io.shinhanlife.dap.mcc.infra.itrf.http.insurance.io.InsuranceClaimProcessorHttpResponse; -import io.shinhanlife.dap.mcc.biz.ins.usecase.InsuranceClaimProcessorUseCase; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -@Service -@RequiredArgsConstructor -public class InsuranceClaimProcessorUseCaseImpl implements InsuranceClaimProcessorUseCase { - - private final InsuranceClaimProcessorConverter converter; - private final InsuranceClient insuranceClient; - - @Override - public InsuranceClaimProcessorResponse processInsuranceClaim(InsuranceClaimProcessorRequest req) { - InsuranceClaimProcessorHttpRequest httpRequest = converter.toHttpRequest(req); - InsuranceClaimProcessorHttpResponse httpResponse = insuranceClient.call(httpRequest, InsuranceClaimProcessorHttpResponse.class); - - InsuranceClaimProcessorResponse response = converter.toResponse(httpResponse); - response.setResultCode("SUCCESS"); - response.setResultMessage("HTTP API call completed."); - return response; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java deleted file mode 100644 index 97c6820c..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.oth.converter; - -import io.shinhanlife.dap.mcc.biz.oth.dto.Onnba3011Request; -import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; -import org.mapstruct.Mapper; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter - * @className Onnba3011Converter - * @description Converts ONNBA tool input into the CLCNNB00001 MCI payload - * @author 0986406 - * @create 2026.07.27 - *
- * ---------- revision history ----------
- * date       author    description
- * ---------- --------- ---------------------------
- * 2026.07.27 0986406    initial creation
- * 
- */ -@Mapper(componentModel = "spring") -public interface Onnba3011Converter { - - CLCNNB00001_I toMciRequest(Onnba3011Request source); - - CLCNNB00001_I.UnfcPrbuIrcoAdduDto toUnfcPrbuIrcoAddu( - Onnba3011Request.UnfcPrbuIrcoAdduDto source); - - CLCNNB00001_I.SucoIspaBasDto toSucoIspaBas(Onnba3011Request.SucoIspaBasDto source); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/dto/Onnba3011Request.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/dto/Onnba3011Request.java deleted file mode 100644 index 7eafeaae..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/dto/Onnba3011Request.java +++ /dev/null @@ -1,119 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.oth.dto; - -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyDescription; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className Onnba3011ReqDto - * @description 보종By가입설계한도계산조회 MCI 요청 전문 (ONNBA3011_I) - * @author 0986406 - * @create 2026.09.01 - */ -@Data -public class Onnba3011Request { - - @JsonPropertyDescription("통합기계약보험 (유형: gs, 길이: 72)") - @JsonProperty("unfcPrbuIrcoAddu") - private UnfcPrbuIrcoAdduDto unfcPrbuIrcoAddu; - - @JsonPropertyDescription("처리구분코드 (길이: 1)") - @JsonProperty("dalScCd") - private String dalScCd; - - @JsonPropertyDescription("고객청약관계 (길이: 2)") - @JsonProperty("cstSucoRltyCd") - private String cstSucoRltyCd; - - @JsonPropertyDescription("고객번호 (길이: 12)") - @JsonProperty("csNo") - private String csNo; - - @JsonPropertyDescription("주민등록번호 (길이: 50)") - @JsonProperty("rdreNo") - private String rdreNo; - - @JsonPropertyDescription("통합급부계산 (길이: 1)") - @JsonProperty("unfcPvsCalReqYn") - private String unfcPvsCalReqYn; - - @JsonPropertyDescription("한국신용정보 (길이: 1)") - @JsonProperty("kcisPymmTnnrRequest") - private String kcisPymmTnnrRequest; - - @JsonPropertyDescription("한도초과여부 (길이: 1)") - @JsonProperty("lmovYn") - private String lmovYn; - - @JsonPropertyDescription("일반경유승인 (길이: 1)") - @JsonProperty("genPsthApvTrgtYn") - private String genPsthApvTrgtYn; - - @JsonPropertyDescription("보험사한도초과 (길이: 1)") - @JsonProperty("ircoLmovEcpbTrgtYn") - private String ircoLmovEcpbTrgtYn; - - @JsonPropertyDescription("진단계산여부 (길이: 1)") - @JsonProperty("digCalYn") - private String digCalYn; - - @JsonPropertyDescription("기계약포함진단 (길이: 1)") - @JsonProperty("prbuIciDigCalYn") - private String prbuIciDigCalYn; - - @JsonPropertyDescription("청약심사기본Dto (유형: gs, 길이: 2532)") - @JsonProperty("sucoIspaBasDto") - private SucoIspaBasDto sucoIspaBasDto; - - // ----- Nested DTO Classes ----- - - @Data - public static class UnfcPrbuIrcoAdduDto { - // 실제 필요한 하위 필드들 추가 (사진 생략부분) - } - - @Data - public static class SucoIspaBasDto { - - @JsonPropertyDescription("계약처리유형 (길이: 2)") - @JsonProperty("ccnDalTypCd") - private String ccnDalTypCd; - - @JsonPropertyDescription("신계약입력경로 (길이: 2)") - @JsonProperty("nwcnptCursCd") - private String nwcnptCursCd; - - @JsonPropertyDescription("개인단체계약 (길이: 2)") - @JsonProperty("induAsctScCd") - private String induAsctScCd; - - @JsonPropertyDescription("모집조직번호 (길이: 7)") - @JsonProperty("cepeOgnzNo") - private String cepeOgnzNo; - - @JsonPropertyDescription("모집자사번번호 (길이: 8)") - @JsonProperty("cepePrafNo") - private String cepePrafNo; - - @JsonPropertyDescription("수금조직번호 (길이: 7)") - @JsonProperty("clmoOgnzNo") - private String clmoOgnzNo; - - @JsonPropertyDescription("수금자사번번호 (길이: 8)") - @JsonProperty("clmoPrafNo") - private String clmoPrafNo; - - @JsonPropertyDescription("청약일자 (길이: 20)") - @JsonProperty("sucoYmd") - private String sucoYmd; - - @JsonPropertyDescription("발행일자 (길이: 20)") - @JsonProperty("ispDt") - private String ispDt; - - @JsonPropertyDescription("계약일자 (길이: 20)") - @JsonProperty("contYmd") - private String contYmd; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/Onnba3011UseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/Onnba3011UseCase.java deleted file mode 100644 index d10203ec..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/Onnba3011UseCase.java +++ /dev/null @@ -1,11 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.oth.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; -import io.shinhanlife.dap.mcc.biz.oth.dto.*; - -public interface Onnba3011UseCase { - @McpTool(name = "oth_onnba3011_call", description = "Onnba3011 호출 툴") - @GrowToolHint(categoryKey = "oth") - Object callOnnba3011(Onnba3011Request req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImpl.java deleted file mode 100644 index 2bd62e68..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImpl.java +++ /dev/null @@ -1,58 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.oth.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.oth.converter.Onnba3011Converter; -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 io.shinhanlife.dap.mcc.biz.oth.usecase.Onnba3011UseCase; -import io.shinhanlife.dap.mcc.biz.oth.dto.Onnba3011Request; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -/** - * @package io.shinhanlife.dap.mcc.service - * @className OnnbaMciToolService - * @description 보종By가입설계한도계산조회 MCI 연동 툴 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -@Slf4j -@Service -@RequiredArgsConstructor -public class Onnba3011UseCaseImpl implements Onnba3011UseCase { - - private static final String INTERFACE_CODE_3011 = "CLCNNB00001"; - - // 공통 MCI Client 주입 - private final MciCfpaClient mciCfpaClient; - private final Onnba3011Converter onnba3011Converter; - /** - * AI Agent가 호출하게 될 메서드입니다. - */ - @Override - public Object callOnnba3011(Onnba3011Request req) { - log.info("[MCI Tool] 보종By가입설계한도계산조회 요청 수신."); - - try { - // MciCfpaClient를 통한 호출 - CLCNNB00001_I mciRequest = onnba3011Converter.toMciRequest(req); - Object response = mciCfpaClient.callCfpa0001(mciRequest); - - log.info("[MCI Tool] Glow 기반 MCI 연동 성공."); - - // 결과 반환 - return response != null ? response : "{\"status\":\"SUCCESS\", \"message\":\"GlowMciComponent 통신 완료\"}"; - - } catch (Exception e) { - log.error("[MCI Tool] MCI 연동 중 오류 발생: {}", e.getMessage(), e); - return "{\"status\":\"ERROR\", \"message\":\"MCI 통신 실패: " + e.getMessage() + "\"}"; - } - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteRequest.java deleted file mode 100644 index 848b2e84..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - - - - - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class DailyQuoteRequest { - - @McpToolParam(description = "카테고리 (예: 속담 등)", required = false) - @Schema(example = "속담") - private String category; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteResponse.java deleted file mode 100644 index bb09b716..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteResponse.java +++ /dev/null @@ -1,3 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - -public record DailyQuoteResponse(String quote, String author) {} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateRequest.java deleted file mode 100644 index 8a2f2fe2..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateRequest.java +++ /dev/null @@ -1,18 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - - - - - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class ExchangeRateRequest { - @McpToolParam(description = "환율 코드 (예: USD 등)", required = false) - @Schema(example = "USD") - private String currencyCode; -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateResponse.java deleted file mode 100644 index 4968d01a..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateResponse.java +++ /dev/null @@ -1,3 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - -public record ExchangeRateResponse(String baseCurrency, String targetCurrency, double rate) {} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberRequest.java deleted file mode 100644 index 229232e7..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberRequest.java +++ /dev/null @@ -1,32 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - - - - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.biz.smp.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 { - @McpToolParam(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false) - @Schema(example = "TOOL") - private String teamName; - -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberResponse.java deleted file mode 100644 index f10b8ace..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberResponse.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.biz.smp.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-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherRequest.java deleted file mode 100644 index 3d4e8a78..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherRequest.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - - - -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonProperty; -import com.fasterxml.jackson.annotation.JsonPropertyDescription; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className WeatherRequest - * @description 기상 조회 요청 클래스 - * @author 0986406 - * @create 2026.07.14 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.14  0986406    최초생성
- * 
- * 
- */ -public record WeatherRequest( - @McpToolParam(description = "도시를 입력하세여(예: 서울)", required = true) - String city -) { -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherResponse.java deleted file mode 100644 index 4e153681..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherResponse.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.dto; - -/** - * @package io.shinhanlife.dap.mcc.dto - * @className WeatherResponse - * @description 기상 조회 응답 클래스 - * @author 0986406 - * @create 2026.07.14 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.14  0986406    최초생성
- * 
- * 
- */ -public record WeatherResponse( - String city, - double temperature, - double windSpeed, - String reportTime, - String summary -) { -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/DailyQuoteToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/DailyQuoteToolUseCase.java deleted file mode 100644 index 05dfe524..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/DailyQuoteToolUseCase.java +++ /dev/null @@ -1,13 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase; - - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; -import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteRequest; -import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteResponse; - -public interface DailyQuoteToolUseCase { - @McpTool(name = "smp_quote_daily", title = "오늘의 명언 툴", description = "무작위로 영감을 주는 명언을 하나 가져옵니다.") - @GrowToolHint(categoryKey = "smp", mappingId = "QUOTE_001") - DailyQuoteResponse getDailyQuote(DailyQuoteRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/ExchangeRateToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/ExchangeRateToolUseCase.java deleted file mode 100644 index 86a3e1ac..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/ExchangeRateToolUseCase.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase; - - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; -import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateRequest; -import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateResponse; -import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateRequest; -import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateResponse; - -public interface ExchangeRateToolUseCase { - @McpTool(name = "smp_exchange_inquiry", title = "실시간 환율 조회 툴", description = "원하는 통화의 실시간 환율을 조회합니다. (예: USD, EUR, JPY)") - @GrowToolHint(categoryKey = "smp", mappingId = "EXCHANGE_001") - ExchangeRateResponse getExchangeRate(ExchangeRateRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/TeamMemberUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/TeamMemberUseCase.java deleted file mode 100644 index 7c942c77..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/TeamMemberUseCase.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; - -import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberRequest; - -public interface TeamMemberUseCase { - @McpTool(name = "smp_team_list", title = "신한라이프 MCP, TOOL 파트 구성원 조회", description = "신한라이프 MCP, TOOL 파트 구성원을 조회합니다.", annotations = @McpTool.McpAnnotations(openWorldHint = false)) - @GrowToolHint(requiresApproval = false, categoryKey = "smp", mappingId = "DIRECT0001") - Object getTeamMember(TeamMemberRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/WeatherToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/WeatherToolUseCase.java deleted file mode 100644 index 061b0e43..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/WeatherToolUseCase.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase; - - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; -import io.shinhanlife.dap.mcc.biz.smp.dto.*; - -public interface WeatherToolUseCase { - @McpTool(name = "smp_weather_inquiry", title = "날씨 조회 툴", description = "특정 도시의 현재 날씨, 온도, 풍속 정보를 조회합니다.") - @GrowToolHint(categoryKey = "smp", mappingId = "WEATHER_001") - WeatherResponse getWeather(WeatherRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java deleted file mode 100644 index 8e297347..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteRequest; -import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteResponse; -import io.shinhanlife.dap.mcc.biz.smp.usecase.DailyQuoteToolUseCase; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -import java.util.List; -import java.util.Random; - -/** - * @package io.shinhanlife.dap.mcc.service - * @className DailyQuoteToolService - * @description 랜덤 명언 제공 툴 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -@Slf4j -@Service -public class DailyQuoteToolUseCaseImpl implements DailyQuoteToolUseCase { - - private final List quotes = List.of( - new DailyQuoteResponse("성공은 매일 반복한 작은 노력들의 합이다.", "로버트 콜리어"), - new DailyQuoteResponse("시작이 반이다.", "아리스토텔레스"), - new DailyQuoteResponse("포기하지 않는 한 실패는 없다.", "알베르트 아인슈타인"), - new DailyQuoteResponse("가장 큰 위험은 위험 없는 삶이다.", "스티븐 코비") - ); - - @Override - public DailyQuoteResponse getDailyQuote(DailyQuoteRequest req) { - int index = new Random().nextInt(quotes.size()); - DailyQuoteResponse selected = quotes.get(index); - - log.info("[DailyQuoteTool] 명언 제공 완료: {}", selected.author()); - return selected; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java deleted file mode 100644 index 9a121d17..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateRequest; -import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateResponse; -import io.shinhanlife.dap.mcc.biz.smp.usecase.ExchangeRateToolUseCase; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestClient; - -/** - * @package io.shinhanlife.dap.mcc.service - * @className ExchangeRateToolService - * @description 실시간 환율 조회 툴 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -@Slf4j -@Service -public class ExchangeRateToolUseCaseImpl implements ExchangeRateToolUseCase { - - private final RestClient restClient; - - public ExchangeRateToolUseCaseImpl() { - this.restClient = RestClient.create(); - } - - @Override - public ExchangeRateResponse getExchangeRate(ExchangeRateRequest req) { - String targetCurrency = req.getCurrencyCode() != null ? req.getCurrencyCode().toUpperCase().trim() : "USD"; - - // 간단한 모의 데이터로 반환 (실제 구현 시 외부 연동) - double dummyRate = 1350.50; - if (targetCurrency.contains("JPY")) { - dummyRate = 905.20; - } else if (targetCurrency.contains("EUR")) { - dummyRate = 1450.30; - } - - log.info("[ExchangeRateTool] 환율 조회 완료: {} -> {}", targetCurrency, dummyRate); - return new ExchangeRateResponse("KRW", targetCurrency, dummyRate); - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java deleted file mode 100644 index ecf0e273..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java +++ /dev/null @@ -1,53 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberRequest; -import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberResponse; -import io.shinhanlife.dap.mcc.biz.smp.usecase.TeamMemberUseCase; -import org.springframework.stereotype.Service; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; - -/** - * @package io.shinhanlife.dap.mcc.biz.smp.usecase.impl - * @className TeamMemberUseCaseImpl - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Slf4j -@Service -@RequiredArgsConstructor -public class TeamMemberUseCaseImpl implements TeamMemberUseCase { - - @Override - public Object getTeamMember(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-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java deleted file mode 100644 index 820f1bf4..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java +++ /dev/null @@ -1,104 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.smp.usecase.impl; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import io.shinhanlife.dap.mcc.biz.smp.usecase.WeatherToolUseCase; -import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherRequest; -import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherResponse; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; -import org.springframework.web.client.RestClient; - -import java.time.LocalDateTime; -import java.time.format.DateTimeFormatter; - -/** - * @package io.shinhanlife.dap.mcc.service - * @className WeatherToolService - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.07.14 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.14  0986406    최초생성
- * 
- * 
- */ -@Slf4j -@Service -public class WeatherToolUseCaseImpl implements WeatherToolUseCase { - - private final RestClient restClient; - - public WeatherToolUseCaseImpl() { - this.restClient = RestClient.create(); - } - public WeatherResponse getWeather(WeatherRequest req) { - String city = req.city() != null ? req.city().trim() : "서울"; - - // 지역별 위경도 매핑 (간단한 예시) - double lat = 37.566; - double lon = 126.978; - - if (city.contains("부산")) { - lat = 35.179; - lon = 129.075; - } else if (city.contains("제주")) { - lat = 33.499; - lon = 126.531; - } else if (city.contains("인천")) { - lat = 37.456; - lon = 126.705; - } - - try { - String newRequestId = java.util.UUID.randomUUID().toString(); - String url = String.format("https://api.open-meteo.com/v1/forecast?latitude=%f&longitude=%f¤t_weather=true", lat, lon); - - log.info("[WeatherTool] OUTBOUND HTTP IN - request-id: {}", newRequestId); - log.info("[WeatherTool] 날씨 조회 요청 URL: {}", url); - - String responseStr = restClient.get() - .uri(url) - .header("request-id", newRequestId) - .retrieve() - .body(String.class); - - log.info("[WeatherTool] OUTBOUND HTTP OUT - request-id: {}", newRequestId); - - ObjectMapper mapper = new ObjectMapper(); - JsonNode response = mapper.readTree(responseStr); - - if (response != null && response.has("current_weather")) { - JsonNode current = response.get("current_weather"); - double temp = current.path("temperature").asDouble(); - double windSpeed = current.path("windspeed").asDouble(); - String time = current.path("time").asText(); - - int weatherCode = current.path("weathercode").asInt(); - String summary = parseWeatherCode(weatherCode); - - String formattedTime = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm")); - - return new WeatherResponse(city, temp, windSpeed, formattedTime, summary); - } - } catch (Exception e) { - log.error("[WeatherTool] 날씨 API 연동 실패: {}", e.getMessage()); - return new WeatherResponse(city, 0.0, 0.0, "", "날씨 정보를 불러오는데 실패했습니다."); - } - - return new WeatherResponse(city, 0.0, 0.0, "", "알 수 없는 응답입니다."); - } - - private String parseWeatherCode(int code) { - if (code == 0) return "맑음 (Clear)"; - if (code >= 1 && code <= 3) return "구름조금/흐림 (Cloudy)"; - if (code >= 45 && code <= 48) return "안개 (Fog)"; - if (code >= 51 && code <= 67) return "비/이슬비 (Rain)"; - if (code >= 71 && code <= 77) return "눈 (Snow)"; - if (code >= 95) return "뇌우/천둥번개 (Thunderstorm)"; - return "알 수 없음 (Unknown)"; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqDetailConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqDetailConverter.java deleted file mode 100644 index 6b3a7019..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqDetailConverter.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.converter; - -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailResponse; -import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io.SOLG00000002_I; -import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io.SOLG00000002_O; -import org.mapstruct.Mapper; -import org.mapstruct.Mapping; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.converter - * @className SolReqDetailConverter - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -@Mapper(componentModel = "spring") -public interface SolReqDetailConverter { - - @Mapping(source = "srId", target = "srId") - SOLG00000002_I toLegacyRequest(SolReqDetailRequest req); - - SolReqDetailResponse toResponse(SOLG00000002_O mciRes); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqListConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqListConverter.java deleted file mode 100644 index f71e31e2..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqListConverter.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.converter; - -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListRequest; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListResponse; -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.sol.converter - * @className SolReqListConverter - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Mapper(componentModel = "spring") -public interface SolReqListConverter { - @Mapping(source = "status", target = "reqStatus", defaultValue = "진행중") - @Mapping(source = "period", target = "reqPeriod", defaultValue = "최근 3개월") - @Mapping(source = "target", target = "reqTarget", defaultValue = "나의 업무") - SOLG00000001_I toLegacyRequest(SolReqListRequest req); - - SolReqListResponse toResponse(SOLG00000001_O mciRes); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailRequest.java deleted file mode 100644 index 0d3e0976..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailRequest.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.dto; - - - - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.dto - * @className SolReqDetailRequest - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class SolReqDetailRequest { - - @McpToolParam(description = "상세 조회할 SOL 의뢰서 ID", required = true) - @Schema(example = "SR20260805") - private String srId; - -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailResponse.java deleted file mode 100644 index b1c1c230..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.dto - * @className SolReqDetailResponse - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class SolReqDetailResponse { - - private String srId; - private String srName; - private String process; - private String devStage; - private String appName; - private String requester; - private String requestDate; - private String dueDate; - private String description; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListRequest.java deleted file mode 100644 index e447e69f..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListRequest.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.dto; - - - - -import io.swagger.v3.oas.annotations.media.Schema; -import org.springaicommunity.mcp.annotation.McpToolParam; -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.dto - * @className SolReqListRequest - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class SolReqListRequest { - @McpToolParam(description = "진행상태 (예: 진행중, 완료 등)", required = false) - @Schema(example = "RECEIVED") - private String status; - - -@McpToolParam(description = "조회기간 (예: 1개월, 3개월 등)", required = false) - private String period; - - @McpToolParam(description = "조회대상 (예: 나의 업무, 전체 등)", required = false) - @Schema(example = "USER") - private String target; -} \ No newline at end of file diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListResponse.java deleted file mode 100644 index 842694bb..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListResponse.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.dto; - -import com.fasterxml.jackson.annotation.JsonInclude; -import lombok.Data; - -import java.util.List; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.dto - * @className SolReqListResponse - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class SolReqListResponse { - private List reqList; - - @Data - @JsonInclude(JsonInclude.Include.NON_NULL) - public static class SolReqListItem { - private String srId; - private String srName; - private String process; - private String devStage; - private String appName; - private String requester; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java deleted file mode 100644 index 57c8be70..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; - -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.usecase - * @className SolReqDetailUseCase - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -public interface SolReqDetailUseCase { - - @McpTool(name = "sol_request_detail", title = "SolReqDetail 툴", description = "SOL 의뢰서 상세 조회", annotations = @McpTool.McpAnnotations(openWorldHint = false, readOnlyHint = true)) - @GrowToolHint( - requiresApproval = false, - categoryKey = "sol", - mappingId = "SOLG00000002", - displayDescription = "SOL 의뢰서 한 건의 상세 정보를 조회합니다.", - functionDescription = "SOL 의뢰서 식별자를 기준으로 의뢰서 상세 내용을 조회한다.", - whenToUse = "사용자가 특정 SOL 의뢰서의 상세 내용과 진행 정보를 확인하려는 경우 사용한다.", - whenNotToUse = "의뢰서 목록만 찾거나 의뢰서를 변경 또는 처리하려는 경우에는 사용하지 않는다.", - ioLimits = "정확한 의뢰서 ID가 필요하며 등록된 상세 정보만 반환한다.", - exampleQueries = {"이 SOL 의뢰서 상세를 보여줘", "의뢰서 ID로 처리 내용을 확인해줘", "선택한 의뢰서의 상세 정보를 알려줘"}, - destructive = false, - idempotent = true, - tags = {"SOL", "의뢰서"}, - requiredEnvKeys = {}, - ownerOrg = "MCP_TOOL" - ) - Object getSolRequestDetail(SolReqDetailRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqListUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqListUseCase.java deleted file mode 100644 index 25362e33..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqListUseCase.java +++ /dev/null @@ -1,12 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; - -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListRequest; - -public interface SolReqListUseCase { - @McpTool(name = "sol_request_list", title = "SolReqList 툴", description = "SOL 의뢰서 목록 조회해줘", annotations = @McpTool.McpAnnotations(openWorldHint = false)) - @GrowToolHint(requiresApproval = false, categoryKey = "sol", mappingId = "SOLG00000001") - Object searchSolRequests(SolReqListRequest req); -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImpl.java deleted file mode 100644 index 9d0e5457..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImpl.java +++ /dev/null @@ -1,101 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.sol.converter.SolReqDetailConverter; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailResponse; -import io.shinhanlife.dap.mcc.biz.sol.usecase.SolReqDetailUseCase; -import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.MciNclgClient; -import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io.SOLG00000002_I; -import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io.SOLG00000002_O; -import io.shinhanlife.glow.communication.dto.Transfer; -import java.util.Map; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Service; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.usecase.impl - * @className SolReqDetailUseCaseImpl - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -@Slf4j -@Service -@RequiredArgsConstructor -public class SolReqDetailUseCaseImpl implements SolReqDetailUseCase { - - private final MciNclgClient mci; - private final SolReqDetailConverter converter; - - @Value("${sol.req-detail.mock-enabled:false}") - private boolean mockEnabled; - - @Override - public Object getSolRequestDetail(SolReqDetailRequest req) { - log.info("[MCI Tool] {} 요청 수신. 파라미터: {}", "solReqDetail", req); - if (req == null || req.getSrId() == null || req.getSrId().isBlank()) { - return Map.of("status", "ERROR", "message", "srId는 필수입니다."); - } - - if (mockEnabled) { - return createLocalSampleResponse(req.getSrId()); - } - - try { - SOLG00000002_I mciRequest = converter.toLegacyRequest(req); - Transfer mciResponse = mci.callTo( - "SOLG00000002", "SOLG00000002", mciRequest, SOLG00000002_O.class); - - if (mciResponse == null || mciResponse.getBody() == null) { - return Map.of("status", "NOT_FOUND", "message", "의뢰서 상세 정보를 찾을 수 없습니다."); - } - return converter.toResponse(mciResponse.getBody()); - } catch (Exception e) { - log.error("[MCI Tool] 연동 중 오류 발생: {}", e.getMessage(), e); - return Map.of( - "status", "ERROR", - "message", e.getMessage() != null ? e.getMessage() : "Unknown error"); - } - } - - private Object createLocalSampleResponse(String srId) { - SolReqDetailResponse response = new SolReqDetailResponse(); - if ("SR-2026-001".equalsIgnoreCase(srId)) { - response.setSrId("SR-2026-001"); - response.setSrName("AX HUB 메인 화면 UI 개편"); - response.setProcess("진행중"); - response.setDevStage("개발(단위테스트)"); - response.setAppName("AX HUB"); - response.setRequester("신한준"); - response.setRequestDate("2026-07-01"); - response.setDueDate("2026-08-31"); - response.setDescription("AX HUB 메인 화면의 사용성과 접근성을 개선하는 UI 개편 의뢰입니다."); - return response; - } - if ("SR-2026-002".equalsIgnoreCase(srId)) { - response.setSrId("SR-2026-002"); - response.setSrName("SOL 연동 모듈 추가 개발"); - response.setProcess("진행중"); - response.setDevStage("분석/설계"); - response.setAppName("MCP Gateway"); - response.setRequester("고석민"); - response.setRequestDate("2026-07-15"); - response.setDueDate("2026-09-30"); - response.setDescription("SOL 의뢰서 조회 기능을 MCP 도구로 제공하기 위한 연동 모듈 개발 의뢰입니다."); - return response; - } - return Map.of( - "status", "NOT_FOUND", - "message", "의뢰서를 찾을 수 없습니다.", - "srId", srId); - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImpl.java deleted file mode 100644 index 441d21e1..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImpl.java +++ /dev/null @@ -1,80 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.usecase.impl; - -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListRequest; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListResponse; -import io.shinhanlife.dap.mcc.biz.sol.usecase.SolReqListUseCase; -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.sol.converter.SolReqListConverter; -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 io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.MciNclgClient; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListResponse.SolReqListItem; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.usecase.impl - * @className SolReqListUseCaseImpl - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Slf4j -@Service -@RequiredArgsConstructor -public class SolReqListUseCaseImpl implements SolReqListUseCase { - - private final MciNclgClient mci; - private final SolReqListConverter converter; - - @Override - public Object searchSolRequests(SolReqListRequest req) { - log.info("[MCI Tool] {} 요청 수신. 파라미터: {}", "solReqList", req); - try { - SOLG00000001_I mciRequest = converter.toLegacyRequest(req); - Transfer mciResponse = mci.callTo( - "SOLG00000001", "SOLG00000001", mciRequest, SOLG00000001_O.class); - log.info("[MCI Tool] SOLG00000001 MCI call completed. Returning dummy response: {}", - mciResponse != null); - // 현업 테스트용으로 MCI 통신을 바이패스하고 하드코딩된 결과를 반환합니다. - SolReqListResponse res = new SolReqListResponse(); - List list = new ArrayList<>(); - - SolReqListItem item1 = new SolReqListItem(); - item1.setSrId("SR-2026-001"); - item1.setSrName("AX HUB 메인 화면 UI 개편"); - item1.setProcess("진행중"); - item1.setDevStage("개발(단위테스트)"); - item1.setAppName("AX HUB"); - item1.setRequester("윤희준"); - list.add(item1); - - SolReqListItem item2 = new SolReqListItem(); - 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-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/dto/VocToolRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/dto/VocToolRequest.java new file mode 100644 index 00000000..85d852be --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/dto/VocToolRequest.java @@ -0,0 +1,34 @@ +package io.shinhanlife.dap.mcc.biz.voc.dto; + +import lombok.Data; +import org.springaicommunity.mcp.annotation.McpToolParam; + +@Data +public class VocToolRequest { + @McpToolParam(description = "업무 대상 식별자", required = false) + private String subjectId; + + @McpToolParam(description = "고객 식별자", required = false) + private String customerId; + + @McpToolParam(description = "검색어 또는 처리 내용", required = false) + private String content; + + @McpToolParam(description = "상태, 유형, 등급 또는 처리 값", required = false) + private String value; + + @McpToolParam(description = "담당자 식별자", required = false) + private String assigneeId; + + @McpToolParam(description = "조회 시작일(YYYY-MM-DD)", required = false) + private String startDate; + + @McpToolParam(description = "조회 종료일 또는 처리 예정일(YYYY-MM-DD)", required = false) + private String endDate; + + @McpToolParam(description = "페이지 번호", required = false) + private Integer page; + + @McpToolParam(description = "페이지 크기", required = false) + private Integer size; +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/dto/VocToolResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/dto/VocToolResponse.java new file mode 100644 index 00000000..1b9b28df --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/dto/VocToolResponse.java @@ -0,0 +1,15 @@ +package io.shinhanlife.dap.mcc.biz.voc.dto; + +import java.util.List; +import lombok.Data; + +@Data +public class VocToolResponse { + private String toolName; + private String category; + private String referenceId; + private String status; + private String summary; + private String processedAt; + private List details; +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/usecase/VocToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/usecase/VocToolUseCase.java new file mode 100644 index 00000000..b9aa6e79 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/usecase/VocToolUseCase.java @@ -0,0 +1,60 @@ +package io.shinhanlife.dap.mcc.biz.voc.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolRequest; +import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface VocToolUseCase { + @McpTool(name = "voc_register", title = "VOC 접수 등록", description = "VOC 접수 등록 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_REGISTER") + VocToolResponse registerVoc(VocToolRequest request); + @McpTool(name = "voc_detail", title = "VOC 상세 조회", description = "VOC 상세 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "voc", mappingId = "DIRECT_VOC_DETAIL") + VocToolResponse getVocDetail(VocToolRequest request); + @McpTool(name = "voc_search", title = "VOC 목록 검색", description = "VOC 목록 검색 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "voc", mappingId = "DIRECT_VOC_SEARCH") + VocToolResponse searchVocs(VocToolRequest request); + @McpTool(name = "voc_update", title = "VOC 내용 수정", description = "VOC 내용 수정 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_UPDATE") + VocToolResponse updateVoc(VocToolRequest request); + @McpTool(name = "voc_assign", title = "VOC 담당자 배정", description = "VOC 담당자 배정 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_ASSIGN") + VocToolResponse assignVocOwner(VocToolRequest request); + @McpTool(name = "voc_change_status", title = "VOC 처리 상태 변경", description = "VOC 처리 상태 변경 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_CHANGE_STATUS") + VocToolResponse changeVocStatus(VocToolRequest request); + @McpTool(name = "voc_register_result", title = "VOC 처리 결과 등록", description = "VOC 처리 결과 등록 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_REGISTER_RESULT") + VocToolResponse registerVocResult(VocToolRequest request); + @McpTool(name = "voc_send_reply", title = "VOC 답변 발송", description = "VOC 답변 발송 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_SEND_REPLY") + VocToolResponse sendVocReply(VocToolRequest request); + @McpTool(name = "voc_transfer", title = "VOC 이관 처리", description = "VOC 이관 처리 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_TRANSFER") + VocToolResponse transferVoc(VocToolRequest request); + @McpTool(name = "voc_set_priority", title = "VOC 우선순위 설정", description = "VOC 우선순위 설정 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_SET_PRIORITY") + VocToolResponse setVocPriority(VocToolRequest request); + @McpTool(name = "voc_classify_type", title = "VOC 유형 분류", description = "VOC 유형 분류 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_CLASSIFY_TYPE") + VocToolResponse classifyVocType(VocToolRequest request); + @McpTool(name = "voc_attachments", title = "VOC 첨부파일 조회", description = "VOC 첨부파일 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "voc", mappingId = "DIRECT_VOC_ATTACHMENTS") + VocToolResponse getVocAttachments(VocToolRequest request); + @McpTool(name = "voc_customer_history", title = "고객별 VOC 이력 조회", description = "고객별 VOC 이력 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "voc", mappingId = "DIRECT_VOC_CUSTOMER_HISTORY") + VocToolResponse getCustomerVocHistory(VocToolRequest request); + @McpTool(name = "voc_detect_duplicate", title = "중복 VOC 탐지", description = "중복 VOC 탐지 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "voc", mappingId = "DIRECT_VOC_DETECT_DUPLICATE") + VocToolResponse detectDuplicateVoc(VocToolRequest request); + @McpTool(name = "voc_urgent_list", title = "긴급 VOC 목록 조회", description = "긴급 VOC 목록 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "voc", mappingId = "DIRECT_VOC_URGENT_LIST") + VocToolResponse getUrgentVocs(VocToolRequest request); + @McpTool(name = "voc_extend_due_date", title = "VOC 처리 기한 연장", description = "VOC 처리 기한 연장 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "voc", mappingId = "DIRECT_VOC_EXTEND_DUE_DATE") + VocToolResponse extendVocDueDate(VocToolRequest request); + @McpTool(name = "voc_statistics", title = "VOC 통계 조회", description = "VOC 통계 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "voc", mappingId = "DIRECT_VOC_STATISTICS") + VocToolResponse getVocStatistics(VocToolRequest request); +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/usecase/impl/VocToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/usecase/impl/VocToolUseCaseImpl.java new file mode 100644 index 00000000..314d10cc --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/voc/usecase/impl/VocToolUseCaseImpl.java @@ -0,0 +1,95 @@ +package io.shinhanlife.dap.mcc.biz.voc.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolRequest; +import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolResponse; +import io.shinhanlife.dap.mcc.biz.voc.usecase.VocToolUseCase; +import java.time.LocalDateTime; +import java.util.List; +import org.springframework.stereotype.Service; + +@Service +public class VocToolUseCaseImpl implements VocToolUseCase { + @Override + public VocToolResponse registerVoc(VocToolRequest request) { + return mockResponse(request, "voc_register", "VOC 접수 등록"); + } + @Override + public VocToolResponse getVocDetail(VocToolRequest request) { + return mockResponse(request, "voc_detail", "VOC 상세 조회"); + } + @Override + public VocToolResponse searchVocs(VocToolRequest request) { + return mockResponse(request, "voc_search", "VOC 목록 검색"); + } + @Override + public VocToolResponse updateVoc(VocToolRequest request) { + return mockResponse(request, "voc_update", "VOC 내용 수정"); + } + @Override + public VocToolResponse assignVocOwner(VocToolRequest request) { + return mockResponse(request, "voc_assign", "VOC 담당자 배정"); + } + @Override + public VocToolResponse changeVocStatus(VocToolRequest request) { + return mockResponse(request, "voc_change_status", "VOC 처리 상태 변경"); + } + @Override + public VocToolResponse registerVocResult(VocToolRequest request) { + return mockResponse(request, "voc_register_result", "VOC 처리 결과 등록"); + } + @Override + public VocToolResponse sendVocReply(VocToolRequest request) { + return mockResponse(request, "voc_send_reply", "VOC 답변 발송"); + } + @Override + public VocToolResponse transferVoc(VocToolRequest request) { + return mockResponse(request, "voc_transfer", "VOC 이관 처리"); + } + @Override + public VocToolResponse setVocPriority(VocToolRequest request) { + return mockResponse(request, "voc_set_priority", "VOC 우선순위 설정"); + } + @Override + public VocToolResponse classifyVocType(VocToolRequest request) { + return mockResponse(request, "voc_classify_type", "VOC 유형 분류"); + } + @Override + public VocToolResponse getVocAttachments(VocToolRequest request) { + return mockResponse(request, "voc_attachments", "VOC 첨부파일 조회"); + } + @Override + public VocToolResponse getCustomerVocHistory(VocToolRequest request) { + return mockResponse(request, "voc_customer_history", "고객별 VOC 이력 조회"); + } + @Override + public VocToolResponse detectDuplicateVoc(VocToolRequest request) { + return mockResponse(request, "voc_detect_duplicate", "중복 VOC 탐지"); + } + @Override + public VocToolResponse getUrgentVocs(VocToolRequest request) { + return mockResponse(request, "voc_urgent_list", "긴급 VOC 목록 조회"); + } + @Override + public VocToolResponse extendVocDueDate(VocToolRequest request) { + return mockResponse(request, "voc_extend_due_date", "VOC 처리 기한 연장"); + } + @Override + public VocToolResponse getVocStatistics(VocToolRequest request) { + return mockResponse(request, "voc_statistics", "VOC 통계 조회"); + } + private VocToolResponse mockResponse(VocToolRequest request, String toolName, String title) { + VocToolResponse response = new VocToolResponse(); + response.setToolName(toolName); + response.setCategory("VOC"); + response.setReferenceId(request != null && hasText(request.getSubjectId()) ? request.getSubjectId() : "VOC-000001"); + response.setStatus("정상"); + response.setSummary(title + " 처리 결과"); + response.setProcessedAt(LocalDateTime.now().toString()); + response.setDetails(List.of(title + " 모의 상세 정보", "외부 시스템을 변경하지 않는 샘플 응답")); + return response; + } + + private boolean hasText(String value) { + return value != null && !value.isBlank(); + } +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/dto/WcmToolRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/dto/WcmToolRequest.java new file mode 100644 index 00000000..e78723bd --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/dto/WcmToolRequest.java @@ -0,0 +1,34 @@ +package io.shinhanlife.dap.mcc.biz.wcm.dto; + +import lombok.Data; +import org.springaicommunity.mcp.annotation.McpToolParam; + +@Data +public class WcmToolRequest { + @McpToolParam(description = "업무 대상 식별자", required = false) + private String subjectId; + + @McpToolParam(description = "고객 식별자", required = false) + private String customerId; + + @McpToolParam(description = "검색어 또는 처리 내용", required = false) + private String content; + + @McpToolParam(description = "상태, 유형, 등급 또는 처리 값", required = false) + private String value; + + @McpToolParam(description = "담당자 식별자", required = false) + private String assigneeId; + + @McpToolParam(description = "조회 시작일(YYYY-MM-DD)", required = false) + private String startDate; + + @McpToolParam(description = "조회 종료일 또는 처리 예정일(YYYY-MM-DD)", required = false) + private String endDate; + + @McpToolParam(description = "페이지 번호", required = false) + private Integer page; + + @McpToolParam(description = "페이지 크기", required = false) + private Integer size; +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/dto/WcmToolResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/dto/WcmToolResponse.java new file mode 100644 index 00000000..2111d976 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/dto/WcmToolResponse.java @@ -0,0 +1,15 @@ +package io.shinhanlife.dap.mcc.biz.wcm.dto; + +import java.util.List; +import lombok.Data; + +@Data +public class WcmToolResponse { + private String toolName; + private String category; + private String referenceId; + private String status; + private String summary; + private String processedAt; + private List details; +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/usecase/WcmToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/usecase/WcmToolUseCase.java new file mode 100644 index 00000000..bd4d78a2 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/usecase/WcmToolUseCase.java @@ -0,0 +1,60 @@ +package io.shinhanlife.dap.mcc.biz.wcm.usecase; + +import io.shinhanlife.dap.lib.annotation.GrowToolHint; +import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolRequest; +import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolResponse; +import org.springaicommunity.mcp.annotation.McpTool; + +public interface WcmToolUseCase { + @McpTool(name = "wcm_content_list", title = "웹 콘텐츠 목록 조회", description = "웹 콘텐츠 목록 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_LIST") + WcmToolResponse getContentList(WcmToolRequest request); + @McpTool(name = "wcm_content_detail", title = "웹 콘텐츠 상세 조회", description = "웹 콘텐츠 상세 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_DETAIL") + WcmToolResponse getContentDetail(WcmToolRequest request); + @McpTool(name = "wcm_content_create", title = "웹 콘텐츠 등록", description = "웹 콘텐츠 등록 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_CREATE") + WcmToolResponse createContent(WcmToolRequest request); + @McpTool(name = "wcm_content_update", title = "웹 콘텐츠 수정", description = "웹 콘텐츠 수정 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_UPDATE") + WcmToolResponse updateContent(WcmToolRequest request); + @McpTool(name = "wcm_content_delete", title = "웹 콘텐츠 삭제", description = "웹 콘텐츠 삭제 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_DELETE") + WcmToolResponse deleteContent(WcmToolRequest request); + @McpTool(name = "wcm_content_copy", title = "웹 콘텐츠 복사", description = "웹 콘텐츠 복사 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_COPY") + WcmToolResponse copyContent(WcmToolRequest request); + @McpTool(name = "wcm_content_preview", title = "웹 콘텐츠 미리보기", description = "웹 콘텐츠 미리보기 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_PREVIEW") + WcmToolResponse previewContent(WcmToolRequest request); + @McpTool(name = "wcm_content_publish", title = "웹 콘텐츠 게시", description = "웹 콘텐츠 게시 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_PUBLISH") + WcmToolResponse publishContent(WcmToolRequest request); + @McpTool(name = "wcm_content_unpublish", title = "웹 콘텐츠 게시 중지", description = "웹 콘텐츠 게시 중지 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_UNPUBLISH") + WcmToolResponse unpublishContent(WcmToolRequest request); + @McpTool(name = "wcm_content_schedule_publish", title = "웹 콘텐츠 예약 게시", description = "웹 콘텐츠 예약 게시 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_SCHEDULE_PUBLISH") + WcmToolResponse scheduleContentPublish(WcmToolRequest request); + @McpTool(name = "wcm_content_request_approval", title = "웹 콘텐츠 승인 요청", description = "웹 콘텐츠 승인 요청 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_REQUEST_APPROVAL") + WcmToolResponse requestContentApproval(WcmToolRequest request); + @McpTool(name = "wcm_content_review_approval", title = "웹 콘텐츠 승인·반려", description = "웹 콘텐츠 승인·반려 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_REVIEW_APPROVAL") + WcmToolResponse reviewContentApproval(WcmToolRequest request); + @McpTool(name = "wcm_content_version_history", title = "웹 콘텐츠 버전 이력 조회", description = "웹 콘텐츠 버전 이력 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_VERSION_HISTORY") + WcmToolResponse getContentVersionHistory(WcmToolRequest request); + @McpTool(name = "wcm_content_restore_version", title = "웹 콘텐츠 이전 버전 복원", description = "웹 콘텐츠 이전 버전 복원 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_CONTENT_RESTORE_VERSION") + WcmToolResponse restoreContentVersion(WcmToolRequest request); + @McpTool(name = "wcm_metadata_detail", title = "콘텐츠 메타데이터 조회", description = "콘텐츠 메타데이터 조회 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = false, categoryKey = "wcm", mappingId = "DIRECT_WCM_METADATA_DETAIL") + WcmToolResponse getContentMetadata(WcmToolRequest request); + @McpTool(name = "wcm_metadata_upsert", title = "콘텐츠 메타데이터 등록·수정", description = "콘텐츠 메타데이터 등록·수정 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_METADATA_UPSERT") + WcmToolResponse upsertContentMetadata(WcmToolRequest request); + @McpTool(name = "wcm_taxonomy_manage", title = "콘텐츠 카테고리·태그 관리", description = "콘텐츠 카테고리·태그 관리 기능을 안전한 모의 데이터로 제공합니다.") + @GrowToolHint(requiresApproval = true, categoryKey = "wcm", mappingId = "DIRECT_WCM_TAXONOMY_MANAGE") + WcmToolResponse manageContentTaxonomy(WcmToolRequest request); +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/usecase/impl/WcmToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/usecase/impl/WcmToolUseCaseImpl.java new file mode 100644 index 00000000..30f42052 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/wcm/usecase/impl/WcmToolUseCaseImpl.java @@ -0,0 +1,95 @@ +package io.shinhanlife.dap.mcc.biz.wcm.usecase.impl; + +import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolRequest; +import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolResponse; +import io.shinhanlife.dap.mcc.biz.wcm.usecase.WcmToolUseCase; +import java.time.LocalDateTime; +import java.util.List; +import org.springframework.stereotype.Service; + +@Service +public class WcmToolUseCaseImpl implements WcmToolUseCase { + @Override + public WcmToolResponse getContentList(WcmToolRequest request) { + return mockResponse(request, "wcm_content_list", "웹 콘텐츠 목록 조회"); + } + @Override + public WcmToolResponse getContentDetail(WcmToolRequest request) { + return mockResponse(request, "wcm_content_detail", "웹 콘텐츠 상세 조회"); + } + @Override + public WcmToolResponse createContent(WcmToolRequest request) { + return mockResponse(request, "wcm_content_create", "웹 콘텐츠 등록"); + } + @Override + public WcmToolResponse updateContent(WcmToolRequest request) { + return mockResponse(request, "wcm_content_update", "웹 콘텐츠 수정"); + } + @Override + public WcmToolResponse deleteContent(WcmToolRequest request) { + return mockResponse(request, "wcm_content_delete", "웹 콘텐츠 삭제"); + } + @Override + public WcmToolResponse copyContent(WcmToolRequest request) { + return mockResponse(request, "wcm_content_copy", "웹 콘텐츠 복사"); + } + @Override + public WcmToolResponse previewContent(WcmToolRequest request) { + return mockResponse(request, "wcm_content_preview", "웹 콘텐츠 미리보기"); + } + @Override + public WcmToolResponse publishContent(WcmToolRequest request) { + return mockResponse(request, "wcm_content_publish", "웹 콘텐츠 게시"); + } + @Override + public WcmToolResponse unpublishContent(WcmToolRequest request) { + return mockResponse(request, "wcm_content_unpublish", "웹 콘텐츠 게시 중지"); + } + @Override + public WcmToolResponse scheduleContentPublish(WcmToolRequest request) { + return mockResponse(request, "wcm_content_schedule_publish", "웹 콘텐츠 예약 게시"); + } + @Override + public WcmToolResponse requestContentApproval(WcmToolRequest request) { + return mockResponse(request, "wcm_content_request_approval", "웹 콘텐츠 승인 요청"); + } + @Override + public WcmToolResponse reviewContentApproval(WcmToolRequest request) { + return mockResponse(request, "wcm_content_review_approval", "웹 콘텐츠 승인·반려"); + } + @Override + public WcmToolResponse getContentVersionHistory(WcmToolRequest request) { + return mockResponse(request, "wcm_content_version_history", "웹 콘텐츠 버전 이력 조회"); + } + @Override + public WcmToolResponse restoreContentVersion(WcmToolRequest request) { + return mockResponse(request, "wcm_content_restore_version", "웹 콘텐츠 이전 버전 복원"); + } + @Override + public WcmToolResponse getContentMetadata(WcmToolRequest request) { + return mockResponse(request, "wcm_metadata_detail", "콘텐츠 메타데이터 조회"); + } + @Override + public WcmToolResponse upsertContentMetadata(WcmToolRequest request) { + return mockResponse(request, "wcm_metadata_upsert", "콘텐츠 메타데이터 등록·수정"); + } + @Override + public WcmToolResponse manageContentTaxonomy(WcmToolRequest request) { + return mockResponse(request, "wcm_taxonomy_manage", "콘텐츠 카테고리·태그 관리"); + } + private WcmToolResponse mockResponse(WcmToolRequest request, String toolName, String title) { + WcmToolResponse response = new WcmToolResponse(); + response.setToolName(toolName); + response.setCategory("WCMS"); + response.setReferenceId(request != null && hasText(request.getSubjectId()) ? request.getSubjectId() : "WCMS-000001"); + response.setStatus("정상"); + response.setSummary(title + " 처리 결과"); + response.setProcessedAt(LocalDateTime.now().toString()); + response.setDetails(List.of(title + " 모의 상세 정보", "외부 시스템을 변경하지 않는 샘플 응답")); + return response; + } + + private boolean hasText(String value) { + return value != null && !value.isBlank(); + } +} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java index 1ef4d4cd..a68aaaa2 100644 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java @@ -1,6 +1,5 @@ package io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d; -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolResponse; import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_I; import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_O; import io.shinhanlife.glow.BizException; diff --git a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_comcode_lookup.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_comcode_lookup.yml deleted file mode 100644 index cac9b1d3..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_comcode_lookup.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: cmm_comcode_lookup -display_name: 메타 공통코드 조회 -version: 1.0.0 -category_key: cmm -description: - function: 통합코드 그룹과 코드명 조건으로 메타 공통코드 목록을 조회한다. - when_to_use: 업무 코드의 값과 표시명을 확인하거나 유효한 코드 목록이 필요한 경우 사용한다. - when_not_to_use: 공통코드를 신규 등록하거나 변경 또는 삭제하려는 경우에는 사용하지 않는다. - io_limits: 검색 조건에 맞는 코드와 코드명만 반환하며 코드 데이터는 변경하지 않는다. -display_description: 메타 시스템의 공통코드 목록을 조회합니다. -example_queries: ["사용 상태 코드 목록을 알려줘", "고객 구분 공통코드를 찾아줘", "사용 중인 통합코드를 조회해줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - groupCode: {type: string, description: 조회할 통합코드 그룹 ID} - codeName: {type: string, description: 코드명 검색 키워드} - useYn: {type: string, description: 사용 여부 Y 또는 N, enum: [Y, N]} - additionalProperties: false -tags: [메타, 공통코드] -legacy_interface_id: CLCNNB00001 -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_customer_tool.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_customer_tool.yml deleted file mode 100644 index e1ad1b40..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_customer_tool.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: cmm_customer_tool -display_name: 고객 통합 안내이력 조회 -version: 1.0.0 -category_key: cmm -description: - function: 고객의 통합 안내 이력을 조회하는 도구입니다. - when_to_use: 고객 ID와 조회 기간을 기반으로 해당 기간 동안의 안내 이력을 확인할 때 사용합니다. - when_not_to_use: 안내 이력을 생성하거나 수정할 때는 사용하지 않습니다. - io_limits: 안내 이력 조회만 수행하며 데이터를 변경하지 않습니다. -display_description: 고객의 통합 안내 이력을 조회합니다. -example_queries: ["고객 통합 안내이력 조회해줘", "특정 기간의 안내 이력을 확인해줘", "고객 번호로 안내 이력을 찾아줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - csNo: {type: string, description: 고객번호} - ntleCd: {type: string, description: 안내장코드} - notiPmlMdCd: {type: string, description: 안내발송방법코드} - inqrStrYmd: {type: string, description: 조회시작일자} - inqrEndYmd: {type: string, description: 조회종료일자} - required: [csNo] - additionalProperties: false -tags: [고객, 통합안내이력] -legacy_interface_id: ONILD0320 -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_meta_table.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_meta_table.yml deleted file mode 100644 index d9fe5b63..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_meta_table.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: cmm_meta_table -display_name: 메타 테이블 조회 -version: 1.0.0 -category_key: cmm -description: - function: 물리명, 논리명 또는 소유자 조건으로 메타 테이블 정보를 조회한다. - when_to_use: 사용자가 업무 데이터의 테이블명이나 소유 스키마를 확인하려는 경우 사용한다. - when_not_to_use: 테이블을 생성하거나 구조를 변경하려는 경우에는 사용하지 않는다. - io_limits: 메타에 등록된 테이블 설명 정보만 반환하며 실제 테이블 데이터는 조회하지 않는다. -display_description: 메타 시스템에 등록된 테이블 정보를 조회합니다. -example_queries: ["고객 기본 테이블을 찾아줘", "계약 관련 테이블 목록을 보여줘", "특정 스키마의 테이블을 조회해줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - tableName: {type: string, description: 테이블 물리명 검색어} - tableLogicalName: {type: string, description: 테이블 논리명 검색어} - owner: {type: string, description: 테이블 소유 스키마명} - additionalProperties: false -tags: [메타, 테이블] -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_template_url.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_template_url.yml deleted file mode 100644 index 5b9afc71..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_template_url.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: cmm_template_url -display_name: 업무 템플릿 다운로드 URL 조회 -version: 1.0.0 -category_key: cmm -description: - function: 요청한 업무 템플릿 파일을 내려받을 수 있는 URL을 반환한다. - when_to_use: 사용자가 엑셀이나 워드 업무 양식의 다운로드 위치를 요청한 경우 사용한다. - when_not_to_use: 템플릿 내용을 작성하거나 업로드 또는 변경하려는 경우에는 사용하지 않는다. - io_limits: 등록된 템플릿 ID에 대한 다운로드 URL만 반환하며 파일 자체는 반환하지 않는다. -display_description: 업무 템플릿을 다운로드할 수 있는 URL을 제공합니다. -example_queries: ["청구 양식 다운로드 링크를 알려줘", "업무용 엑셀 템플릿을 받고 싶어", "등록된 문서 양식 위치를 찾아줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - templateId: {type: string, description: 다운로드할 템플릿 식별자} - required: [templateId] - additionalProperties: false -tags: [템플릿, 다운로드] -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_activity_status.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_activity_status.yml new file mode 100644 index 00000000..1e01bd8c --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_activity_status.yml @@ -0,0 +1,30 @@ +name: crm_activity_status +display_name: 고객 활동 현황 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 활동 현황 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 활동 현황 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 활동 현황 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 활동 현황 조회 해줘", "고객 활동 현황 조회 결과를 알려줘", "고객 활동 현황 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consent_change.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consent_change.yml new file mode 100644 index 00000000..4993d839 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consent_change.yml @@ -0,0 +1,30 @@ +name: crm_consent_change +display_name: 고객 동의 정보 변경 +version: 1.0.0 +category_key: crm +description: + function: 고객 동의 정보 변경 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 동의 정보 변경 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 동의 정보 변경 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 동의 정보 변경 해줘", "고객 동의 정보 변경 결과를 알려줘", "고객 동의 정보 변경 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consent_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consent_detail.yml new file mode 100644 index 00000000..85b0f306 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consent_detail.yml @@ -0,0 +1,30 @@ +name: crm_consent_detail +display_name: 고객 동의 정보 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 동의 정보 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 동의 정보 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 동의 정보 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 동의 정보 조회 해줘", "고객 동의 정보 조회 결과를 알려줘", "고객 동의 정보 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consultation_history.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consultation_history.yml new file mode 100644 index 00000000..5ff7d7bb --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consultation_history.yml @@ -0,0 +1,30 @@ +name: crm_consultation_history +display_name: 고객 상담 이력 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 상담 이력 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 상담 이력 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 상담 이력 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 상담 이력 조회 해줘", "고객 상담 이력 조회 결과를 알려줘", "고객 상담 이력 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consultation_register.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consultation_register.yml new file mode 100644 index 00000000..b2e3f578 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_consultation_register.yml @@ -0,0 +1,30 @@ +name: crm_consultation_register +display_name: 고객 상담 이력 등록 +version: 1.0.0 +category_key: crm +description: + function: 고객 상담 이력 등록 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 상담 이력 등록 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 상담 이력 등록 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 상담 이력 등록 해줘", "고객 상담 이력 등록 결과를 알려줘", "고객 상담 이력 등록 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: false +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_contact_history.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_contact_history.yml new file mode 100644 index 00000000..4979bcae --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_contact_history.yml @@ -0,0 +1,30 @@ +name: crm_contact_history +display_name: 고객 접촉 이력 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 접촉 이력 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 접촉 이력 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 접촉 이력 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 접촉 이력 조회 해줘", "고객 접촉 이력 조회 결과를 알려줘", "고객 접촉 이력 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_contact_register.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_contact_register.yml new file mode 100644 index 00000000..4d52eb9c --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_contact_register.yml @@ -0,0 +1,30 @@ +name: crm_contact_register +display_name: 고객 접촉 이력 등록 +version: 1.0.0 +category_key: crm +description: + function: 고객 접촉 이력 등록 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 접촉 이력 등록 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 접촉 이력 등록 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 접촉 이력 등록 해줘", "고객 접촉 이력 등록 결과를 알려줘", "고객 접촉 이력 등록 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: false +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_create.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_create.yml new file mode 100644 index 00000000..f43f0111 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_create.yml @@ -0,0 +1,30 @@ +name: crm_customer_create +display_name: 고객 정보 등록 +version: 1.0.0 +category_key: crm +description: + function: 고객 정보 등록 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 정보 등록 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 정보 등록 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 정보 등록 해줘", "고객 정보 등록 결과를 알려줘", "고객 정보 등록 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: false +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_detail.yml new file mode 100644 index 00000000..303255e2 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_detail.yml @@ -0,0 +1,30 @@ +name: crm_customer_detail +display_name: 고객 상세 정보 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 상세 정보 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 상세 정보 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 상세 정보 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 상세 정보 조회 해줘", "고객 상세 정보 조회 결과를 알려줘", "고객 상세 정보 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_duplicate_check.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_duplicate_check.yml new file mode 100644 index 00000000..c582f74e --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_duplicate_check.yml @@ -0,0 +1,30 @@ +name: crm_customer_duplicate_check +display_name: 고객 중복 여부 확인 +version: 1.0.0 +category_key: crm +description: + function: 고객 중복 여부 확인 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 중복 여부 확인 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 중복 여부 확인 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 중복 여부 확인 해줘", "고객 중복 여부 확인 결과를 알려줘", "고객 중복 여부 확인 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_search.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_search.yml new file mode 100644 index 00000000..dcf5fe7e --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_search.yml @@ -0,0 +1,30 @@ +name: crm_customer_search +display_name: 고객 통합 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 통합 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 통합 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 통합 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 통합 조회 해줘", "고객 통합 조회 결과를 알려줘", "고객 통합 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_update.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_update.yml new file mode 100644 index 00000000..8081dd81 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_customer_update.yml @@ -0,0 +1,30 @@ +name: crm_customer_update +display_name: 고객 정보 수정 +version: 1.0.0 +category_key: crm +description: + function: 고객 정보 수정 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 정보 수정 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 정보 수정 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 정보 수정 해줘", "고객 정보 수정 결과를 알려줘", "고객 정보 수정 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_grade_change.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_grade_change.yml new file mode 100644 index 00000000..cb06445b --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_grade_change.yml @@ -0,0 +1,30 @@ +name: crm_grade_change +display_name: 고객 등급 변경 +version: 1.0.0 +category_key: crm +description: + function: 고객 등급 변경 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 등급 변경 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 등급 변경 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 등급 변경 해줘", "고객 등급 변경 결과를 알려줘", "고객 등급 변경 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_grade_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_grade_detail.yml new file mode 100644 index 00000000..5560dd84 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_grade_detail.yml @@ -0,0 +1,30 @@ +name: crm_grade_detail +display_name: 고객 등급 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 등급 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 등급 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 등급 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 등급 조회 해줘", "고객 등급 조회 결과를 알려줘", "고객 등급 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_owner_assign.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_owner_assign.yml new file mode 100644 index 00000000..b4f8694a --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_owner_assign.yml @@ -0,0 +1,30 @@ +name: crm_owner_assign +display_name: 고객 담당자 배정 +version: 1.0.0 +category_key: crm +description: + function: 고객 담당자 배정 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 담당자 배정 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 담당자 배정 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 담당자 배정 해줘", "고객 담당자 배정 결과를 알려줘", "고객 담당자 배정 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_segment_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_segment_detail.yml new file mode 100644 index 00000000..551605ee --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_segment_detail.yml @@ -0,0 +1,30 @@ +name: crm_segment_detail +display_name: 고객 세그먼트 조회 +version: 1.0.0 +category_key: crm +description: + function: 고객 세그먼트 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 세그먼트 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 세그먼트 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 세그먼트 조회 해줘", "고객 세그먼트 조회 결과를 알려줘", "고객 세그먼트 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/crm/crm_tag_manage.yml b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_tag_manage.yml new file mode 100644 index 00000000..9dbc797e --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/crm/crm_tag_manage.yml @@ -0,0 +1,30 @@ +name: crm_tag_manage +display_name: 고객 태그 관리 +version: 1.0.0 +category_key: crm +description: + function: 고객 태그 관리 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객 태그 관리 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객 태그 관리 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객 태그 관리 해줘", "고객 태그 관리 결과를 알려줘", "고객 태그 관리 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [crm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/ins/ins_insurance_processor.yml b/dap-was-cus/src/main/resources/tool-definitions/ins/ins_insurance_processor.yml deleted file mode 100644 index 2a746341..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/ins/ins_insurance_processor.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: ins_insurance_processor -display_name: 보험금 청구 처리 -version: 1.0.0 -category_key: ins -description: - function: 보험금 청구번호, 청구금액과 청구일을 받아 청구 처리 요청을 수행한다. - when_to_use: 사용자가 확인된 보험금 청구 정보를 실제 처리계에 접수하려는 경우 사용한다. - when_not_to_use: 청구 상태만 조회하거나 필수 정보가 확인되지 않은 경우에는 사용하지 않는다. - io_limits: 실행 시 업무 상태가 변경될 수 있으므로 호출 전에 입력값과 사용자 의사를 확인해야 한다. -display_description: 확인된 보험금 청구 요청을 처리계에 전달합니다. -example_queries: ["확인한 내용으로 보험금 청구를 접수해줘", "이 청구번호의 보험금 처리를 진행해줘", "오늘 날짜로 보험금 청구 요청을 보내줘"] -read_only: false -destructive: true -idempotent: false -parameters_schema: - type: object - properties: - claimNumber: {type: string, description: 처리할 보험금 청구번호} - claimAmount: {type: number, description: 처리할 보험금 청구금액} - claimDate: {type: string, description: 청구일자 YYYYMMDD, pattern: "^[0-9]{8}$"} - required: [claimNumber, claimAmount, claimDate] - additionalProperties: false -tags: [보험금, 청구처리] -legacy_interface_id: CLAIM0000001 -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/oth/oth_onnba3011_call.yml b/dap-was-cus/src/main/resources/tool-definitions/oth/oth_onnba3011_call.yml deleted file mode 100644 index 77e1a91d..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/oth/oth_onnba3011_call.yml +++ /dev/null @@ -1,35 +0,0 @@ -name: oth_onnba3011_call -display_name: ONNBA3011 보험 업무 조회 -version: 1.0.0 -category_key: oth -description: - function: ONNBA3011 입력정보를 MCI 전문으로 변환해 보험 업무 결과를 조회한다. - when_to_use: 사용자가 ONNBA3011 인터페이스 기준의 보험 계약 또는 지급 정보를 조회하려는 경우 사용한다. - when_not_to_use: 인터페이스 입력값을 확인할 수 없거나 보험 정보를 변경하려는 경우에는 사용하지 않는다. - io_limits: CLCNNB00001 인터페이스 규격에 맞는 값만 전달하며 조회 결과를 업무 응답으로 변환한다. -display_description: ONNBA3011 업무 정보를 MCI로 조회합니다. -example_queries: ["고객의 보험 업무 정보를 조회해줘", "ONNBA3011 기준으로 계약 정보를 확인해줘", "입력한 고객번호의 보험 결과를 알려줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - dalScCd: {type: string, description: 거래 구분 코드} - cstSucoRltyCd: {type: string, description: 고객 성공 관계 코드} - csNo: {type: string, description: 고객 번호} - rdreNo: {type: string, description: 설계사 번호} - unfcPvsCalReqYn: {type: string, description: 미확정 지급 계산 요청 여부} - kcisPymmTnnrRequest: {type: string, description: KCIS 납입 기간 요청값} - lmovYn: {type: string, description: 계약 이동 여부} - genPsthApvTrgtYn: {type: string, description: 일반 사후 승인 대상 여부} - ircoLmovEcpbTrgtYn: {type: string, description: 계약 이동 예외 대상 여부} - digCalYn: {type: string, description: 디지털 계산 여부} - prbuIciDigCalYn: {type: string, description: 상품별 디지털 계산 여부} - unfcPrbuIrcoAddu: {type: object, description: 미확정 상품 추가 정보, additionalProperties: true} - sucoIspaBasDto: {type: object, description: 성공 심사 기본 정보, additionalProperties: true} - additionalProperties: false -tags: [보험, MCI] -legacy_interface_id: CLCNNB00001 -required_env_keys: [GLOW_COMMUNICATION_MCI_HOST, GLOW_COMMUNICATION_MCI_PORT] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_exchange_inquiry.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_exchange_inquiry.yml deleted file mode 100644 index 097aa3e6..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_exchange_inquiry.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: smp_exchange_inquiry -display_name: 실시간 환율 조회 -version: 1.0.0 -category_key: smp -description: - function: 통화코드를 기준으로 현재 환율 정보를 조회한다. - when_to_use: 사용자가 USD, EUR, JPY 등 특정 통화의 환율을 확인하려는 경우 사용한다. - when_not_to_use: 환전 거래를 실행하거나 과거 환율 통계를 분석하려는 경우에는 사용하지 않는다. - io_limits: 지원되는 통화코드의 조회 시점 환율만 반환하며 실제 환전 기능은 제공하지 않는다. -display_description: 지정한 통화의 현재 환율을 조회합니다. -example_queries: ["오늘 달러 환율을 알려줘", "엔화 환율이 얼마인지 조회해줘", "유로 환율을 확인해줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - currencyCode: {type: string, description: 조회할 ISO 통화코드, pattern: "^[A-Z]{3}$"} - additionalProperties: false -tags: [환율, 금융] -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_quote_daily.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_quote_daily.yml deleted file mode 100644 index 1ee08ff1..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_quote_daily.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: smp_quote_daily -display_name: 오늘의 명언 조회 -version: 1.0.0 -category_key: smp -description: - function: 선택한 카테고리에 맞는 오늘의 명언 한 건을 조회한다. - when_to_use: 사용자가 명언이나 짧은 동기부여 문구를 요청한 경우 사용한다. - when_not_to_use: 업무 데이터 조회나 사실 검증이 필요한 질문에는 사용하지 않는다. - io_limits: 등록된 명언 데이터 중 한 건만 반환하며 출처 정보가 없을 수 있다. -display_description: 카테고리에 맞는 오늘의 명언을 제공합니다. -example_queries: ["오늘 힘이 되는 말을 알려줘", "업무 시작 전에 명언 하나 보여줘", "성공에 관한 짧은 문구를 추천해줘"] -read_only: true -destructive: false -idempotent: false -parameters_schema: - type: object - properties: - category: {type: string, description: 조회할 명언 카테고리} - additionalProperties: false -tags: [명언, 콘텐츠] -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml deleted file mode 100644 index 51c53203..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml +++ /dev/null @@ -1,22 +0,0 @@ -name: smp_team_list -display_name: MCP·TOOL 파트 구성원 조회 -version: 1.0.0 -category_key: smp -description: - function: 신한라이프 AX 추진팀과 MCP·TOOL 파트 구성원 및 직급을 조회한다. - when_to_use: 사용자가 프로젝트 담당자나 팀별 구성원 정보를 묻는 경우 사용한다. - when_not_to_use: 인사 개인정보나 연락처 또는 조직 변경 이력을 요청하는 경우에는 사용하지 않는다. - io_limits: 사전에 등록된 구성원의 이름과 직급만 반환하며 민감한 인사정보는 포함하지 않는다. -display_description: 신한라이프 MCP·TOOL 파트 담당자와 구성원을 조회합니다. -example_queries: ["MCP 팀 담당자를 알려줘", "TOOL 파트 구성원이 누구인지 보여줘", "AX 추진팀 담당자를 찾아줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - teamName: {type: string, description: 조회할 팀 이름 또는 전체} - additionalProperties: false -tags: [조직, 담당자] -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_weather_inquiry.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_weather_inquiry.yml deleted file mode 100644 index c2d6f6fd..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/smp/smp_weather_inquiry.yml +++ /dev/null @@ -1,23 +0,0 @@ -name: smp_weather_inquiry -display_name: 도시 날씨 조회 -version: 1.0.0 -category_key: smp -description: - function: 도시명을 기준으로 현재 날씨, 온도와 풍속을 조회한다. - when_to_use: 사용자가 특정 도시의 현재 기상 정보를 요청한 경우 사용한다. - when_not_to_use: 장기 예보나 기상 특보 또는 공식 재난정보가 필요한 경우에는 사용하지 않는다. - io_limits: 입력한 도시의 현재 관측 기반 샘플 정보만 반환한다. -display_description: 지정한 도시의 현재 날씨 정보를 조회합니다. -example_queries: ["서울 날씨를 알려줘", "부산의 현재 온도를 조회해줘", "제주도 바람이 얼마나 부는지 알려줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - city: {type: string, description: 날씨를 조회할 도시명} - required: [city] - additionalProperties: false -tags: [날씨, 조회] -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_detail.yml deleted file mode 100644 index 005f09a6..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_detail.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: sol_request_detail -display_name: SOL 의뢰서 상세 조회 -version: 1.0.0 -category_key: sol -description: - function: SOL 의뢰서 식별자를 기준으로 의뢰서 상세 내용을 조회한다. - when_to_use: 사용자가 특정 SOL 의뢰서의 상세 내용과 진행 정보를 확인하려는 경우 사용한다. - when_not_to_use: 의뢰서 목록만 찾거나 의뢰서를 변경 또는 처리하려는 경우에는 사용하지 않는다. - io_limits: 정확한 의뢰서 ID가 필요하며 등록된 상세 정보만 반환한다. -display_description: SOL 의뢰서 한 건의 상세 정보를 조회합니다. -example_queries: ["이 SOL 의뢰서 상세를 보여줘", "의뢰서 ID로 처리 내용을 확인해줘", "선택한 의뢰서의 상세 정보를 알려줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - srId: {type: string, description: 상세 조회할 SOL 의뢰서 ID} - required: [srId] - additionalProperties: false -tags: [SOL, 의뢰서] -legacy_interface_id: SOLG00000002 -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_list.yml b/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_list.yml deleted file mode 100644 index 8c2fa3b9..00000000 --- a/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_list.yml +++ /dev/null @@ -1,25 +0,0 @@ -name: sol_request_list -display_name: SOL 의뢰서 목록 조회 -version: 1.0.0 -category_key: sol -description: - function: 진행상태, 조회기간과 조회대상 조건으로 SOL 의뢰서 목록을 조회한다. - when_to_use: 사용자가 자신의 SOL 의뢰서나 상태별 의뢰서 목록을 확인하려는 경우 사용한다. - when_not_to_use: 특정 의뢰서의 상세 내용만 보거나 의뢰서를 변경하려는 경우에는 사용하지 않는다. - io_limits: 입력 조건에 해당하는 의뢰서 요약 목록만 반환한다. -display_description: 조건에 맞는 SOL 의뢰서 목록을 조회합니다. -example_queries: ["진행 중인 SOL 의뢰서를 보여줘", "최근 한 달간 내 의뢰서를 조회해줘", "완료된 의뢰서 목록을 알려줘"] -read_only: true -destructive: false -idempotent: true -parameters_schema: - type: object - properties: - status: {type: string, description: 조회할 의뢰서 진행상태} - period: {type: string, description: 조회할 기간 조건} - target: {type: string, description: 나의 업무 또는 전체 조회대상} - additionalProperties: false -tags: [SOL, 의뢰서] -legacy_interface_id: SOLG00000001 -required_env_keys: [] -owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_assign.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_assign.yml new file mode 100644 index 00000000..df41cdcb --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_assign.yml @@ -0,0 +1,30 @@ +name: voc_assign +display_name: VOC 담당자 배정 +version: 1.0.0 +category_key: voc +description: + function: VOC 담당자 배정 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 담당자 배정 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 담당자 배정 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 담당자 배정 해줘", "VOC 담당자 배정 결과를 알려줘", "VOC 담당자 배정 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_attachments.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_attachments.yml new file mode 100644 index 00000000..121ee990 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_attachments.yml @@ -0,0 +1,30 @@ +name: voc_attachments +display_name: VOC 첨부파일 조회 +version: 1.0.0 +category_key: voc +description: + function: VOC 첨부파일 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 첨부파일 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 첨부파일 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 첨부파일 조회 해줘", "VOC 첨부파일 조회 결과를 알려줘", "VOC 첨부파일 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_change_status.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_change_status.yml new file mode 100644 index 00000000..8b64a222 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_change_status.yml @@ -0,0 +1,30 @@ +name: voc_change_status +display_name: VOC 처리 상태 변경 +version: 1.0.0 +category_key: voc +description: + function: VOC 처리 상태 변경 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 처리 상태 변경 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 처리 상태 변경 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 처리 상태 변경 해줘", "VOC 처리 상태 변경 결과를 알려줘", "VOC 처리 상태 변경 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_classify_type.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_classify_type.yml new file mode 100644 index 00000000..46526bef --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_classify_type.yml @@ -0,0 +1,30 @@ +name: voc_classify_type +display_name: VOC 유형 분류 +version: 1.0.0 +category_key: voc +description: + function: VOC 유형 분류 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 유형 분류 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 유형 분류 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 유형 분류 해줘", "VOC 유형 분류 결과를 알려줘", "VOC 유형 분류 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_customer_history.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_customer_history.yml new file mode 100644 index 00000000..484f1ffb --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_customer_history.yml @@ -0,0 +1,30 @@ +name: voc_customer_history +display_name: 고객별 VOC 이력 조회 +version: 1.0.0 +category_key: voc +description: + function: 고객별 VOC 이력 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 고객별 VOC 이력 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 고객별 VOC 이력 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["고객별 VOC 이력 조회 해줘", "고객별 VOC 이력 조회 결과를 알려줘", "고객별 VOC 이력 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_detail.yml new file mode 100644 index 00000000..73963e51 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_detail.yml @@ -0,0 +1,30 @@ +name: voc_detail +display_name: VOC 상세 조회 +version: 1.0.0 +category_key: voc +description: + function: VOC 상세 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 상세 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 상세 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 상세 조회 해줘", "VOC 상세 조회 결과를 알려줘", "VOC 상세 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_detect_duplicate.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_detect_duplicate.yml new file mode 100644 index 00000000..1b4ba4fd --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_detect_duplicate.yml @@ -0,0 +1,30 @@ +name: voc_detect_duplicate +display_name: 중복 VOC 탐지 +version: 1.0.0 +category_key: voc +description: + function: 중복 VOC 탐지 기능을 수행합니다. + when_to_use: 고객채널 업무에서 중복 VOC 탐지 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 중복 VOC 탐지 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["중복 VOC 탐지 해줘", "중복 VOC 탐지 결과를 알려줘", "중복 VOC 탐지 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_extend_due_date.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_extend_due_date.yml new file mode 100644 index 00000000..b6d51786 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_extend_due_date.yml @@ -0,0 +1,30 @@ +name: voc_extend_due_date +display_name: VOC 처리 기한 연장 +version: 1.0.0 +category_key: voc +description: + function: VOC 처리 기한 연장 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 처리 기한 연장 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 처리 기한 연장 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 처리 기한 연장 해줘", "VOC 처리 기한 연장 결과를 알려줘", "VOC 처리 기한 연장 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_register.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_register.yml new file mode 100644 index 00000000..b4aa12cd --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_register.yml @@ -0,0 +1,30 @@ +name: voc_register +display_name: VOC 접수 등록 +version: 1.0.0 +category_key: voc +description: + function: VOC 접수 등록 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 접수 등록 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 접수 등록 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 접수 등록 해줘", "VOC 접수 등록 결과를 알려줘", "VOC 접수 등록 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: false +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_register_result.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_register_result.yml new file mode 100644 index 00000000..6e2cc906 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_register_result.yml @@ -0,0 +1,30 @@ +name: voc_register_result +display_name: VOC 처리 결과 등록 +version: 1.0.0 +category_key: voc +description: + function: VOC 처리 결과 등록 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 처리 결과 등록 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 처리 결과 등록 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 처리 결과 등록 해줘", "VOC 처리 결과 등록 결과를 알려줘", "VOC 처리 결과 등록 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_search.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_search.yml new file mode 100644 index 00000000..58ef2bf9 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_search.yml @@ -0,0 +1,30 @@ +name: voc_search +display_name: VOC 목록 검색 +version: 1.0.0 +category_key: voc +description: + function: VOC 목록 검색 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 목록 검색 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 목록 검색 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 목록 검색 해줘", "VOC 목록 검색 결과를 알려줘", "VOC 목록 검색 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_send_reply.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_send_reply.yml new file mode 100644 index 00000000..eb20c917 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_send_reply.yml @@ -0,0 +1,30 @@ +name: voc_send_reply +display_name: VOC 답변 발송 +version: 1.0.0 +category_key: voc +description: + function: VOC 답변 발송 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 답변 발송 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 답변 발송 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 답변 발송 해줘", "VOC 답변 발송 결과를 알려줘", "VOC 답변 발송 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: false +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_set_priority.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_set_priority.yml new file mode 100644 index 00000000..38968007 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_set_priority.yml @@ -0,0 +1,30 @@ +name: voc_set_priority +display_name: VOC 우선순위 설정 +version: 1.0.0 +category_key: voc +description: + function: VOC 우선순위 설정 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 우선순위 설정 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 우선순위 설정 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 우선순위 설정 해줘", "VOC 우선순위 설정 결과를 알려줘", "VOC 우선순위 설정 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_statistics.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_statistics.yml new file mode 100644 index 00000000..cabb49df --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_statistics.yml @@ -0,0 +1,30 @@ +name: voc_statistics +display_name: VOC 통계 조회 +version: 1.0.0 +category_key: voc +description: + function: VOC 통계 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 통계 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 통계 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 통계 조회 해줘", "VOC 통계 조회 결과를 알려줘", "VOC 통계 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_transfer.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_transfer.yml new file mode 100644 index 00000000..9cce390b --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_transfer.yml @@ -0,0 +1,30 @@ +name: voc_transfer +display_name: VOC 이관 처리 +version: 1.0.0 +category_key: voc +description: + function: VOC 이관 처리 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 이관 처리 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 이관 처리 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 이관 처리 해줘", "VOC 이관 처리 결과를 알려줘", "VOC 이관 처리 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_update.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_update.yml new file mode 100644 index 00000000..0da02b0f --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_update.yml @@ -0,0 +1,30 @@ +name: voc_update +display_name: VOC 내용 수정 +version: 1.0.0 +category_key: voc +description: + function: VOC 내용 수정 기능을 수행합니다. + when_to_use: 고객채널 업무에서 VOC 내용 수정 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: VOC 내용 수정 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["VOC 내용 수정 해줘", "VOC 내용 수정 결과를 알려줘", "VOC 내용 수정 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/voc/voc_urgent_list.yml b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_urgent_list.yml new file mode 100644 index 00000000..2787c21b --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/voc/voc_urgent_list.yml @@ -0,0 +1,30 @@ +name: voc_urgent_list +display_name: 긴급 VOC 목록 조회 +version: 1.0.0 +category_key: voc +description: + function: 긴급 VOC 목록 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 긴급 VOC 목록 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 긴급 VOC 목록 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["긴급 VOC 목록 조회 해줘", "긴급 VOC 목록 조회 결과를 알려줘", "긴급 VOC 목록 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [voc, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_copy.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_copy.yml new file mode 100644 index 00000000..8c895008 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_copy.yml @@ -0,0 +1,30 @@ +name: wcm_content_copy +display_name: 웹 콘텐츠 복사 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 복사 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 복사 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 복사 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 복사 해줘", "웹 콘텐츠 복사 결과를 알려줘", "웹 콘텐츠 복사 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: false +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_create.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_create.yml new file mode 100644 index 00000000..bdd834a9 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_create.yml @@ -0,0 +1,30 @@ +name: wcm_content_create +display_name: 웹 콘텐츠 등록 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 등록 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 등록 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 등록 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 등록 해줘", "웹 콘텐츠 등록 결과를 알려줘", "웹 콘텐츠 등록 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: false +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_delete.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_delete.yml new file mode 100644 index 00000000..705cea32 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_delete.yml @@ -0,0 +1,30 @@ +name: wcm_content_delete +display_name: 웹 콘텐츠 삭제 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 삭제 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 삭제 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 삭제 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 삭제 해줘", "웹 콘텐츠 삭제 결과를 알려줘", "웹 콘텐츠 삭제 기능을 실행해줘"] +read_only: false +destructive: true +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_detail.yml new file mode 100644 index 00000000..1beb9566 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_detail.yml @@ -0,0 +1,30 @@ +name: wcm_content_detail +display_name: 웹 콘텐츠 상세 조회 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 상세 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 상세 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 상세 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 상세 조회 해줘", "웹 콘텐츠 상세 조회 결과를 알려줘", "웹 콘텐츠 상세 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_list.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_list.yml new file mode 100644 index 00000000..9bdeeb01 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_list.yml @@ -0,0 +1,30 @@ +name: wcm_content_list +display_name: 웹 콘텐츠 목록 조회 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 목록 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 목록 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 목록 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 목록 조회 해줘", "웹 콘텐츠 목록 조회 결과를 알려줘", "웹 콘텐츠 목록 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_preview.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_preview.yml new file mode 100644 index 00000000..5687185c --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_preview.yml @@ -0,0 +1,30 @@ +name: wcm_content_preview +display_name: 웹 콘텐츠 미리보기 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 미리보기 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 미리보기 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 미리보기 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 미리보기 해줘", "웹 콘텐츠 미리보기 결과를 알려줘", "웹 콘텐츠 미리보기 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_publish.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_publish.yml new file mode 100644 index 00000000..bffe3a21 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_publish.yml @@ -0,0 +1,30 @@ +name: wcm_content_publish +display_name: 웹 콘텐츠 게시 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 게시 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 게시 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 게시 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 게시 해줘", "웹 콘텐츠 게시 결과를 알려줘", "웹 콘텐츠 게시 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_request_approval.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_request_approval.yml new file mode 100644 index 00000000..f25882e0 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_request_approval.yml @@ -0,0 +1,30 @@ +name: wcm_content_request_approval +display_name: 웹 콘텐츠 승인 요청 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 승인 요청 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 승인 요청 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 승인 요청 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 승인 요청 해줘", "웹 콘텐츠 승인 요청 결과를 알려줘", "웹 콘텐츠 승인 요청 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_restore_version.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_restore_version.yml new file mode 100644 index 00000000..07603a96 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_restore_version.yml @@ -0,0 +1,30 @@ +name: wcm_content_restore_version +display_name: 웹 콘텐츠 이전 버전 복원 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 이전 버전 복원 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 이전 버전 복원 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 이전 버전 복원 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 이전 버전 복원 해줘", "웹 콘텐츠 이전 버전 복원 결과를 알려줘", "웹 콘텐츠 이전 버전 복원 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_review_approval.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_review_approval.yml new file mode 100644 index 00000000..4841a1f1 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_review_approval.yml @@ -0,0 +1,30 @@ +name: wcm_content_review_approval +display_name: 웹 콘텐츠 승인·반려 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 승인·반려 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 승인·반려 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 승인·반려 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 승인·반려 해줘", "웹 콘텐츠 승인·반려 결과를 알려줘", "웹 콘텐츠 승인·반려 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_schedule_publish.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_schedule_publish.yml new file mode 100644 index 00000000..32cb3105 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_schedule_publish.yml @@ -0,0 +1,30 @@ +name: wcm_content_schedule_publish +display_name: 웹 콘텐츠 예약 게시 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 예약 게시 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 예약 게시 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 예약 게시 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 예약 게시 해줘", "웹 콘텐츠 예약 게시 결과를 알려줘", "웹 콘텐츠 예약 게시 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_unpublish.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_unpublish.yml new file mode 100644 index 00000000..ff0bebaa --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_unpublish.yml @@ -0,0 +1,30 @@ +name: wcm_content_unpublish +display_name: 웹 콘텐츠 게시 중지 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 게시 중지 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 게시 중지 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 게시 중지 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 게시 중지 해줘", "웹 콘텐츠 게시 중지 결과를 알려줘", "웹 콘텐츠 게시 중지 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_update.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_update.yml new file mode 100644 index 00000000..aeabc757 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_update.yml @@ -0,0 +1,30 @@ +name: wcm_content_update +display_name: 웹 콘텐츠 수정 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 수정 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 수정 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 수정 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 수정 해줘", "웹 콘텐츠 수정 결과를 알려줘", "웹 콘텐츠 수정 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_version_history.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_version_history.yml new file mode 100644 index 00000000..613eade8 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_content_version_history.yml @@ -0,0 +1,30 @@ +name: wcm_content_version_history +display_name: 웹 콘텐츠 버전 이력 조회 +version: 1.0.0 +category_key: wcm +description: + function: 웹 콘텐츠 버전 이력 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 웹 콘텐츠 버전 이력 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 웹 콘텐츠 버전 이력 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["웹 콘텐츠 버전 이력 조회 해줘", "웹 콘텐츠 버전 이력 조회 결과를 알려줘", "웹 콘텐츠 버전 이력 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_metadata_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_metadata_detail.yml new file mode 100644 index 00000000..63654705 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_metadata_detail.yml @@ -0,0 +1,30 @@ +name: wcm_metadata_detail +display_name: 콘텐츠 메타데이터 조회 +version: 1.0.0 +category_key: wcm +description: + function: 콘텐츠 메타데이터 조회 기능을 수행합니다. + when_to_use: 고객채널 업무에서 콘텐츠 메타데이터 조회 기능이 필요할 때 사용합니다. + when_not_to_use: 정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 콘텐츠 메타데이터 조회 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["콘텐츠 메타데이터 조회 해줘", "콘텐츠 메타데이터 조회 결과를 알려줘", "콘텐츠 메타데이터 조회 기능을 실행해줘"] +read_only: true +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 조회, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_metadata_upsert.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_metadata_upsert.yml new file mode 100644 index 00000000..552e4b9f --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_metadata_upsert.yml @@ -0,0 +1,30 @@ +name: wcm_metadata_upsert +display_name: 콘텐츠 메타데이터 등록·수정 +version: 1.0.0 +category_key: wcm +description: + function: 콘텐츠 메타데이터 등록·수정 기능을 수행합니다. + when_to_use: 고객채널 업무에서 콘텐츠 메타데이터 등록·수정 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 콘텐츠 메타데이터 등록·수정 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["콘텐츠 메타데이터 등록·수정 해줘", "콘텐츠 메타데이터 등록·수정 결과를 알려줘", "콘텐츠 메타데이터 등록·수정 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_taxonomy_manage.yml b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_taxonomy_manage.yml new file mode 100644 index 00000000..59897a95 --- /dev/null +++ b/dap-was-cus/src/main/resources/tool-definitions/wcm/wcm_taxonomy_manage.yml @@ -0,0 +1,30 @@ +name: wcm_taxonomy_manage +display_name: 콘텐츠 카테고리·태그 관리 +version: 1.0.0 +category_key: wcm +description: + function: 콘텐츠 카테고리·태그 관리 기능을 수행합니다. + when_to_use: 고객채널 업무에서 콘텐츠 카테고리·태그 관리 기능이 필요할 때 사용합니다. + when_not_to_use: 필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다. + io_limits: 입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다. +display_description: 콘텐츠 카테고리·태그 관리 기능을 안전한 모의 데이터로 제공합니다. +example_queries: ["콘텐츠 카테고리·태그 관리 해줘", "콘텐츠 카테고리·태그 관리 결과를 알려줘", "콘텐츠 카테고리·태그 관리 기능을 실행해줘"] +read_only: false +destructive: false +idempotent: true +parameters_schema: + type: object + properties: + subjectId: {type: string, description: 업무 대상 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + customerId: {type: string, description: 고객 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + content: {type: string, description: 검색어 또는 처리 내용, maxLength: 2000} + value: {type: string, description: 상태·유형·등급 또는 처리 값, maxLength: 100} + assigneeId: {type: string, description: 담당자 식별자, pattern: "^[A-Za-z0-9_-]{3,40}$"} + startDate: {type: string, description: 조회 시작일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + endDate: {type: string, description: 조회 종료일 또는 처리 예정일, pattern: "^\\d{4}-\\d{2}-\\d{2}$"} + page: {type: integer, description: 페이지 번호, minimum: 0} + size: {type: integer, description: 페이지 크기, minimum: 1, maximum: 100} + additionalProperties: false +tags: [wcm, 고객채널, 처리, mock] +required_env_keys: [] +owner_org: MCP_TOOL diff --git a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCaseTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCaseTest.java deleted file mode 100644 index 6e7929f2..00000000 --- a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCaseTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.cmm.usecase; - -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolRequest; -import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGuidanceToolResponse; -import org.junit.jupiter.api.Test; - -class CustomerGuidanceToolUseCaseTest { - - @Test - void createsToolRequestAndResponseDtos() { - assertNotNull(CustomerGuidanceToolRequest.builder().build()); - assertNotNull(CustomerGuidanceToolResponse.builder().build()); - } -} diff --git a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCaseTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCaseTest.java deleted file mode 100644 index 7508af8d..00000000 --- a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCaseTest.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.ins.usecase; - -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorRequest; -import io.shinhanlife.dap.mcc.biz.ins.dto.InsuranceClaimProcessorResponse; -import org.junit.jupiter.api.Test; - -class InsuranceClaimProcessorUseCaseTest { - - @Test - void createsToolRequestAndResponseDtos() { - assertNotNull(new InsuranceClaimProcessorRequest()); - assertNotNull(new InsuranceClaimProcessorResponse()); - } -} diff --git a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImplTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImplTest.java deleted file mode 100644 index cc909c81..00000000 --- a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImplTest.java +++ /dev/null @@ -1,46 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.oth.usecase.impl; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.shinhanlife.dap.mcc.biz.oth.converter.Onnba3011Converter; -import io.shinhanlife.dap.mcc.biz.oth.dto.Onnba3011Request; -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 org.junit.jupiter.api.Test; -import org.mockito.Mockito; - -/** - * @package io.shinhanlife.dap.mcc.biz.oth.usecase.impl - * @className OnnbaMciToolUseCaseImplTest - * @description ONNBA MCI tool use case test - * @author 0986406 - * @create 2026.07.27 - *
- * ---------- revision history ----------
- * date       author    description
- * ---------- --------- ---------------------------
- * 2026.07.27 0986406    initial creation
- * 
- */ -class Onnba3011UseCaseImplTest { - - @Test - void convertsToolRequestBeforeCallingMciClient() throws Exception { - MciCfpaClient mciCfpaClient = Mockito.mock(MciCfpaClient.class); - Onnba3011Converter converter = Mockito.mock(Onnba3011Converter.class); - Onnba3011UseCaseImpl useCase = new Onnba3011UseCaseImpl(mciCfpaClient, converter); - Onnba3011Request request = new Onnba3011Request(); - CLCNNB00001_I mciRequest = new CLCNNB00001_I(); - - when(converter.toMciRequest(request)).thenReturn(mciRequest); - when(mciCfpaClient.callCfpa0001(mciRequest)).thenReturn("success"); - - Object result = useCase.callOnnba3011(request); - - assertEquals("success", result); - verify(converter).toMciRequest(request); - verify(mciCfpaClient).callCfpa0001(mciRequest); - } -} diff --git a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImplTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImplTest.java deleted file mode 100644 index e22e7d8c..00000000 --- a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImplTest.java +++ /dev/null @@ -1,45 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.usecase.impl; - -import static org.assertj.core.api.Assertions.assertThat; - -import io.shinhanlife.dap.mcc.biz.sol.converter.SolReqDetailConverter; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailResponse; -import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.MciNclgClient; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.usecase.impl - * @className SolReqDetailUseCaseImplTest - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -class SolReqDetailUseCaseImplTest { - - @Test - void returnsLocalSampleDetailBySrId() { - MciNclgClient mci = Mockito.mock(MciNclgClient.class); - SolReqDetailConverter converter = Mockito.mock(SolReqDetailConverter.class); - SolReqDetailUseCaseImpl useCase = new SolReqDetailUseCaseImpl(mci, converter); - ReflectionTestUtils.setField(useCase, "mockEnabled", true); - - SolReqDetailRequest request = new SolReqDetailRequest(); - request.setSrId("SR-2026-001"); - - SolReqDetailResponse response = (SolReqDetailResponse) useCase.getSolRequestDetail(request); - - assertThat(response.getSrId()).isEqualTo("SR-2026-001"); - assertThat(response.getSrName()).isEqualTo("AX HUB 메인 화면 UI 개편"); - Mockito.verifyNoInteractions(mci); - } -} diff --git a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImplTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImplTest.java deleted file mode 100644 index 97465122..00000000 --- a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImplTest.java +++ /dev/null @@ -1,39 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.usecase.impl; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import io.shinhanlife.dap.mcc.biz.sol.converter.SolReqListConverter; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListRequest; -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListResponse; -import io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.MciNclgClient; -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 io.shinhanlife.glow.communication.dto.Transfer; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; - -class SolReqListUseCaseImplTest { - - @Test - void callsMciWithConvertedRequestAndReturnsDummyResponse() throws Exception { - MciNclgClient mci = Mockito.mock(MciNclgClient.class); - SolReqListConverter converter = Mockito.mock(SolReqListConverter.class); - SolReqListUseCaseImpl useCase = new SolReqListUseCaseImpl(mci, converter); - SolReqListRequest request = new SolReqListRequest(); - SOLG00000001_I mciRequest = new SOLG00000001_I(); - - when(converter.toLegacyRequest(request)).thenReturn(mciRequest); - when(mci.callTo(eq("SOLG00000001"), eq("SOLG00000001"), eq(mciRequest), eq(SOLG00000001_O.class))) - .thenReturn(new Transfer<>()); - - SolReqListResponse response = (SolReqListResponse) useCase.searchSolRequests(request); - - verify(converter).toLegacyRequest(request); - verify(mci).callTo("SOLG00000001", "SOLG00000001", mciRequest, SOLG00000001_O.class); - assertThat(response.getReqList()).extracting(SolReqListResponse.SolReqListItem::getSrId) - .containsExactly("SR-2026-001", "SR-2026-002"); - } -} diff --git a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java deleted file mode 100644 index d7e3a564..00000000 --- a/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java +++ /dev/null @@ -1,55 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter; - -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; - -import io.shinhanlife.dap.mcc.biz.oth.converter.Onnba3011Converter; -import io.shinhanlife.dap.mcc.biz.oth.dto.Onnba3011Request; -import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; -import org.junit.jupiter.api.Test; -import org.mapstruct.factory.Mappers; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter - * @className Onnba3011MciRequestConverterTest - * @description ONNBA 3011 request converter test - * @author 0986406 - * @create 2026.07.27 - *
- * ---------- revision history ----------
- * date       author    description
- * ---------- --------- ---------------------------
- * 2026.07.27 0986406    initial creation
- * 
- */ -class Onnba3011MciRequestConverterTest { - - private final Onnba3011Converter converter = Mappers.getMapper(Onnba3011Converter.class); - - @Test - void mapsRootAndNestedRequestFieldsToMciPayload() { - Onnba3011Request source = request(); - - CLCNNB00001_I result = converter.toMciRequest(source); - - assertEquals("A", result.getDalScCd()); - assertEquals("123456", result.getCsNo()); - assertNotNull(result.getUnfcPrbuIrcoAddu()); - assertNotNull(result.getSucoIspaBasDto()); - assertEquals("01", result.getSucoIspaBasDto().getCcnDalTypCd()); - assertEquals("20260727", result.getSucoIspaBasDto().getSucoYmd()); - } - - private Onnba3011Request request() { - Onnba3011Request request = new Onnba3011Request(); - request.setDalScCd("A"); - request.setCsNo("123456"); - request.setUnfcPrbuIrcoAddu(new Onnba3011Request.UnfcPrbuIrcoAdduDto()); - - Onnba3011Request.SucoIspaBasDto suco = new Onnba3011Request.SucoIspaBasDto(); - suco.setCcnDalTypCd("01"); - suco.setSucoYmd("20260727"); - request.setSucoIspaBasDto(suco); - return request; - } -}