fix: example 입력
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 2m24s

This commit is contained in:
jade
2026-08-05 14:19:37 +09:00
parent 3a86a8e0c7
commit ac60d046eb
24 changed files with 81 additions and 27 deletions

View File

@@ -191,6 +191,7 @@
<svg class="w-3 h-3 text-zinc-500" fill="currentColor" viewBox="0 0 20 20"><path d="M10 18a8 8 0 100-16 8 8 0 000 16zM9 9a1 1 0 012 0v4a1 1 0 11-2 0V9zm1-5a1 1 0 110 2 1 1 0 010-2z"></path></svg> <svg class="w-3 h-3 text-zinc-500" fill="currentColor" viewBox="0 0 20 20"><path d="M10 18a8 8 0 100-16 8 8 0 000 16zM9 9a1 1 0 012 0v4a1 1 0 11-2 0V9zm1-5a1 1 0 110 2 1 1 0 010-2z"></path></svg>
Auto-saved to LocalStorage Auto-saved to LocalStorage
</div> </div>
<button onclick="resetPayload()" class="btn-sm py-2 px-4 text-red-400 hover:text-red-300 border border-red-500/30 hover:border-red-400 mr-2" style="font-size:12px;" title="저장된 페이로드를 삭제하고 스키마 기본값으로 초기화합니다">Reset to Schema</button>
<button onclick="closePayloadModal()" class="btn-sm py-2 px-4">Cancel</button> <button onclick="closePayloadModal()" class="btn-sm py-2 px-4">Cancel</button>
<button onclick="savePayload()" class="btn-execute py-2 px-4" style="font-size:12px;">Save & Apply</button> <button onclick="savePayload()" class="btn-execute py-2 px-4" style="font-size:12px;">Save & Apply</button>
</div> </div>
@@ -771,6 +772,26 @@
document.getElementById('payloadModal').style.display = 'none'; document.getElementById('payloadModal').style.display = 'none';
} }
function resetPayload() {
if (currentEditIndex === -1) return;
const tool = allTools[currentEditIndex];
// 로컬 스토리지에서 삭제
const savedPayloads = JSON.parse(localStorage.getItem('mcp_tester_payloads') || '{}');
delete savedPayloads[tool.name];
localStorage.setItem('mcp_tester_payloads', JSON.stringify(savedPayloads));
// 런타임 상태 초기화
tool._customPayload = null;
// 새 스키마 기반 기본 페이로드 생성
const freshPayload = generateDummyPayload(tool);
// UI 업데이트
document.getElementById('payloadEditor').value = JSON.stringify(freshPayload, null, 2);
renderSmartForm(tool, freshPayload);
}
function savePayload() { function savePayload() {
let finalPayload = {}; let finalPayload = {};
if (currentPayloadMode === 'form') { if (currentPayloadMode === 'form') {

View File

@@ -22,6 +22,6 @@ import lombok.Data;
@Data @Data
public class BalanceRequest { public class BalanceRequest {
@McpParameter(description = "고객의 계좌번호 (- 제외) ", required = true) @McpParameter(description = "고객의 계좌번호 (- 제외) ", required = true)
@McpValidation(pattern = "\\S") @McpValidation(pattern = "\\S", examples = {"1234567890"})
private String accountNumber; private String accountNumber;
} }

View File

@@ -31,10 +31,10 @@ import lombok.Setter;
public class BillingProcessRequest { public class BillingProcessRequest {
@McpParameter(description = "처리할 청구 접수 번호", required = true) @McpParameter(description = "처리할 청구 접수 번호", required = true)
@McpValidation(pattern = "\\S") @McpValidation(pattern = "\\S", examples = {"BILL20260805"})
private String billingId; private String billingId;
@McpParameter(description = "심사 승인 여부 (예: APPROVE, REJECT)") @McpParameter(description = "심사 승인 여부 (예: APPROVE, REJECT)")
@McpValidation(required = true, allowedValues = {"APPROVE", "REJECT"}) @McpValidation(required = true, allowedValues = {"APPROVE", "REJECT"}, examples = {"APPROVED"})
private String approvalStatus; private String approvalStatus;
} }

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -30,5 +31,6 @@ import lombok.Setter;
public class BillingStatusRequest { public class BillingStatusRequest {
@McpParameter(description = "조회할 청구 접수 번호", required = true) @McpParameter(description = "조회할 청구 접수 번호", required = true)
@McpValidation(examples = {"BILL20260805"})
private String billingId; private String billingId;
} }

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -30,5 +31,6 @@ import lombok.Setter;
public class BondCheckRequest { public class BondCheckRequest {
@McpParameter(description = "확인하고자 하는 디지털 증권 발행 금액", required = true) @McpParameter(description = "확인하고자 하는 디지털 증권 발행 금액", required = true)
@McpValidation(examples = {"1000000"})
private Long amount; private Long amount;
} }

View File

@@ -31,10 +31,10 @@ import lombok.Setter;
public class BondIssueRequest { public class BondIssueRequest {
@McpParameter(description = "발행할 디지털 증권 금액", required = true) @McpParameter(description = "발행할 디지털 증권 금액", required = true)
@McpValidation(minimum = 1) @McpValidation(minimum = 1, examples = {"1000000"})
private Long amount; private Long amount;
@McpParameter(description = "발행 대상 계좌 번호", required = true) @McpParameter(description = "발행 대상 계좌 번호", required = true)
@McpValidation(pattern = "\\S") @McpValidation(pattern = "\\S", examples = {"1234567890"})
private String targetAccount; private String targetAccount;
} }

View File

@@ -30,14 +30,14 @@ public class ClaimSearchRequest {
private String contractNo; private String contractNo;
@McpParameter(description = "청구 상태 필터") @McpParameter(description = "청구 상태 필터")
@McpValidation(allowedValues = { @McpValidation(examples = {"RECEIVED"}, allowedValues = {
"RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED", "RECEIVED", "REVIEWING", "ADDITIONAL_DOC_REQUIRED",
"APPROVED", "PAID", "REJECTED", "WITHDRAWN" "APPROVED", "PAID", "REJECTED", "WITHDRAWN"
}) })
private String status; private String status;
@McpParameter(description = "청구 유형 필터") @McpParameter(description = "청구 유형 필터")
@McpValidation(allowedValues = { @McpValidation(examples = {"MEDICAL"}, allowedValues = {
"MEDICAL", "SURGERY", "HOSPITALIZATION", "MEDICAL", "SURGERY", "HOSPITALIZATION",
"DIAGNOSIS", "DEATH", "DISABILITY" "DIAGNOSIS", "DEATH", "DISABILITY"
}) })
@@ -52,6 +52,6 @@ public class ClaimSearchRequest {
private String toDate; private String toDate;
@McpParameter(description = "반환할 최대 건수") @McpParameter(description = "반환할 최대 건수")
@McpValidation(minimum = 1, maximum = 50, defaultValue = "20") @McpValidation(minimum = 1, maximum = 50, defaultValue = "20", examples = {"20"})
private Integer size; private Integer size;
} }

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -30,8 +31,10 @@ import lombok.Setter;
public class ContractDetailRequest { public class ContractDetailRequest {
@McpParameter(description = "고객명", required = true) @McpParameter(description = "고객명", required = true)
@McpValidation(examples = {"홍길동"})
private String customerName; private String customerName;
@McpParameter(description = "조회할 계약 번호", required = true) @McpParameter(description = "조회할 계약 번호", required = true)
@McpValidation(examples = {"1234567890"})
private String contractId; private String contractId;
} }

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -30,6 +31,7 @@ import lombok.Setter;
public class ContractStatusRequest { public class ContractStatusRequest {
@McpParameter(description = "고객명", required = true) @McpParameter(description = "고객명", required = true)
@McpValidation(examples = {"홍길동"})
private String customerName; private String customerName;
@McpParameter(description = "조회할 계약 번호") @McpParameter(description = "조회할 계약 번호")

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -30,6 +31,7 @@ import lombok.Setter;
public class CustomerDetailRequest { public class CustomerDetailRequest {
@McpParameter(description = "고객명", required = true) @McpParameter(description = "고객명", required = true)
@McpValidation(examples = {"홍길동"})
private String customerName; private String customerName;
@McpParameter(description = "고객 식별 번호 (CID)") @McpParameter(description = "고객 식별 번호 (CID)")

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -30,6 +31,7 @@ import lombok.Setter;
public class CustomerGradeRequest { public class CustomerGradeRequest {
@McpParameter(description = "고객 이름 (예: 김신한)", required = true) @McpParameter(description = "고객 이름 (예: 김신한)", required = true)
@McpValidation(examples = {"홍길동"})
private String customerName; private String customerName;
@McpParameter(description = "고객 식별 번호 (CID)") @McpParameter(description = "고객 식별 번호 (CID)")

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@@ -30,5 +31,6 @@ import lombok.Setter;
public class LeaveCountRequest { public class LeaveCountRequest {
@McpParameter(description = "연차 내역을 조회할 사원 번호", required = true) @McpParameter(description = "연차 내역을 조회할 사원 번호", required = true)
@McpValidation(examples = {"EMP12345"})
private String employeeId; private String employeeId;
} }

View File

@@ -2,6 +2,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.dap.lib.annotation.McpParameter; import io.shinhanlife.dap.lib.annotation.McpParameter;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Data; import lombok.Data;
/** /**
@@ -22,11 +23,13 @@ import lombok.Data;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class MetaCommonCodeRequest { public class MetaCommonCodeRequest {
@McpParameter(description = "통합코드 그룹 ID (예: GRP_SYS_01, GRP_COMM_CD)", required = false) @McpParameter(description = "통합코드 그룹 ID (예: GRP_SYS_01, GRP_COMM_CD)", required = false)
@McpValidation(examples = {"GRP_001"})
private String groupCode; private String groupCode;
@McpParameter(description = "코드명 검색 키워드 (예: 사용, 상태)", required = false) @McpParameter(description = "코드명 검색 키워드 (예: 사용, 상태)", required = false)
private String codeName; private String codeName;
@McpParameter(description = "사용여부 (예: Y, N)", required = false) @McpParameter(description = "사용여부 (예: Y, N)", required = false)
@McpValidation(examples = {"Y"})
private String useYn; private String useYn;
} }

View File

@@ -2,6 +2,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.dap.lib.annotation.McpParameter; import io.shinhanlife.dap.lib.annotation.McpParameter;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Data; import lombok.Data;
/** /**
@@ -22,11 +23,14 @@ import lombok.Data;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class MetaTableRequest { public class MetaTableRequest {
@McpParameter(description = "테이블 물리명 키워드 (예: TB_CUST_BAS, TB_CONT)", required = false) @McpParameter(description = "테이블 물리명 키워드 (예: TB_CUST_BAS, TB_CONT)", required = false)
@McpValidation(examples = {"TB_USER"})
private String tableName; private String tableName;
@McpParameter(description = "테이블 논리명(한글) 키워드 (예: 고객기본, 계약)", required = false) @McpParameter(description = "테이블 논리명(한글) 키워드 (예: 고객기본, 계약)", required = false)
@McpValidation(examples = {"고객기본"})
private String tableLogicalName; private String tableLogicalName;
@McpParameter(description = "스키마/소유자명 (예: DAPADM, SHLOWN)", required = false) @McpParameter(description = "스키마/소유자명 (예: DAPADM, SHLOWN)", required = false)
@McpValidation(examples = {"DAPADM"})
private String owner; private String owner;
} }

View File

@@ -1,6 +1,7 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Data; import lombok.Data;
/** /**
@@ -20,5 +21,6 @@ import lombok.Data;
@Data @Data
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class SampleStringRequest { public class SampleStringRequest {
@McpValidation(examples = {"test query"})
private String query; private String query;
} }

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.biz.cmm.dto; package io.shinhanlife.dap.mcc.biz.cmm.dto;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.Builder; import lombok.Builder;
@@ -31,5 +32,6 @@ public class TemplateDownloadRequest {
/** /**
* 다운로드할 템플릿의 종류 ID (예: CUSTOMER_EXCEL, PRODUCT_PDF 등) * 다운로드할 템플릿의 종류 ID (예: CUSTOMER_EXCEL, PRODUCT_PDF 등)
*/ */
@McpValidation(examples = {"TPL_001"})
private String templateId; private String templateId;
} }

View File

@@ -31,10 +31,10 @@ import lombok.Setter;
public class VacationRegisterRequest { public class VacationRegisterRequest {
@McpParameter(description = "연차를 등록할 사원 번호", required = true) @McpParameter(description = "연차를 등록할 사원 번호", required = true)
@McpValidation(pattern = "\\S") @McpValidation(pattern = "\\S", examples = {"EMP12345"})
private String employeeId; private String employeeId;
@McpParameter(description = "휴가 일자 (YYYY-MM-DD 형식)", required = true) @McpParameter(description = "휴가 일자 (YYYY-MM-DD 형식)", required = true)
@McpValidation(pattern = "^\\d{4}-\\d{2}-\\d{2}$") @McpValidation(pattern = "^\\d{4}-\\d{2}-\\d{2}$", examples = {"2026-08-05"})
private String date; private String date;
} }

View File

@@ -1,3 +1,3 @@
package io.shinhanlife.dap.mcc.biz.smp.dto; package io.shinhanlife.dap.mcc.biz.smp.dto;
public record DailyQuoteRequest(String category) {} public record DailyQuoteRequest(String category) {}

View File

@@ -1,3 +1,3 @@
package io.shinhanlife.dap.mcc.biz.smp.dto; package io.shinhanlife.dap.mcc.biz.smp.dto;
public record ExchangeRateRequest(String currencyCode) {} public record ExchangeRateRequest(String currencyCode) {}

View File

@@ -2,6 +2,7 @@ package io.shinhanlife.dap.mcc.biz.smp.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.dap.lib.annotation.McpParameter; import io.shinhanlife.dap.lib.annotation.McpParameter;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Data; import lombok.Data;
/** /**
@@ -22,5 +23,6 @@ import lombok.Data;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class TeamMemberRequest { public class TeamMemberRequest {
@McpParameter(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false) @McpParameter(description = "조회할 팀 이름 (예: AX, MCP, TOOL, 전체 등)", required = false)
@McpValidation(examples = {"개발1팀"})
private String teamName; private String teamName;
} }

View File

@@ -22,4 +22,4 @@ public record WeatherRequest(
@JsonPropertyDescription("날씨를 조회할 도시 이름 (예: 서울, 부산, 제주)") @JsonPropertyDescription("날씨를 조회할 도시 이름 (예: 서울, 부산, 제주)")
String city String city
) { ) {
} }

View File

@@ -2,6 +2,7 @@ package io.shinhanlife.dap.mcc.biz.sol.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.dap.lib.annotation.McpParameter; import io.shinhanlife.dap.lib.annotation.McpParameter;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Data; import lombok.Data;
/** /**
@@ -23,5 +24,6 @@ import lombok.Data;
public class SolReqDetailRequest { public class SolReqDetailRequest {
@McpParameter(description = "상세 조회할 SOL 의뢰서 ID", required = true) @McpParameter(description = "상세 조회할 SOL 의뢰서 ID", required = true)
@McpValidation(examples = {"SR20260805"})
private String srId; private String srId;
} }

View File

@@ -2,6 +2,7 @@ package io.shinhanlife.dap.mcc.biz.sol.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.dap.lib.annotation.McpParameter; import io.shinhanlife.dap.lib.annotation.McpParameter;
import io.shinhanlife.dap.lib.annotation.McpValidation;
import lombok.Data; import lombok.Data;
/** /**
@@ -22,11 +23,13 @@ import lombok.Data;
@JsonInclude(JsonInclude.Include.NON_NULL) @JsonInclude(JsonInclude.Include.NON_NULL)
public class SolReqListRequest { public class SolReqListRequest {
@McpParameter(description = "진행상태 (예: 진행중, 완료 등)", required = false) @McpParameter(description = "진행상태 (예: 진행중, 완료 등)", required = false)
@McpValidation(examples = {"RECEIVED"})
private String status; private String status;
@McpParameter(description = "조회기간 (예: 1개월, 3개월 등)", required = false) @McpParameter(description = "조회기간 (예: 1개월, 3개월 등)", required = false)
private String period; private String period;
@McpParameter(description = "조회대상 (예: 나의 업무, 전체 등)", required = false) @McpParameter(description = "조회대상 (예: 나의 업무, 전체 등)", required = false)
@McpValidation(examples = {"USER"})
private String target; private String target;
} }

View File

@@ -31,12 +31,12 @@ import lombok.Setter;
public class SmsSendRequest { public class SmsSendRequest {
@McpParameter(description = "수신자 전화번호", required = true) @McpParameter(description = "수신자 전화번호", required = true)
@McpValidation(pattern = "^01[0-9]-?\\d{3,4}-?\\d{4}$") @McpValidation(pattern = "^01[0-9]-?\\d{3,4}-?\\d{4}$", examples = {"01012345678"})
private String phoneNumber; private String phoneNumber;
@McpParameter(description = "전송할 메시지 내용", required = true) @McpParameter(description = "전송할 메시지 내용", required = true)
@McpValidation(pattern = "\\S") @McpValidation(pattern = "\\S", examples = {"테스트 메시지입니다."})
private String message; private String message;
} }