diff --git a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpFunction.java b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpFunction.java index 3b3e27f2..acb185de 100644 --- a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpFunction.java +++ b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpFunction.java @@ -26,10 +26,7 @@ public @interface McpFunction { String description(); String prompt() default ""; String mappingId() default ""; - - // 추가: 해당 함수가 요구하는 비즈니스 파라미터(JSON 형태의 properties)를 정의 - String inputSchema() default "{}"; - + // 추가: Redis 자동 등록 및 Heartbeat 대상 여부 제어 boolean register() default false; diff --git a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpValidation.java b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpValidation.java index 2b7d975d..ac922a32 100644 --- a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpValidation.java +++ b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpValidation.java @@ -27,4 +27,7 @@ public @interface McpValidation { String pattern() default ""; long minimum() default Long.MIN_VALUE; String[] allowedValues() default {}; + String format() default ""; + String defaultValue() default ""; + String[] examples() default {}; } diff --git a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/JsonSchemaGenerator.java b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/JsonSchemaGenerator.java index ebf9543d..ac5de453 100644 --- a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/JsonSchemaGenerator.java +++ b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/JsonSchemaGenerator.java @@ -42,6 +42,7 @@ public class JsonSchemaGenerator { private static Map generateSchema(Class clazz, Set> visiting) { Map schema = new HashMap<>(); schema.put("type", "object"); + schema.put("additionalProperties", false); if (!visiting.add(clazz)) { return schema; } @@ -84,6 +85,15 @@ public class JsonSchemaGenerator { if (validation != null && validation.allowedValues().length > 0) { fieldSchema.put("enum", List.of(validation.allowedValues())); } + if (validation != null && !validation.format().isEmpty()) { + fieldSchema.put("format", validation.format()); + } + if (validation != null && !validation.defaultValue().isEmpty()) { + fieldSchema.put("default", validation.defaultValue()); + } + if (validation != null && validation.examples().length > 0) { + fieldSchema.put("examples", List.of(validation.examples())); + } properties.put(field.getName(), fieldSchema); }