From 2b432c701adf0d2ae93c42e0238fd84cbd07ea04 Mon Sep 17 00:00:00 2001 From: jade Date: Wed, 8 Jul 2026 16:09:45 +0900 Subject: [PATCH] feat: Support manual execution of hidden tools via fallback routing --- .../biz/mcp/gateway/service/ToolPlanner.java | 14 +++- .../src/main/resources/static/playground.html | 68 ++++++++++++++++--- .../controller/BusinessToolController.java | 17 +---- .../src/main/resources/application.properties | 3 - 4 files changed, 71 insertions(+), 31 deletions(-) diff --git a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java index dab3f77..1e7d3a3 100644 --- a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java +++ b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/service/ToolPlanner.java @@ -2,6 +2,7 @@ package io.shinhanlife.axhub.biz.mcp.gateway.service; import io.shinhanlife.axhub.common.mcp.security.SecurityProperties; import io.shinhanlife.axhub.biz.mcp.gateway.registry.RedisRegistryService; +import io.shinhanlife.axhub.biz.mcp.gateway.dto.ToolMetadata; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; @@ -36,8 +37,17 @@ public class ToolPlanner { var toolMetadata = redisRegistryService.getTool(toolName); if (toolMetadata == null) { - log.warn(" [Planner] 등록되지 않은 툴 요청: {}", toolName); - throw new RuntimeException("해당 툴(" + toolName + ")이 레지스트리에 존재하지 않습니다."); + log.warn(" [Planner] 등록되지 않은 툴 요청: {}. 레지스트리를 참조하지 않고 강제 연동 모드로 전환합니다.", toolName); + // 히든 툴(register=false)에 대한 강제 라우팅 폴백 + String fallbackPodUrl = "http://tool-other:8084"; // 기본값 (get_template_file_url 등) + if (toolName.contains("email")) fallbackPodUrl = "http://tool-email:8083"; + else if (toolName.contains("sms")) fallbackPodUrl = "http://tool-sms:8082"; + + toolMetadata = ToolMetadata.builder() + .toolName(toolName) + .integrationType("DIRECT") + .podUrl(fallbackPodUrl) + .build(); } // 2-1. [신규] 도메인 그룹핑 기반 권한 검증 diff --git a/axhub-gateway/src/main/resources/static/playground.html b/axhub-gateway/src/main/resources/static/playground.html index 93522f3..fcfeb8b 100644 --- a/axhub-gateway/src/main/resources/static/playground.html +++ b/axhub-gateway/src/main/resources/static/playground.html @@ -234,6 +234,21 @@ + + +