Fix scaffold errors and apply ToolHint annotations
Some checks failed
Deploy to OCIWP / deploy (push) Failing after 33s
Some checks failed
Deploy to OCIWP / deploy (push) Failing after 33s
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", examples = {"1234567890"})
|
||||
@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", examples = {"BILL20260805"})
|
||||
@McpToolParam(description = "처리할 청구 접수 번호", required = true)
|
||||
@Schema(pattern = "\\S", example = "BILL20260805")
|
||||
private String billingId;
|
||||
|
||||
@McpParameter(description = "심사 승인 여부 (예: APPROVE, REJECT)")
|
||||
@McpValidation(required = true, allowedValues = {"APPROVE", "REJECT"}, examples = {"APPROVED"})
|
||||
|
||||
@McpToolParam(description = "승인 처리 구분 (예: APPROVE, REJECT)")
|
||||
@Schema(required = true, allowableValues = {"APPROVE", "REJECT"}, example = "APPROVE")
|
||||
private String approvalStatus;
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -30,7 +33,8 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class BillingStatusRequest {
|
||||
|
||||
@McpParameter(description = "조회할 청구 접수 번호", required = true)
|
||||
@McpValidation(examples = {"BILL20260805"})
|
||||
@McpToolParam(description = "조회할 청구 접수 번호", required = true)
|
||||
@Schema(example = "BILL20260805")
|
||||
private String billingId;
|
||||
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -30,7 +33,8 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class BondCheckRequest {
|
||||
|
||||
@McpParameter(description = "확인하고자 하는 디지털 증권 발행 금액", required = true)
|
||||
@McpValidation(examples = {"1000000"})
|
||||
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, examples = {"1000000"})
|
||||
private Long amount;
|
||||
@McpToolParam(description = "발행할 증권 금액 (숫자 문자열)", required = true)
|
||||
@Schema(pattern = "^[0-9]+$", example = "1000000")
|
||||
private String amount;
|
||||
|
||||
@McpParameter(description = "발행 대상 계좌 번호", required = true)
|
||||
@McpValidation(pattern = "\\S", examples = {"1234567890"})
|
||||
|
||||
@McpToolParam(description = "발행 대상 계좌 번호", required = true)
|
||||
@Schema(pattern = "\\S", example = "1234567890")
|
||||
private String targetAccount;
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
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;
|
||||
@@ -18,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(examples = {"RECEIVED"}, allowedValues = {
|
||||
@McpToolParam(description = "청구 상태 필터")
|
||||
@Schema(example = "RECEIVED", allowableValues = {
|
||||
"RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED",
|
||||
"APPROVED", "PAID", "REJECTED", "WITHDRAWN"
|
||||
})
|
||||
private String status;
|
||||
|
||||
@McpParameter(description = "청구 유형 필터")
|
||||
@McpValidation(examples = {"MEDICAL"}, 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", examples = {"20"})
|
||||
private Integer size;
|
||||
@McpToolParam(description = "반환할 최대 건수 (기본값: 20, 최대: 50)")
|
||||
@Schema(pattern = "^[1-9][0-9]?$|^50$", defaultValue = "20", example = "20")
|
||||
private String size;
|
||||
}
|
||||
@@ -1,8 +1,10 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
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;
|
||||
@@ -20,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
|
||||
@@ -69,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,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -30,11 +33,12 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class ContractDetailRequest {
|
||||
|
||||
@McpParameter(description = "고객명", required = true)
|
||||
@McpValidation(examples = {"홍길동"})
|
||||
@McpToolParam(description = "고객명", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "조회할 계약 번호", required = true)
|
||||
@McpValidation(examples = {"1234567890"})
|
||||
|
||||
@McpToolParam(description = "조회할 계약 번호", required = true)
|
||||
@Schema(example = "1234567890")
|
||||
private String contractId;
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -30,10 +33,11 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class ContractStatusRequest {
|
||||
|
||||
@McpParameter(description = "고객명", required = true)
|
||||
@McpValidation(examples = {"홍길동"})
|
||||
@McpToolParam(description = "고객명", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "조회할 계약 번호")
|
||||
|
||||
@McpToolParam(description = "조회할 계약 번호")
|
||||
private String contractId;
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -30,10 +33,11 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class CustomerDetailRequest {
|
||||
|
||||
@McpParameter(description = "고객명", required = true)
|
||||
@McpValidation(examples = {"홍길동"})
|
||||
@McpToolParam(description = "고객명", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "고객 식별 번호 (CID)")
|
||||
|
||||
@McpToolParam(description = "고객 식별 번호 (CID)")
|
||||
private String customerId;
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -30,10 +33,11 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class CustomerGradeRequest {
|
||||
|
||||
@McpParameter(description = "고객 이름 (예: 김신한)", required = true)
|
||||
@McpValidation(examples = {"홍길동"})
|
||||
@McpToolParam(description = "고객 이름 (예: 김신한)", required = true)
|
||||
@Schema(example = "홍길동")
|
||||
private String customerName;
|
||||
|
||||
@McpParameter(description = "고객 식별 번호 (CID)")
|
||||
|
||||
@McpToolParam(description = "고객 식별 번호 (CID)")
|
||||
private String customerId;
|
||||
}
|
||||
@@ -1,11 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
@@ -30,7 +33,8 @@ import lombok.Setter;
|
||||
@AllArgsConstructor
|
||||
public class LeaveCountRequest {
|
||||
|
||||
@McpParameter(description = "연차 내역을 조회할 사원 번호", required = true)
|
||||
@McpValidation(examples = {"EMP12345"})
|
||||
@McpToolParam(description = "연차 내역을 조회할 사원 번호", required = true)
|
||||
@Schema(example = "EMP12345")
|
||||
private String employeeId;
|
||||
|
||||
}
|
||||
@@ -1,8 +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 io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -22,14 +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)
|
||||
@McpValidation(examples = {"GRP_001"})
|
||||
@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)
|
||||
@McpValidation(examples = {"Y"})
|
||||
@McpToolParam(description = "사용여부 (예: Y, N)", required = false)
|
||||
@Schema(example = "Y")
|
||||
private String useYn;
|
||||
}
|
||||
@@ -1,8 +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 io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -22,15 +25,16 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class MetaTableRequest {
|
||||
@McpParameter(description = "테이블 물리명 키워드 (예: TB_CUST_BAS, TB_CONT)", required = false)
|
||||
@McpValidation(examples = {"TB_USER"})
|
||||
@McpToolParam(description = "테이블 물리명 키워드 (예: TB_CUST_BAS, TB_CONT)", required = false)
|
||||
@Schema(example = "TB_USER")
|
||||
private String tableName;
|
||||
|
||||
@McpParameter(description = "테이블 논리명(한글) 키워드 (예: 고객기본, 계약)", required = false)
|
||||
@McpValidation(examples = {"고객기본"})
|
||||
|
||||
@McpToolParam(description = "테이블 논리명(한글) 키워드 (예: 고객기본, 계약)", required = false)
|
||||
@Schema(example = "고객기본")
|
||||
private String tableLogicalName;
|
||||
|
||||
@McpParameter(description = "스키마/소유자명 (예: DAPADM, SHLOWN)", required = false)
|
||||
@McpValidation(examples = {"DAPADM"})
|
||||
@McpToolParam(description = "스키마/소유자명 (예: DAPADM, SHLOWN)", required = false)
|
||||
@Schema(example = "DAPADM")
|
||||
private String owner;
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import com.fasterxml.jackson.annotation.JsonInclude;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -21,6 +22,6 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SampleStringRequest {
|
||||
@McpValidation(examples = {"test query"})
|
||||
@Schema(example = "test query")
|
||||
private String query;
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.dto;
|
||||
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.AccessLevel;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
@@ -32,6 +33,6 @@ public class TemplateDownloadRequest {
|
||||
/**
|
||||
* 다운로드할 템플릿의 종류 ID (예: CUSTOMER_EXCEL, PRODUCT_PDF 등)
|
||||
*/
|
||||
@McpValidation(examples = {"TPL_001"})
|
||||
@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", examples = {"EMP12345"})
|
||||
@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}$", examples = {"2026-08-05"})
|
||||
|
||||
@McpToolParam(description = "휴가 일자 (YYYY-MM-DD 형식)", required = true)
|
||||
@Schema(pattern = "^\\d{4}-\\d{2}-\\d{2}$", example = "2026-08-05")
|
||||
private String date;
|
||||
}
|
||||
@@ -1,15 +1,12 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
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, categoryKey = "cmm", mappingId = "ACC_001")
|
||||
Object execute(BalanceRequest req);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,13 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
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, categoryKey = "cmm", mappingId = "BILL_002")
|
||||
Object processBilling(BillingProcessRequest data);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
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, categoryKey = "cmm", mappingId = "BOND_002")
|
||||
Object issue(BondIssueRequest data);
|
||||
}
|
||||
|
||||
@@ -1,26 +1,16 @@
|
||||
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.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, categoryKey = "cmm",
|
||||
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,19 +1,18 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
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, categoryKey = "cmm", 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, categoryKey = "cmm", mappingId = "SECRET_001")
|
||||
Object secretTool(LeaveCountRequest data);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
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, categoryKey = "cmm", mappingId = "CNTR_002")
|
||||
Object getDetail(ContractDetailRequest data);
|
||||
}
|
||||
|
||||
@@ -1,16 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
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, categoryKey = "cmm", 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, categoryKey = "cmm", 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, categoryKey = "cmm", mappingId = "CLCNNB00001")
|
||||
Object execute(MetaTableRequest req);
|
||||
}
|
||||
|
||||
@@ -1,21 +1,14 @@
|
||||
package io.shinhanlife.dap.mcc.biz.cmm.usecase;
|
||||
|
||||
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(categoryKey = "cmm")
|
||||
Map<String, Object> getTemplateFileUrl(TemplateDownloadRequest req);
|
||||
}
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
package io.shinhanlife.dap.mcc.biz.oth.usecase;
|
||||
|
||||
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 {
|
||||
Object callOnnba3011(Onnba3011Request req);
|
||||
@McpTool(name = "oth.onnba3011.call", description = "Onnba3011 호출 툴")
|
||||
@ToolHint(categoryKey = "oth")
|
||||
Object execute(Onnba3011Request req);
|
||||
}
|
||||
|
||||
@@ -35,11 +35,9 @@ public class Onnba3011UseCaseImpl implements Onnba3011UseCase {
|
||||
private final Onnba3011Converter onnba3011Converter;
|
||||
/**
|
||||
* AI Agent가 호출하게 될 메서드입니다.
|
||||
* @McpFunction 어노테이션 하나로 AI 도구로 자동 노출 및 라우팅됩니다.
|
||||
*/
|
||||
|
||||
@Override
|
||||
public Object callOnnba3011(Onnba3011Request req) {
|
||||
public Object execute(Onnba3011Request req) {
|
||||
log.info("[MCI Tool] 보종By가입설계한도계산조회 요청 수신.");
|
||||
|
||||
try {
|
||||
|
||||
@@ -1,16 +1,19 @@
|
||||
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 io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class DailyQuoteRequest {
|
||||
|
||||
@McpParameter(description = "카테고리 (예: 속담 등)", required = false)
|
||||
@McpValidation(examples = {"속담"})
|
||||
@McpToolParam(description = "카테고리 (예: 속담 등)", required = false)
|
||||
@Schema(example = "속담")
|
||||
private String category;
|
||||
}
|
||||
|
||||
@@ -1,15 +1,18 @@
|
||||
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 io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class ExchangeRateRequest {
|
||||
@McpParameter(description = "환율 코드 (예: USD 등)", required = false)
|
||||
@McpValidation(examples = {"USD"})
|
||||
@McpToolParam(description = "환율 코드 (예: USD 등)", required = false)
|
||||
@Schema(example = "USD")
|
||||
private String currencyCode;
|
||||
}
|
||||
@@ -1,8 +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 io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -22,7 +25,8 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class TeamMemberRequest {
|
||||
@McpParameter(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false)
|
||||
@McpValidation(examples = {"TOOL"})
|
||||
@McpToolParam(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false)
|
||||
@Schema(example = "TOOL")
|
||||
private String teamName;
|
||||
|
||||
}
|
||||
@@ -1,9 +1,10 @@
|
||||
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;
|
||||
import io.shinhanlife.dap.lib.annotation.McpParameter;
|
||||
import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dap.mcc.dto
|
||||
@@ -20,8 +21,7 @@ import io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
* </pre>
|
||||
*/
|
||||
public record WeatherRequest(
|
||||
@McpParameter(description = "도시를 입력하세여(예: 서울)", required = true)
|
||||
@McpValidation(examples = {"서울"})
|
||||
@McpToolParam(description = "도시를 입력하세여(예: 서울)", required = true)
|
||||
String city
|
||||
) {
|
||||
}
|
||||
@@ -1,19 +1,13 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.usecase;
|
||||
|
||||
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, categoryKey = "smp", mappingId = "QUOTE_001")
|
||||
DailyQuoteResponse execute(DailyQuoteRequest req);
|
||||
}
|
||||
|
||||
@@ -1,21 +1,15 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.usecase;
|
||||
|
||||
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, categoryKey = "smp", mappingId = "EXCHANGE_001")
|
||||
ExchangeRateResponse execute(ExchangeRateRequest req);
|
||||
}
|
||||
|
||||
@@ -1,23 +1,12 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.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.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, categoryKey = "smp", mappingId = "DIRECT0001")
|
||||
Object execute(TeamMemberRequest req);
|
||||
}
|
||||
|
||||
@@ -1,18 +1,12 @@
|
||||
package io.shinhanlife.dap.mcc.biz.smp.usecase;
|
||||
|
||||
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, categoryKey = "smp", mappingId = "WEATHER_001")
|
||||
WeatherResponse execute(WeatherRequest req);
|
||||
}
|
||||
|
||||
@@ -1,8 +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 io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -23,7 +26,8 @@ import lombok.Data;
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SolReqDetailRequest {
|
||||
|
||||
@McpParameter(description = "상세 조회할 SOL 의뢰서 ID", required = true)
|
||||
@McpValidation(examples = {"SR20260805"})
|
||||
@McpToolParam(description = "상세 조회할 SOL 의뢰서 ID", required = true)
|
||||
@Schema(example = "SR20260805")
|
||||
private String srId;
|
||||
|
||||
}
|
||||
@@ -1,8 +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 io.shinhanlife.dap.lib.annotation.McpValidation;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
@@ -22,14 +25,15 @@ import lombok.Data;
|
||||
@Data
|
||||
@JsonInclude(JsonInclude.Include.NON_NULL)
|
||||
public class SolReqListRequest {
|
||||
@McpParameter(description = "진행상태 (예: 진행중, 완료 등)", required = false)
|
||||
@McpValidation(examples = {"RECEIVED"})
|
||||
@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)
|
||||
@McpValidation(examples = {"USER"})
|
||||
@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, categoryKey = "sol", mappingId = "SOLG00000002")
|
||||
Object execute(SolReqDetailRequest req);
|
||||
}
|
||||
|
||||
@@ -1,23 +1,12 @@
|
||||
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.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, categoryKey = "sol", mappingId = "SOLG00000001")
|
||||
Object execute(SolReqListRequest req);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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"]
|
||||
}
|
||||
@@ -4,15 +4,16 @@ 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.lib.annotation.ToolHint;
|
||||
import io.shinhanlife.dap.mcc.biz.cmm.usecase.impl.ClaimSearchSchemaSampleUseCaseImpl;
|
||||
import io.shinhanlife.dap.lib.validation.ToolArgumentSchemaValidator;import io.shinhanlife.dap.mcc.biz.cmm.usecase.ClaimSearchSchemaSampleUseCase;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.ai.mcp.annotation.McpTool;
|
||||
|
||||
class ClaimSearchRequestSchemaTest {
|
||||
|
||||
@@ -34,10 +35,11 @@ class ClaimSearchRequestSchemaTest {
|
||||
void resolvesSchemaFromToolModuleResource() throws Exception {
|
||||
Method method = ClaimSearchSchemaSampleUseCase.class
|
||||
.getDeclaredMethod("search", ClaimSearchRequest.class);
|
||||
McpFunction function = method.getAnnotation(McpFunction.class);
|
||||
McpTool function = method.getAnnotation(McpTool.class);
|
||||
ToolHint hint = method.getAnnotation(ToolHint.class);
|
||||
|
||||
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper())
|
||||
.resolve(function, ClaimSearchRequest.class);
|
||||
.resolve(function, hint, ClaimSearchRequest.class);
|
||||
|
||||
assertEquals("https://json-schema.org/draft/2020-12/schema", schema.get("$schema"));
|
||||
assertTrue(schema.containsKey("anyOf"));
|
||||
@@ -48,8 +50,10 @@ class ClaimSearchRequestSchemaTest {
|
||||
void resolvesOutputSchemaFromToolModuleResource() throws Exception {
|
||||
Method method = ClaimSearchSchemaSampleUseCase.class
|
||||
.getDeclaredMethod("search", ClaimSearchRequest.class);
|
||||
McpFunction function = method.getAnnotation(McpFunction.class);
|
||||
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper()).resolveOutput(function);
|
||||
McpTool function = method.getAnnotation(McpTool.class);
|
||||
ToolHint hint = method.getAnnotation(ToolHint.class);
|
||||
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper())
|
||||
.resolveOutput(function, ClaimSearchResponse.class, hint);
|
||||
assertEquals("https://json-schema.org/draft/2020-12/schema", schema.get("$schema"));
|
||||
assertTrue(properties(schema).containsKey("resultCode"));
|
||||
assertTrue(properties(schema).containsKey("statusLabel"));
|
||||
@@ -62,7 +66,8 @@ class ClaimSearchRequestSchemaTest {
|
||||
Method method = ClaimSearchSchemaSampleUseCase.class
|
||||
.getDeclaredMethod("search", ClaimSearchRequest.class);
|
||||
Map<String, Object> schema = new ToolSchemaResolver(new ObjectMapper())
|
||||
.resolveOutput(method.getAnnotation(McpFunction.class));
|
||||
.resolveOutput(method.getAnnotation(McpTool.class), ClaimSearchResponse.class,
|
||||
method.getAnnotation(ToolHint.class));
|
||||
|
||||
ClaimSearchResponse response = new ClaimSearchSchemaSampleUseCaseImpl().search(new ClaimSearchRequest());
|
||||
ToolArgumentSchemaValidator validator = new ToolArgumentSchemaValidator(new ObjectMapper());
|
||||
|
||||
Reference in New Issue
Block a user