From 2809f1fd3a694ca49bdf8b780a915edeb42555ab Mon Sep 17 00:00:00 2001 From: jade Date: Mon, 31 Aug 2026 10:12:31 +0900 Subject: [PATCH] refactor: remove retryEnabled from tool metadata --- .../dat/mcg/presentation/ScaffoldingController.java | 1 - .../io/shinhanlife/dat/mcg/service/ExecuteService.java | 2 +- .../src/main/resources/static/admin/scaffold.html | 8 -------- .../shinhanlife/dat/lib/annotation/GrowToolHint.java | 1 - .../io/shinhanlife/dat/lib/util/ToolScaffolder.java | 10 +--------- .../java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java | 2 -- .../shinhanlife/dat/lib/util/ToolScaffolderTest.java | 3 +-- 7 files changed, 3 insertions(+), 24 deletions(-) diff --git a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java index 5b8c7c15..69774497 100644 --- a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java +++ b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/presentation/ScaffoldingController.java @@ -137,7 +137,6 @@ public class ScaffoldingController { parseDelimited(req.get("tags")), req.get("ownerOrg"), positiveLongOrNull(req.get("timeoutMillis")), - req.containsKey("retryEnabled") ? Boolean.valueOf(req.get("retryEnabled")) : null, positiveIntOrNull(req.get("retryMaxAttempts"))); String defaultWorkspace = DEFAULT_WORKSPACE; diff --git a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java index 10babcd6..fc8d8787 100644 --- a/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java +++ b/dat-gateway/src/main/java/io/shinhanlife/dat/mcg/service/ExecuteService.java @@ -353,7 +353,7 @@ public class ExecuteService { private boolean retryAllowedByOperation(ToolMetadata metadata, ObjectNode arguments) { if (metadata.getOperationType() == OperationType.READ) { - return metadata.getRetryEnabled() != null ? metadata.getRetryEnabled() : true; + return true; } return arguments.hasNonNull("idempotencyKey") && !arguments.path("idempotencyKey").asText("").isBlank(); } diff --git a/dat-gateway/src/main/resources/static/admin/scaffold.html b/dat-gateway/src/main/resources/static/admin/scaffold.html index d172b233..9f60a1d5 100644 --- a/dat-gateway/src/main/resources/static/admin/scaffold.html +++ b/dat-gateway/src/main/resources/static/admin/scaffold.html @@ -1037,13 +1037,6 @@
Tool 호출 최대 대기 시간입니다.
-
- - -
@@ -1681,7 +1674,6 @@ exampleQueries: (data.exampleQueries || '').split(/[\n,]+/).map(value => value.trim()).filter(Boolean), tags: (data.tags || '').split(',').map(value => value.trim()).filter(Boolean), ownerOrg: data.ownerOrg || 'MCP_TOOL', timeoutMillis: Number(data.timeoutMillis || 5000), - retryEnabled: data.retryEnabled !== 'false', retryMaxAttempts: Number(data.retryMaxAttempts || 3) } }; diff --git a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java index 936e26b9..8a26b17d 100644 --- a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java +++ b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/annotation/GrowToolHint.java @@ -30,7 +30,6 @@ public @interface GrowToolHint { String inputSchemaResource() default ""; String outputSchemaResource() default ""; long timeoutMillis() default 5000L; - boolean retryEnabled() default true; int retryMaxAttempts() default 3; // Meta 정보 추가 (보고용 샘플) diff --git a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java index 108e4095..8194fd70 100644 --- a/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java +++ b/dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java @@ -70,24 +70,19 @@ public class ToolScaffolder { List tags, String ownerOrg, Long timeoutMillis, - Boolean retryEnabled, Integer retryMaxAttempts) { public ToolDefinitionOptions(String functionDescription, String whenToUse, String whenNotToUse, String ioLimits, String displayDescription, List exampleQueries, List tags, String ownerOrg) { this(functionDescription, whenToUse, whenNotToUse, ioLimits, displayDescription, exampleQueries, tags, - ownerOrg, null, null, null); + ownerOrg, null, null); } public long timeoutMillisOrDefault() { return timeoutMillis != null && timeoutMillis > 0 ? timeoutMillis : 5000L; } - public boolean retryEnabledOrDefault() { - return retryEnabled == null || retryEnabled; - } - public int retryMaxAttemptsOrDefault() { return retryMaxAttempts != null && retryMaxAttempts > 0 ? retryMaxAttempts : 3; } @@ -265,7 +260,6 @@ public class ToolScaffolder { .append(" requiresApproval = ").append(isMutation).append(",\n") .append(" categoryKey = \"").append(tool.group().toLowerCase(Locale.ROOT)).append("\",\n") .append(" timeoutMillis = ").append(opts.timeoutMillisOrDefault()).append("L,\n") - .append(" retryEnabled = ").append(opts.retryEnabledOrDefault()).append(",\n") .append(" retryMaxAttempts = ").append(opts.retryMaxAttemptsOrDefault()).append(",\n"); if (tool.interfaceId() != null && !tool.interfaceId().isBlank()) { methods.append(" mappingId = \"").append(javaText(tool.interfaceId())).append("\",\n"); @@ -424,7 +418,6 @@ public class ToolScaffolder { .append(" requiresApproval = ").append(isMutation).append(",\n") .append(" categoryKey = \"").append(tool.group().toLowerCase(Locale.ROOT)).append("\",\n") .append(" timeoutMillis = ").append(opts.timeoutMillisOrDefault()).append("L,\n") - .append(" retryEnabled = ").append(opts.retryEnabledOrDefault()).append(",\n") .append(" retryMaxAttempts = ").append(opts.retryMaxAttemptsOrDefault()).append(",\n"); String mappingId = option(tool.interfaceId(), tool.httpApiName()); if (mappingId != null && !mappingId.isBlank()) { @@ -813,7 +806,6 @@ public class ToolScaffolder { sb.append(" requiresApproval = ").append(isMutation).append(",\n"); sb.append(" categoryKey = \"").append(group.toLowerCase(Locale.ROOT)).append("\",\n"); sb.append(" timeoutMillis = ").append(definitionOptions.timeoutMillisOrDefault()).append("L,\n"); - sb.append(" retryEnabled = ").append(definitionOptions.retryEnabledOrDefault()).append(",\n"); sb.append(" retryMaxAttempts = ").append(definitionOptions.retryMaxAttemptsOrDefault()).append(",\n"); if (interfaceId != null && !interfaceId.isBlank()) { sb.append(" mappingId = \"").append(interfaceId).append("\",\n"); diff --git a/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java b/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java index 6eafeaa7..eec485aa 100644 --- a/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java +++ b/dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/dto/ToolMetadata.java @@ -121,8 +121,6 @@ public class ToolMetadata { @Builder.Default private OperationType operationType = OperationType.READ; - @Builder.Default - private Boolean retryEnabled = true; @Builder.Default private Integer retryMaxAttempts = 3; diff --git a/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java b/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java index beb8314f..f5779540 100644 --- a/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java +++ b/dat-was-lib/src/test/java/io/shinhanlife/dat/lib/util/ToolScaffolderTest.java @@ -472,7 +472,7 @@ class ToolScaffolderTest { ToolScaffolder.scaffoldUseCase("Customer", moduleName, "tester", "2026.08.13", List.of( new ToolScaffolder.ToolMethodDefinition("CustomerProfile", "getProfile", "CUST001", "Profile", "profile", "cmm", "MCI", false, "CSTM", null, List.of(), List.of(), new ToolScaffolder.ToolDefinitionOptions( - null, null, null, null, null, List.of(), List.of(), null, 12000L, false, 5)))); + null, null, null, null, null, List.of(), List.of(), null, 12000L, 5)))); ToolScaffolder.scaffoldUseCase("Customer", moduleName, "tester", "2026.08.13", List.of( new ToolScaffolder.ToolMethodDefinition("CustomerNotice", "getNotice", "NOTICE001", "Notice", "notice", "cmm", "HTTP", false, null, "customer-notice", List.of(), List.of(), null))); @@ -482,7 +482,6 @@ class ToolScaffolderTest { String impl = Files.readString(sourceRoot.resolve("biz/cmm/usecase/impl/CustomerUseCaseImpl.java")); assertTrue(useCase.contains("getProfile(CustomerProfileRequest req)"), useCase); assertTrue(useCase.contains("timeoutMillis = 12000L"), useCase); - assertTrue(useCase.contains("retryEnabled = false"), useCase); assertTrue(useCase.contains("retryMaxAttempts = 5"), useCase); assertTrue(useCase.contains("getNotice(CustomerNoticeRequest req)"), useCase); assertTrue(impl.contains("private final MciCstmClient mciCstmClient;"), impl);