forked from kimhyungsik/ax_hub_mcp_tool
refactor: migrate tools to Spring AI MCP annotations
This commit is contained in:
@@ -1,6 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.dto
|
||||
* @className BalanceRequest
|
||||
@@ -15,13 +20,12 @@ package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@Data
|
||||
public class BalanceRequest {
|
||||
@McpParameter(description = "고객의 계좌번호 (- 제외) ", required = true)
|
||||
@McpValidation(pattern = "\\S")
|
||||
@McpToolParam(description = "고객의 계좌번호 (- 제외) ", required = true)
|
||||
@Schema(pattern = "\\S", example = "1234567890")
|
||||
private String accountNumber;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -30,11 +33,12 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class BillingProcessRequest {
|
||||
|
||||
@McpParameter(description = "처리할 청구 접수 번호", required = true)
|
||||
@McpValidation(pattern = "\\S")
|
||||
@McpToolParam(description = "처리할 청구 접수 번호", required = true)
|
||||
@Schema(pattern = "\\S", example = "BILL20260805")
|
||||
private String billingId;
|
||||
|
||||
@McpParameter(description = "심사 승인 여부 (예: APPROVE, REJECT)")
|
||||
@McpValidation(required = true, allowedValues = {"APPROVE", "REJECT"})
|
||||
|
||||
@McpToolParam(description = "승인 처리 구분 (예: APPROVE, REJECT)")
|
||||
@Schema(required = true, allowableValues = {"APPROVE", "REJECT"}, example = "APPROVE")
|
||||
private String approvalStatus;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -29,6 +33,8 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class BillingStatusRequest {
|
||||
|
||||
@McpParameter(description = "조회할 청구 접수 번호", required = true)
|
||||
@McpToolParam(description = "조회할 청구 접수 번호", required = true)
|
||||
@Schema(example = "BILL20260805")
|
||||
private String billingId;
|
||||
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -29,6 +33,8 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class BondCheckRequest {
|
||||
|
||||
@McpParameter(description = "확인하고자 하는 디지털 증권 발행 금액", required = true)
|
||||
private Long amount;
|
||||
@McpToolParam(description = "확인하고자 하는 디지털 증권 발행 금액", required = true)
|
||||
@Schema(pattern = "^[0-9]+$", example = "1000000")
|
||||
private String amount;
|
||||
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -30,11 +33,12 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class BondIssueRequest {
|
||||
|
||||
@McpParameter(description = "발행할 디지털 증권 금액", required = true)
|
||||
@McpValidation(minimum = 1)
|
||||
private Long amount;
|
||||
@McpToolParam(description = "발행할 증권 금액 (숫자 문자열)", required = true)
|
||||
@Schema(pattern = "^[0-9]+$", example = "1000000")
|
||||
private String amount;
|
||||
|
||||
@McpParameter(description = "발행 대상 계좌 번호", required = true)
|
||||
@McpValidation(pattern = "\\S")
|
||||
|
||||
@McpToolParam(description = "발행 대상 계좌 번호", required = true)
|
||||
@Schema(pattern = "\\S", example = "1234567890")
|
||||
private String targetAccount;
|
||||
}
|
||||
}
|
||||
@@ -1,24 +1,10 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.dto
|
||||
* @className ClaimSearchRequest
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpAnyOf;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
@@ -34,40 +20,39 @@ import lombok.Setter;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@McpAnyOf({"claimNo", "contractNo"})
|
||||
public class ClaimSearchRequest {
|
||||
|
||||
@McpParameter(description = "청구번호. CLM 다음 숫자 13자리 형식이다.")
|
||||
@McpValidation(pattern = "^CLM[0-9]{13}$", examples = {"CLM2026070100123"})
|
||||
@McpToolParam(description = "청구번호. CLM 다음 숫자 13자리 형식이다.")
|
||||
@Schema(pattern = "^CLM[0-9]{13}$", example = "CLM2026070100123")
|
||||
private String claimNo;
|
||||
|
||||
@McpParameter(description = "계약번호. 숫자 11자리 형식이다.")
|
||||
@McpValidation(pattern = "^[0-9]{11}$", examples = {"10023456789"})
|
||||
@McpToolParam(description = "계약번호. 숫자 11자리 형식이다.")
|
||||
@Schema(pattern = "^[0-9]{11}$", example = "10023456789")
|
||||
private String contractNo;
|
||||
|
||||
@McpParameter(description = "청구 상태 필터")
|
||||
@McpValidation(allowedValues = {
|
||||
@McpToolParam(description = "청구 상태 필터")
|
||||
@Schema(example = "RECEIVED", allowableValues = {
|
||||
"RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED",
|
||||
"APPROVED", "PAID", "REJECTED", "WITHDRAWN"
|
||||
})
|
||||
private String status;
|
||||
|
||||
@McpParameter(description = "청구 유형 필터")
|
||||
@McpValidation(allowedValues = {
|
||||
@McpToolParam(description = "청구 유형 필터")
|
||||
@Schema(example = "MEDICAL", allowableValues = {
|
||||
"MEDICAL", "SURGERY", "HOSPITALIZATION",
|
||||
"DIAGNOSIS", "DEATH", "DISABILITY"
|
||||
})
|
||||
private String claimType;
|
||||
|
||||
@McpParameter(description = "접수일 조회 시작일(YYYY-MM-DD)")
|
||||
@McpValidation(format = "date", examples = {"2026-01-01"})
|
||||
@McpToolParam(description = "접수일 조회 시작일(YYYY-MM-DD)")
|
||||
@Schema(format = "date", example = "2026-01-01")
|
||||
private String fromDate;
|
||||
|
||||
@McpParameter(description = "접수일 조회 종료일(YYYY-MM-DD)")
|
||||
@McpValidation(format = "date", examples = {"2026-07-31"})
|
||||
@McpToolParam(description = "접수일 조회 종료일(YYYY-MM-DD)")
|
||||
@Schema(format = "date", example = "2026-07-31")
|
||||
private String toDate;
|
||||
|
||||
@McpParameter(description = "반환할 최대 건수")
|
||||
@McpValidation(minimum = 1, maximum = 50, defaultValue = "20")
|
||||
private Integer size;
|
||||
}
|
||||
@McpToolParam(description = "반환할 최대 건수 (기본값: 20, 최대: 50)")
|
||||
@Schema(pattern = "^[1-9][0-9]?$|^50$", defaultValue = "20", example = "20")
|
||||
private String size;
|
||||
}
|
||||
@@ -1,24 +1,10 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.dto
|
||||
* @className ClaimSearchResponse
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpOutputSchema;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import java.util.List;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@@ -36,46 +22,45 @@ import lombok.Setter;
|
||||
@Builder
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@McpOutputSchema
|
||||
public class ClaimSearchResponse {
|
||||
|
||||
@McpParameter(description = "Execution result code.")
|
||||
@McpValidation(required = true, allowedValues = {"SUCCESS", "FAILURE"})
|
||||
@McpToolParam(description = "Execution result code.")
|
||||
@Schema(required = true, allowableValues = {"SUCCESS", "FAILURE"})
|
||||
private String resultCode;
|
||||
|
||||
@McpParameter(description = "User-readable label for resultCode.")
|
||||
@McpValidation(required = true, maxLength = 100)
|
||||
@McpToolParam(description = "User-readable label for resultCode.")
|
||||
@Schema(required = true, maxLength = 100)
|
||||
private String resultLabel;
|
||||
|
||||
@McpParameter(description = "Current claim processing status code.")
|
||||
@McpValidation(required = true, allowedValues = {
|
||||
@McpToolParam(description = "Current claim processing status code.")
|
||||
@Schema(required = true, allowableValues = {
|
||||
"RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED",
|
||||
"APPROVED", "PAID", "REJECTED", "WITHDRAWN"
|
||||
})
|
||||
private String status;
|
||||
|
||||
@McpParameter(description = "User-readable label for status.")
|
||||
@McpValidation(required = true, maxLength = 100)
|
||||
@McpToolParam(description = "User-readable label for status.")
|
||||
@Schema(required = true, maxLength = 100)
|
||||
private String statusLabel;
|
||||
|
||||
@McpParameter(description = "Approved amount. Null before review; do not interpret null as zero.")
|
||||
@McpValidation(minimum = 0, nullable = true)
|
||||
@McpToolParam(description = "Approved amount. Null before review; do not interpret null as zero.")
|
||||
@Schema(minimum = "0", nullable = true)
|
||||
private Long approvedAmount;
|
||||
|
||||
@McpParameter(description = "Present only when status is REJECTED; otherwise null.")
|
||||
@McpValidation(maxLength = 200, nullable = true)
|
||||
@McpToolParam(description = "Present only when status is REJECTED; otherwise null.")
|
||||
@Schema(maxLength = 200, nullable = true)
|
||||
private String rejectionReason;
|
||||
|
||||
@McpParameter(description = "Claim summaries, ordered by received date descending.")
|
||||
@McpValidation(required = true)
|
||||
@McpToolParam(description = "Claim summaries, ordered by received date descending.")
|
||||
@Schema(required = true)
|
||||
private List<ClaimSummary> items;
|
||||
|
||||
@McpParameter(description = "True when additional results exist beyond this response.")
|
||||
@McpValidation(required = true)
|
||||
@McpToolParam(description = "True when additional results exist beyond this response.")
|
||||
@Schema(required = true)
|
||||
private Boolean hasMore;
|
||||
|
||||
@McpParameter(description = "Total number of matched claims.")
|
||||
@McpValidation(required = true, minimum = 0)
|
||||
@McpToolParam(description = "Total number of matched claims.")
|
||||
@Schema(required = true, nullable = true)
|
||||
private Integer totalCount;
|
||||
|
||||
@Getter
|
||||
@@ -85,20 +70,18 @@ public class ClaimSearchResponse {
|
||||
@AllArgsConstructor
|
||||
public static class ClaimSummary {
|
||||
|
||||
@McpParameter(description = "Claim processing status code.")
|
||||
@McpValidation(required = true)
|
||||
@McpToolParam(description = "Claim processing status code.")
|
||||
private String status;
|
||||
|
||||
@McpParameter(description = "User-readable label for status.")
|
||||
@McpValidation(required = true)
|
||||
@McpToolParam(description = "User-readable label for status.")
|
||||
private String statusLabel;
|
||||
|
||||
@McpParameter(description = "Received date in YYYY-MM-DD format.")
|
||||
@McpValidation(required = true, format = "date")
|
||||
@McpToolParam(description = "Received date in YYYY-MM-DD format.")
|
||||
@Schema(required = true, format = "date")
|
||||
private String receivedDate;
|
||||
|
||||
@McpParameter(description = "Approved amount. Null before review; do not interpret null as zero.")
|
||||
@McpValidation(minimum = 0, nullable = true)
|
||||
@McpToolParam(description = "Approved amount. Null before review; do not interpret null as zero.")
|
||||
@Schema(nullable = true)
|
||||
private Long approvedAmount;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -29,9 +33,12 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class ContractDetailRequest {
|
||||
|
||||
@McpParameter(description = "고객명", required = true)
|
||||
@McpToolParam(description = "고객명", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "조회할 계약 번호", required = true)
|
||||
|
||||
@McpToolParam(description = "조회할 계약 번호", required = true)
|
||||
@Schema(example = "1234567890")
|
||||
private String contractId;
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -29,9 +33,11 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class ContractStatusRequest {
|
||||
|
||||
@McpParameter(description = "고객명", required = true)
|
||||
@McpToolParam(description = "고객명", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "조회할 계약 번호")
|
||||
|
||||
@McpToolParam(description = "조회할 계약 번호")
|
||||
private String contractId;
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -29,9 +33,11 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class CustomerDetailRequest {
|
||||
|
||||
@McpParameter(description = "고객명", required = true)
|
||||
@McpToolParam(description = "고객명", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "고객 식별 번호 (CID)")
|
||||
|
||||
@McpToolParam(description = "고객 식별 번호 (CID)")
|
||||
private String customerId;
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -29,9 +33,11 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class CustomerGradeRequest {
|
||||
|
||||
@McpParameter(description = "고객 이름 (예: 김신한)", required = true)
|
||||
@McpToolParam(description = "고객 이름 (예: 김신한)", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "고객 식별 번호 (CID)")
|
||||
|
||||
@McpToolParam(description = "고객 식별 번호 (CID)")
|
||||
private String customerId;
|
||||
}
|
||||
@@ -1,10 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -29,6 +33,8 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class LeaveCountRequest {
|
||||
|
||||
@McpParameter(description = "연차 내역을 조회할 사원 번호", required = true)
|
||||
@McpToolParam(description = "연차 내역을 조회할 사원 번호", required = true)
|
||||
@Schema(example = "EMP12345")
|
||||
private String employeeId;
|
||||
|
||||
}
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.dto
|
||||
* @className MciSampleStringResponse
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.shinhanlife.glow.GlowMciFieldInfo;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.dto
|
||||
* @className MciSampleTargetDto
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.glow.GlowMciFieldInfo;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -21,12 +25,15 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class MetaCommonCodeRequest {
|
||||
@McpParameter(description = "통합코드 그룹 ID (예: GRP_SYS_01, GRP_COMM_CD)", required = false)
|
||||
@McpToolParam(description = "통합코드 그룹 ID (예: GRP_SYS_01, GRP_COMM_CD)", required = false)
|
||||
@Schema(example = "GRP_001")
|
||||
private String groupCode;
|
||||
|
||||
@McpParameter(description = "코드명 검색 키워드 (예: 사용, 상태)", required = false)
|
||||
|
||||
@McpToolParam(description = "코드명 검색 키워드 (예: 사용, 상태)", required = false)
|
||||
private String codeName;
|
||||
|
||||
@McpParameter(description = "사용여부 (예: Y, N)", required = false)
|
||||
@McpToolParam(description = "사용여부 (예: Y, N)", required = false)
|
||||
@Schema(example = "Y")
|
||||
private String useYn;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -21,12 +25,16 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class MetaTableRequest {
|
||||
@McpParameter(description = "테이블 물리명 키워드 (예: TB_CUST_BAS, TB_CONT)", required = false)
|
||||
@McpToolParam(description = "테이블 물리명 키워드 (예: TB_CUST_BAS, TB_CONT)", required = false)
|
||||
@Schema(example = "TB_USER")
|
||||
private String tableName;
|
||||
|
||||
@McpParameter(description = "테이블 논리명(한글) 키워드 (예: 고객기본, 계약)", required = false)
|
||||
|
||||
@McpToolParam(description = "테이블 논리명(한글) 키워드 (예: 고객기본, 계약)", required = false)
|
||||
@Schema(example = "고객기본")
|
||||
private String tableLogicalName;
|
||||
|
||||
@McpParameter(description = "스키마/소유자명 (예: DAPADM, SHLOWN)", required = false)
|
||||
@McpToolParam(description = "스키마/소유자명 (예: DAPADM, SHLOWN)", required = false)
|
||||
@Schema(example = "DAPADM")
|
||||
private String owner;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
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;
|
||||
|
||||
@@ -20,5 +22,6 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SampleStringRequest {
|
||||
@Schema(example = "test query")
|
||||
private String query;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,7 @@
|
||||
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;
|
||||
@@ -31,5 +33,6 @@ public class TemplateDownloadRequest {
|
||||
/**
|
||||
* 다운로드할 템플릿의 종류 ID (예: CUSTOMER_EXCEL, PRODUCT_PDF 등)
|
||||
*/
|
||||
@Schema(example = "TPL_001")
|
||||
private String templateId;
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import lombok.Builder;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
@@ -30,11 +33,12 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class VacationRegisterRequest {
|
||||
|
||||
@McpParameter(description = "연차를 등록할 사원 번호", required = true)
|
||||
@McpValidation(pattern = "\\S")
|
||||
@McpToolParam(description = "연차를 등록할 사원 번호", required = true)
|
||||
@Schema(pattern = "\\S", example = "EMP12345")
|
||||
private String employeeId;
|
||||
|
||||
@McpParameter(description = "휴가 일자 (YYYY-MM-DD 형식)", required = true)
|
||||
@McpValidation(pattern = "^\\d{4}-\\d{2}-\\d{2}$")
|
||||
|
||||
@McpToolParam(description = "휴가 일자 (YYYY-MM-DD 형식)", required = true)
|
||||
@Schema(pattern = "^\\d{4}-\\d{2}-\\d{2}$", example = "2026-08-05")
|
||||
private String date;
|
||||
}
|
||||
}
|
||||
@@ -1,31 +1,12 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className BalanceUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
||||
|
||||
@McpTool(routingType = "MCI", categoryKey = "cmm")
|
||||
public interface BalanceUseCase {
|
||||
@McpFunction(register = false, displayName = "balance 툴", name = "oth.cmm.balance.inquiry",
|
||||
description = "고객의 계좌 잔액을 조회합니다.",
|
||||
prompt = "고객 계좌 잔액을 조회해줘.",
|
||||
mappingId = "ACC_001"
|
||||
)
|
||||
@McpTool(name = "oth.cmm.balance.inquiry", title = "잔고 조회 툴", description = "고객의 계좌 잔액을 조회합니다.")
|
||||
@ToolHint(register = false, mappingId = "ACC_001")
|
||||
Object execute(BalanceRequest req);
|
||||
}
|
||||
|
||||
@@ -1,32 +1,13 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className BillingProcessUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
||||
|
||||
@McpTool(
|
||||
routingType = "MCI",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface BillingProcessUseCase {
|
||||
Object getStatus(BillingStatusRequest req);
|
||||
|
||||
@McpFunction(register = false, displayName = "process 툴", name = "oth.cmm.billing.process", description = "청구 처리", prompt = "현재 접수된 청구건에 대한 심사 처리를 진행해.", mappingId = "BILL_002")
|
||||
@McpTool(name = "oth.cmm.billing.process", title = "청구 프로세스 툴", description = "청구 처리")
|
||||
@ToolHint(register = false, mappingId = "BILL_002")
|
||||
Object processBilling(BillingProcessRequest data);
|
||||
}
|
||||
|
||||
@@ -1,32 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className BondIssueUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
||||
|
||||
@McpTool(
|
||||
routingType = "EAI",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface BondIssueUseCase {
|
||||
Object check(BondCheckRequest req);
|
||||
|
||||
@McpFunction(displayName = "issue 툴", name = "oth.cmm.bond.issue", register = false, description = "증권 발행 테스트1", prompt = "디지털 증권 발행 프로세스를 실행해.", mappingId = "BOND_002")
|
||||
@McpTool(name = "oth.cmm.bond.issue", title = "채권 발행 툴", description = "증권 발행 테스트1")
|
||||
@ToolHint(register = false, mappingId = "BOND_002")
|
||||
Object issue(BondIssueRequest data);
|
||||
}
|
||||
|
||||
@@ -1,42 +1,16 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className ClaimSearchSchemaSampleUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.ClaimSearchRequest;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.ClaimSearchResponse;
|
||||
|
||||
@McpTool(
|
||||
routingType = "DIRECT",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface ClaimSearchSchemaSampleUseCase {
|
||||
|
||||
@McpFunction(
|
||||
register = false,
|
||||
displayName = "Claim search JSON Schema sample",
|
||||
name = "oth.cmm.claim.search",
|
||||
description = "Claim search Tool sample using input and output JSON Schema resources.",
|
||||
prompt = "Search an insurance claim by claim number or contract number.",
|
||||
inputSchemaResource = "classpath:tool-schemas/cmm/claim-search-resource-input-schema.json",
|
||||
outputSchemaResource = "classpath:tool-schemas/cmm/claim-search-resource-output-schema.json",
|
||||
readOnlyHint = true,
|
||||
idempotentHint = true
|
||||
)
|
||||
@McpTool(name = "oth.cmm.claim.search", title = "청구 조회 스키마 샘플", description = "Claim search Tool sample using input and output JSON Schema resources.", annotations = @McpTool.McpAnnotations(readOnlyHint = true, idempotentHint = true))
|
||||
@ToolHint(register = false,
|
||||
inputSchemaResource = "classpath:mcp/schema/claim-search-resource-input-schema.json",
|
||||
outputSchemaResource = "classpath:mcp/schema/claim-search-resource-output-schema.json")
|
||||
ClaimSearchResponse search(ClaimSearchRequest request);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,35 +1,18 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className CommonUtilityUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
||||
|
||||
@McpTool(
|
||||
routingType = "HTTP",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface CommonUtilityUseCase {
|
||||
Object registerVacation(VacationRegisterRequest req);
|
||||
|
||||
@McpFunction(register = false, displayName = "get_leave_count 툴", name = "oth.cmm.leave.count", description = "연차 갯수 조회", prompt = "현재 사용 가능한 남은 연차 일수를 알려줘.", mappingId = "HR_VAC_02")
|
||||
@McpTool(name = "oth.cmm.leave.count", title = "공통 유틸리티 툴", description = "연차 갯수 조회")
|
||||
@ToolHint(register = false, mappingId = "HR_VAC_02")
|
||||
Object getLeaveCount(LeaveCountRequest data);
|
||||
|
||||
@McpFunction(register = false, displayName = "secret_tool 툴", name = "oth.cmm.secret.execute", description = "비공개 툴 테스트", prompt = "숨겨진 툴 강제 호출", mappingId = "SECRET_001", visible = false)
|
||||
@McpTool(name = "oth.cmm.secret.execute", title = "공통 유틸리티 툴", description = "비공개 툴 테스트")
|
||||
@ToolHint(register = false, mappingId = "SECRET_001")
|
||||
Object secretTool(LeaveCountRequest data);
|
||||
}
|
||||
|
||||
@@ -1,32 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className ContractInquiryUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
||||
|
||||
@McpTool(
|
||||
routingType = "HTTP",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface ContractInquiryUseCase {
|
||||
Object getStatus(ContractStatusRequest req);
|
||||
|
||||
@McpFunction(register = false, displayName = "contract_detail 툴", name = "oth.cmm.contract.detail", description = "계약상세 조회", prompt = "김신한 고객의 계약 상세 내역을 알려줘.", mappingId = "CNTR_002")
|
||||
@McpTool(name = "oth.cmm.contract.detail", title = "계약 상세조회 툴", description = "계약상세 조회")
|
||||
@ToolHint(register = false, mappingId = "CNTR_002")
|
||||
Object getDetail(ContractDetailRequest data);
|
||||
}
|
||||
|
||||
@@ -1,32 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className CustomerInfoUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
||||
|
||||
@McpTool(
|
||||
routingType = "TCP",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface CustomerInfoUseCase {
|
||||
Object getGrade(CustomerGradeRequest req);
|
||||
|
||||
@McpFunction(register = false, displayName = "detail 툴", name = "oth.cmm.customer.detail", description = "고객상세 정보 조회", prompt = "이 고객의 상세 기본정보(주소, 연락처 등)를 알려줘.", mappingId = "CRM_002")
|
||||
@McpTool(name = "oth.cmm.customer.detail", title = "고객 상세조회 툴", description = "고객상세 정보 조회")
|
||||
@ToolHint(register = false, mappingId = "CRM_002")
|
||||
Object getDetail(CustomerDetailRequest data);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeRequest;
|
||||
|
||||
/**
|
||||
@@ -18,20 +19,8 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaCommonCodeRequest;
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@McpTool(
|
||||
routingType = "MCI",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface MetaCommonCodeUseCase {
|
||||
@McpFunction(
|
||||
displayName = "메타 통합코드 조회 툴",
|
||||
name = "oth.cmm.common-code.lookup",
|
||||
description = "메타 통합코드 목록을 조회해줘",
|
||||
prompt = "메타 통합코드 목록을 조회해줘",
|
||||
mappingId = "CLCNNB00001",
|
||||
register = false,
|
||||
requiresApproval = false,
|
||||
openWorldHint = true
|
||||
)
|
||||
@McpTool(name = "oth.cmm.common-code.lookup", title = "메타 공통코드 조회 툴", description = "메타 통합코드 목록을 조회해줘", annotations = @McpTool.McpAnnotations(openWorldHint = true))
|
||||
@ToolHint(register = false, requiresApproval = false, mappingId = "CLCNNB00001")
|
||||
Object execute(MetaCommonCodeRequest req);
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableRequest;
|
||||
|
||||
/**
|
||||
@@ -18,20 +19,8 @@ import io.shinhanlife.dap.mcc.biz.cmm.dto.MetaTableRequest;
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@McpTool(
|
||||
routingType = "MCI",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface MetaTableUseCase {
|
||||
@McpFunction(
|
||||
displayName = "메타 테이블 조회 툴",
|
||||
name = "oth.cmm.meta.table",
|
||||
description = "메타 테이블 정보 목록을 조회해줘",
|
||||
prompt = "메타 테이블 정보 목록을 조회해줘",
|
||||
mappingId = "CLCNNB00001",
|
||||
register = false,
|
||||
requiresApproval = false,
|
||||
openWorldHint = true
|
||||
)
|
||||
@McpTool(name = "oth.cmm.meta.table", title = "메타 테이블 조회 툴", description = "메타 테이블 정보 목록을 조회해줘", annotations = @McpTool.McpAnnotations(openWorldHint = true))
|
||||
@ToolHint(register = false, requiresApproval = false, mappingId = "CLCNNB00001")
|
||||
Object execute(MetaTableRequest req);
|
||||
}
|
||||
|
||||
@@ -1,37 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase
|
||||
* @className TemplateUtilityUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.*;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
@McpTool(
|
||||
routingType = "HTTP",
|
||||
categoryKey = "cmm"
|
||||
)
|
||||
public interface TemplateUtilityUseCase {
|
||||
@McpFunction(
|
||||
displayName = "템플릿 유틸리티",
|
||||
name = "oth.cmm.template.url",
|
||||
description = "요청한 템플릿(엑셀, 워드 등) 파일(양식)을 다운로드 받을 수 있는 시스템 URL을 반환합니다. AI는 이 URL을 사용자에게 마크다운 링크 형태로 제공해야 합니다.",
|
||||
prompt = "요청하신 템플릿 양식 파일 다운로드 URL은 다음과 같습니다. 클릭하여 다운로드하세요:"
|
||||
)
|
||||
@McpTool(name = "oth.cmm.template.url", title = "템플릿 유틸리티 툴", description = "요청한 템플릿(엑셀, 워드 등) 파일(양식)을 다운로드 받을 수 있는 시스템 URL을 반환합니다. AI는 이 URL을 사용자에게 마크다운 링크 형태로 제공해야 합니다.")
|
||||
@ToolHint
|
||||
Map<String, Object> getTemplateFileUrl(TemplateDownloadRequest req);
|
||||
}
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl
|
||||
* @className ClaimSearchSchemaSampleUseCaseImpl
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.ClaimSearchRequest;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.dto.ClaimSearchResponse;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.usecase.ClaimSearchSchemaSampleUseCase;
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.biz.oth.converter;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.oth.converter
|
||||
* @className Onnba3011Converter
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.biz.oth.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.oth.dto
|
||||
* @className Onnba3011Request
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
|
||||
import lombok.Data;
|
||||
|
||||
@@ -1,26 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.oth.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.oth.usecase
|
||||
* @className Onnba3011UseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.oth.dto.*;
|
||||
|
||||
@McpTool(routingType = "MCI", categoryKey = "oth")
|
||||
public interface Onnba3011UseCase {
|
||||
@McpTool(name = "oth.sol.request.detail", title = "보종By가입설계한도계산조회 툴")
|
||||
@ToolHint(register = false)
|
||||
Object callOnnba3011(Onnba3011Request req);
|
||||
}
|
||||
|
||||
@@ -35,9 +35,7 @@ public class Onnba3011UseCaseImpl implements Onnba3011UseCase {
|
||||
private final Onnba3011Converter onnba3011Converter;
|
||||
/**
|
||||
* AI Agent가 호출하게 될 메서드입니다.
|
||||
* @McpFunction 어노테이션 하나로 AI 도구로 자동 노출 및 라우팅됩니다.
|
||||
*/
|
||||
|
||||
@Override
|
||||
public Object callOnnba3011(Onnba3011Request req) {
|
||||
log.info("[MCI Tool] 보종By가입설계한도계산조회 요청 수신.");
|
||||
|
||||
@@ -1,19 +1,19 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.dto
|
||||
* @className DailyQuoteRequest
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
public record DailyQuoteRequest(String category) {}
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.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;
|
||||
}
|
||||
|
||||
@@ -1,19 +1,3 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.dto
|
||||
* @className DailyQuoteResponse
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
public record DailyQuoteResponse(String quote, String author) {}
|
||||
|
||||
@@ -1,19 +1,18 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.dto
|
||||
* @className ExchangeRateRequest
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
public record ExchangeRateRequest(String currencyCode) {}
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.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;
|
||||
}
|
||||
@@ -1,19 +1,3 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.dto
|
||||
* @className ExchangeRateResponse
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
public record ExchangeRateResponse(String baseCurrency, String targetCurrency, double rate) {}
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -21,6 +25,8 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class TeamMemberRequest {
|
||||
@McpParameter(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false)
|
||||
@McpToolParam(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false)
|
||||
@Schema(example = "TOOL")
|
||||
private String teamName;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.dto;
|
||||
|
||||
|
||||
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
|
||||
|
||||
@@ -18,8 +21,7 @@ import com.fasterxml.jackson.annotation.JsonPropertyDescription;
|
||||
* </pre>
|
||||
*/
|
||||
public record WeatherRequest(
|
||||
@JsonProperty(required = true, value = "city")
|
||||
@JsonPropertyDescription("날씨를 조회할 도시 이름 (예: 서울, 부산, 제주)")
|
||||
@McpToolParam(description = "도시를 입력하세여(예: 서울)", required = true)
|
||||
String city
|
||||
) {
|
||||
}
|
||||
}
|
||||
@@ -1,35 +1,13 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.usecase
|
||||
* @className DailyQuoteToolUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteRequest;
|
||||
import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteResponse;
|
||||
|
||||
@McpTool(
|
||||
routingType = "DIRECT",
|
||||
categoryKey = "smp"
|
||||
)
|
||||
public interface DailyQuoteToolUseCase {
|
||||
@McpFunction(register = false, displayName = "랜덤 명언 툴", name = "oth.smp.quote.daily",
|
||||
description = "무작위로 영감을 주는 명언을 하나 가져옵니다.",
|
||||
prompt = "오늘의 명언 하나 알려줘, 동기부여 명언 등",
|
||||
mappingId = "QUOTE_001"
|
||||
)
|
||||
@McpTool(name = "oth.smp.quote.daily", title = "오늘의 명언 툴", description = "무작위로 영감을 주는 명언을 하나 가져옵니다.")
|
||||
@ToolHint(register = false, mappingId = "QUOTE_001")
|
||||
DailyQuoteResponse execute(DailyQuoteRequest req);
|
||||
}
|
||||
|
||||
@@ -1,37 +1,15 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.usecase
|
||||
* @className ExchangeRateToolUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
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;
|
||||
|
||||
@McpTool(
|
||||
routingType = "DIRECT",
|
||||
categoryKey = "smp"
|
||||
)
|
||||
public interface ExchangeRateToolUseCase {
|
||||
@McpFunction(register = false, displayName = "실시간 환율 조회 툴", name = "oth.smp.exchange-rate.inquiry",
|
||||
description = "원하는 통화의 실시간 환율을 조회합니다. (예: USD, EUR, JPY)",
|
||||
prompt = "현재 달러 환율 알려줘, 엔화 환율은?",
|
||||
mappingId = "EXCHANGE_001"
|
||||
)
|
||||
@McpTool(name = "oth.smp.exchange-rate.inquiry", title = "실시간 환율 조회 툴", description = "원하는 통화의 실시간 환율을 조회합니다. (예: USD, EUR, JPY)")
|
||||
@ToolHint(register = false, mappingId = "EXCHANGE_001")
|
||||
ExchangeRateResponse execute(ExchangeRateRequest req);
|
||||
}
|
||||
|
||||
@@ -1,39 +1,12 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.usecase
|
||||
* @className TeamMemberUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberRequest;
|
||||
|
||||
@McpTool(
|
||||
routingType = "DIRECT",
|
||||
categoryKey = "smp"
|
||||
)
|
||||
public interface TeamMemberUseCase {
|
||||
@McpFunction(
|
||||
displayName = "신한라이프 MCP, TOOL 파트 구성원 조회",
|
||||
name = "oth.smp.team.list",
|
||||
description = "신한라이프 MCP, TOOL 파트 구성원을 조회합니다.",
|
||||
prompt = "신한라이프 MCP, TOOL 파트 구성원을 조회해 줘. (주의: 응답 시 ** 등 마크다운 기호를 절대 사용하지 말고 평문으로만 출력해 줘)",
|
||||
mappingId = "DIRECT0001",
|
||||
register = false,
|
||||
requiresApproval = false,
|
||||
openWorldHint = true
|
||||
)
|
||||
@McpTool(name = "oth.smp.team.list", title = "신한라이프 MCP, TOOL 파트 구성원 조회", description = "신한라이프 MCP, TOOL 파트 구성원을 조회합니다.", annotations = @McpTool.McpAnnotations(openWorldHint = true))
|
||||
@ToolHint(register = false, requiresApproval = false, mappingId = "DIRECT0001")
|
||||
Object execute(TeamMemberRequest req);
|
||||
}
|
||||
|
||||
@@ -1,34 +1,12 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.smp.usecase
|
||||
* @className WeatherToolUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.smp.dto.*;
|
||||
|
||||
@McpTool(
|
||||
routingType = "DIRECT",
|
||||
categoryKey = "smp"
|
||||
)
|
||||
public interface WeatherToolUseCase {
|
||||
@McpFunction(register = false, displayName = "날씨 조회 툴", name = "oth.smp.weather.inquiry",
|
||||
description = "특정 도시의 현재 날씨, 온도, 풍속 정보를 조회합니다.",
|
||||
prompt = "서울 날씨 알려줘, 부산 기온 알려줘 등 실시간 기상 조회",
|
||||
mappingId = "WEATHER_001"
|
||||
)
|
||||
@McpTool(name = "oth.smp.weather.inquiry", title = "날씨 조회 툴", description = "특정 도시의 현재 날씨, 온도, 풍속 정보를 조회합니다.")
|
||||
@ToolHint(register = false, mappingId = "WEATHER_001")
|
||||
WeatherResponse execute(WeatherRequest req);
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class ExchangeRateToolUseCaseImpl extends AbstractMcpToolUseCase implemen
|
||||
|
||||
@Override
|
||||
public ExchangeRateResponse execute(ExchangeRateRequest req) {
|
||||
String targetCurrency = req.currencyCode() != null ? req.currencyCode().toUpperCase().trim() : "USD";
|
||||
String targetCurrency = req.getCurrencyCode() != null ? req.getCurrencyCode().toUpperCase().trim() : "USD";
|
||||
|
||||
// 간단한 모의 데이터로 반환 (실제 구현 시 외부 연동)
|
||||
double dummyRate = 1350.50;
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.sol.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -22,6 +26,8 @@ import lombok.Data;
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SolReqDetailRequest {
|
||||
|
||||
@McpParameter(description = "상세 조회할 SOL 의뢰서 ID", required = true)
|
||||
@McpToolParam(description = "상세 조회할 SOL 의뢰서 ID", required = true)
|
||||
@Schema(example = "SR20260805")
|
||||
private String srId;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.sol.dto;
|
||||
|
||||
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import org.springframework.ai.mcp.annotation.McpToolParam;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -21,12 +25,15 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SolReqListRequest {
|
||||
@McpParameter(description = "진행상태 (예: 진행중, 완료 등)", required = false)
|
||||
@McpToolParam(description = "진행상태 (예: 진행중, 완료 등)", required = false)
|
||||
@Schema(example = "RECEIVED")
|
||||
private String status;
|
||||
|
||||
@McpParameter(description = "조회기간 (예: 1개월, 3개월 등)", required = false)
|
||||
|
||||
@McpToolParam(description = "조회기간 (예: 1개월, 3개월 등)", required = false)
|
||||
private String period;
|
||||
|
||||
@McpParameter(description = "조회대상 (예: 나의 업무, 전체 등)", required = false)
|
||||
@McpToolParam(description = "조회대상 (예: 나의 업무, 전체 등)", required = false)
|
||||
@Schema(example = "USER")
|
||||
private String target;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
package io.shinhanlife.dap.mcc.biz.sol.usecase;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
|
||||
import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest;
|
||||
|
||||
/**
|
||||
@@ -18,22 +19,9 @@ import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest;
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
@McpTool(
|
||||
routingType = "MCI",
|
||||
categoryKey = "sol"
|
||||
)
|
||||
public interface SolReqDetailUseCase {
|
||||
|
||||
@McpFunction(
|
||||
displayName = "SolReqDetail 툴",
|
||||
name = "oth.sol.request.detail",
|
||||
description = "SOL 의뢰서 상세 조회",
|
||||
prompt = "SOL 의뢰서 상세 조회해줘",
|
||||
mappingId = "SOLG00000002",
|
||||
register = false,
|
||||
requiresApproval = false,
|
||||
readOnlyHint = true,
|
||||
openWorldHint = true
|
||||
)
|
||||
@McpTool(name = "oth.sol.request.detail", title = "SolReqDetail 툴", description = "SOL 의뢰서 상세 조회", annotations = @McpTool.McpAnnotations(openWorldHint = true, readOnlyHint = true))
|
||||
@ToolHint(register = false, requiresApproval = false, mappingId = "SOLG00000002")
|
||||
Object execute(SolReqDetailRequest req);
|
||||
}
|
||||
|
||||
@@ -1,39 +1,12 @@
|
||||
package io.shinhanlife.dap.mcc.biz.sol.usecase;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.sol.usecase
|
||||
* @className SolReqListUseCase
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
import io.shinhanlife.dap.lib.annotation.ToolHint;
|
||||
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import io.shinhanlife.dap.lib.annotation.McpTool;
|
||||
import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqListRequest;
|
||||
|
||||
@McpTool(
|
||||
routingType = "MCI",
|
||||
categoryKey = "sol"
|
||||
)
|
||||
public interface SolReqListUseCase {
|
||||
@McpFunction(
|
||||
displayName = "SolReqList 툴",
|
||||
name = "oth.sol.request.list",
|
||||
description = "SOL 의뢰서 목록 조회해줘",
|
||||
prompt = "SOL 의뢰서 목록 조회해줘",
|
||||
mappingId = "SOLG00000001",
|
||||
register = false,
|
||||
requiresApproval = false,
|
||||
openWorldHint = true
|
||||
)
|
||||
@McpTool(name = "oth.sol.request.list", title = "SolReqList 툴", description = "SOL 의뢰서 목록 조회해줘", annotations = @McpTool.McpAnnotations(openWorldHint = true))
|
||||
@ToolHint(register = false, requiresApproval = false, mappingId = "SOLG00000001")
|
||||
Object execute(SolReqListRequest req);
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public class SolReqDetailUseCaseImpl implements SolReqDetailUseCase {
|
||||
response.setSrName("SOL 연동 모듈 추가 개발");
|
||||
response.setProcess("진행중");
|
||||
response.setDevStage("분석/설계");
|
||||
response.setAppName("MCP WAS");
|
||||
response.setAppName("MCP Gateway");
|
||||
response.setRequester("고석민");
|
||||
response.setRequestDate("2026-07-15");
|
||||
response.setDueDate("2026-09-30");
|
||||
|
||||
@@ -65,7 +65,7 @@ public class SolReqListUseCaseImpl implements SolReqListUseCase {
|
||||
item2.setSrName("툴 연동 모듈 추가 개발");
|
||||
item2.setProcess("진행중");
|
||||
item2.setDevStage("분석/설계");
|
||||
item2.setAppName("MCP WAS");
|
||||
item2.setAppName("MCP Gateway");
|
||||
item2.setRequester("고석민");
|
||||
list.add(item2);
|
||||
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io
|
||||
* @className CLCNNB00001_I
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io
|
||||
* @className CLCNNB00001_O
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
|
||||
@@ -19,10 +19,13 @@ import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
|
||||
import org.springframework.cache.annotation.EnableCaching;
|
||||
import org.springframework.context.annotation.Import;
|
||||
import io.shinhanlife.dap.lib.mcp.ToolMcpServerConfiguration;
|
||||
|
||||
@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"})
|
||||
@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"})
|
||||
@EnableCaching
|
||||
@Import(ToolMcpServerConfiguration.class)
|
||||
public class DapWasOthApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DapWasOthApplication.class, args);
|
||||
|
||||
@@ -4,7 +4,7 @@ spring:
|
||||
url: jdbc:p6spy:h2:mem:testdb;DB_CLOSE_DELAY=-1;
|
||||
driverClassName: com.p6spy.engine.spy.P6SpyDriver
|
||||
username: sa
|
||||
password: ${REDIS_PASSWORD:}
|
||||
password: password
|
||||
h2:
|
||||
console:
|
||||
enabled: true
|
||||
@@ -33,6 +33,8 @@ mcp:
|
||||
mcp-client-2: ALL
|
||||
|
||||
axhub:
|
||||
gateway:
|
||||
url: http://localhost:8081
|
||||
tool:
|
||||
url: ${AXHUB_TOOL_URL:http://localhost:${server.port}}
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ logging:
|
||||
mcp:
|
||||
namespace: ""
|
||||
manifest:
|
||||
bundle-id: tool-oth
|
||||
bundle-id: was-oth
|
||||
# Set the AA-assigned prefix before MCP pull activation (for example: oth.).
|
||||
name-prefix: ""
|
||||
security:
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
{
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"claimNo": {
|
||||
"type": "string",
|
||||
"description": "청구번호. CLM 이후 숫자 13자리 형식입니다.",
|
||||
"pattern": "^CLM[0-9]{13}$",
|
||||
"example": "CLM2026070100123"
|
||||
},
|
||||
"contractNo": {
|
||||
"type": "string",
|
||||
"description": "계약번호. 숫자 11자리 형식입니다.",
|
||||
"pattern": "^[0-9]{11}$",
|
||||
"example": "10023456789"
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "청구 상태 필터",
|
||||
"enum": ["RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED", "APPROVED", "PAID", "REJECTED", "WITHDRAWN"],
|
||||
"example": "RECEIVED"
|
||||
},
|
||||
"claimType": {
|
||||
"type": "string",
|
||||
"description": "청구 유형 필터",
|
||||
"enum": ["MEDICAL", "SURGERY", "HOSPITALIZATION", "DIAGNOSIS", "DEATH", "DISABILITY"],
|
||||
"example": "MEDICAL"
|
||||
},
|
||||
"fromDate": {
|
||||
"type": "string",
|
||||
"description": "접수일 조회 시작일 (YYYY-MM-DD)",
|
||||
"format": "date",
|
||||
"example": "2026-01-01"
|
||||
},
|
||||
"toDate": {
|
||||
"type": "string",
|
||||
"description": "접수일 조회 종료일 (YYYY-MM-DD)",
|
||||
"format": "date",
|
||||
"example": "2026-07-31"
|
||||
},
|
||||
"size": {
|
||||
"type": "string",
|
||||
"description": "반환할 최대 건수 (기본값: 20, 최대: 50)",
|
||||
"pattern": "^[1-9][0-9]?$|^50$",
|
||||
"default": "20",
|
||||
"example": "20"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
{
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"resultCode": {
|
||||
"type": "string",
|
||||
"description": "실행 결과 코드",
|
||||
"enum": ["SUCCESS", "FAILURE"]
|
||||
},
|
||||
"resultLabel": {
|
||||
"type": "string",
|
||||
"description": "resultCode의 사용자 표시 라벨",
|
||||
"maxLength": 100
|
||||
},
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "현재 청구 처리 상태 코드",
|
||||
"enum": ["RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED", "APPROVED", "PAID", "REJECTED", "WITHDRAWN"]
|
||||
},
|
||||
"statusLabel": {
|
||||
"type": "string",
|
||||
"description": "status의 사용자 표시 라벨",
|
||||
"maxLength": 100
|
||||
},
|
||||
"approvedAmount": {
|
||||
"anyOf": [
|
||||
{"type": "integer", "minimum": 0},
|
||||
{"type": "null"}
|
||||
],
|
||||
"description": "승인 금액. 심사 전에는 null이며 0으로 해석하지 않습니다."
|
||||
},
|
||||
"rejectionReason": {
|
||||
"anyOf": [
|
||||
{"type": "string", "maxLength": 200},
|
||||
{"type": "null"}
|
||||
],
|
||||
"description": "status가 REJECTED일 때만 존재하며, 그 외에는 null입니다."
|
||||
},
|
||||
"items": {
|
||||
"type": "array",
|
||||
"description": "수령일 내림차순으로 정렬된 청구 요약 목록",
|
||||
"items": {
|
||||
"type": "object",
|
||||
"additionalProperties": false,
|
||||
"properties": {
|
||||
"status": {
|
||||
"type": "string",
|
||||
"description": "청구 처리 상태 코드"
|
||||
},
|
||||
"statusLabel": {
|
||||
"type": "string",
|
||||
"description": "status의 사용자 표시 라벨"
|
||||
},
|
||||
"receivedDate": {
|
||||
"type": "string",
|
||||
"description": "접수일 (YYYY-MM-DD 형식)",
|
||||
"format": "date"
|
||||
},
|
||||
"approvedAmount": {
|
||||
"anyOf": [
|
||||
{"type": "integer", "minimum": 0},
|
||||
{"type": "null"}
|
||||
],
|
||||
"description": "승인 금액. 심사 전에는 null"
|
||||
}
|
||||
},
|
||||
"required": ["receivedDate"]
|
||||
}
|
||||
},
|
||||
"hasMore": {
|
||||
"type": "boolean",
|
||||
"description": "이 응답 이후 추가 결과가 있는지 여부"
|
||||
},
|
||||
"totalCount": {
|
||||
"anyOf": [
|
||||
{"type": "integer", "minimum": 0},
|
||||
{"type": "null"}
|
||||
],
|
||||
"description": "매칭된 청구 건수 합계"
|
||||
}
|
||||
},
|
||||
"required": ["resultCode", "resultLabel", "status", "statusLabel", "items", "hasMore"]
|
||||
}
|
||||
@@ -1,26 +1,9 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.cmm.dto
|
||||
* @className ClaimSearchRequestSchemaTest
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import io.shinhanlife.dap.lib.annotation.McpFunction;
|
||||
import io.shinhanlife.dap.lib.util.JsonSchemaGenerator;
|
||||
import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.usecase.impl.ClaimSearchSchemaSampleUseCaseImpl;
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.biz.oth.usecase.impl;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.oth.usecase.impl
|
||||
* @className Onnba3011UseCaseImplTest
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.mockito.Mockito.verify;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.biz.sol.usecase.impl;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.biz.sol.usecase.impl
|
||||
* @className SolReqListUseCaseImplTest
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
@@ -1,21 +1,5 @@
|
||||
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.converter
|
||||
* @className Onnba3011MciRequestConverterTest
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user