From 5e97e6754facc4c6b9e8c1ed898e5b33eb94e6ac Mon Sep 17 00:00:00 2001 From: jade Date: Thu, 16 Jul 2026 09:07:38 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20AI=20=EC=B1=84=ED=8C=85=20=ED=88=B4=20?= =?UTF-8?q?=EC=8B=A4=ED=96=89=20=EC=8B=9C=20=EB=8F=99=EC=A0=81=20Tenant=20?= =?UTF-8?q?ID(Agent=20ID)=EB=A5=BC=20=EC=A3=BC=EC=9E=85=ED=95=98=EC=97=AC?= =?UTF-8?q?=20=EA=B6=8C=ED=95=9C=20=EA=B1=B0=EB=B6=80=20=EC=98=A4=EB=A5=98?= =?UTF-8?q?=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mcp/gateway/presentation/ChatController.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/presentation/ChatController.java b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/presentation/ChatController.java index bb98715..abd267e 100644 --- a/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/presentation/ChatController.java +++ b/axhub-gateway/src/main/java/io/shinhanlife/axhub/biz/mcp/gateway/presentation/ChatController.java @@ -28,7 +28,10 @@ public class ChatController { private final ChatClient.Builder chatClientBuilder; @PostMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE) - public SseEmitter chatStream(@RequestBody Map request) { + public SseEmitter chatStream(@RequestBody Map request, + @RequestHeader(value = "X-Agent-Id", required = false) String agentId, + @RequestHeader(value = "X-Tenant-Id", required = false, defaultValue = "system") String tenantId) { + String effectiveTenantId = (agentId != null && !agentId.trim().isEmpty()) ? agentId : tenantId; String message = request.getOrDefault("message", "").trim(); log.info("[Real AI Chat] 사용자의 메시지 수신: {}", message); @@ -38,7 +41,7 @@ public class ChatController { List callbacks = new ArrayList<>(); for (ToolMetadata meta : registryService.getAllTools()) { if (Boolean.TRUE.equals(meta.getVisible())) { - callbacks.add(new DynamicMcpToolCallback(meta, executeService, objectMapper)); + callbacks.add(new DynamicMcpToolCallback(meta, executeService, objectMapper, effectiveTenantId)); } } @@ -100,11 +103,13 @@ public class ChatController { private final ExecuteService executeService; private final ObjectMapper objectMapper; private final ToolDefinition toolDefinition; + private final String tenantId; - public DynamicMcpToolCallback(ToolMetadata metadata, ExecuteService executeService, ObjectMapper objectMapper) { + public DynamicMcpToolCallback(ToolMetadata metadata, ExecuteService executeService, ObjectMapper objectMapper, String tenantId) { this.metadata = metadata; this.executeService = executeService; this.objectMapper = objectMapper; + this.tenantId = tenantId; String schema = "{\"type\":\"object\",\"properties\":{}}"; try { @@ -148,7 +153,7 @@ public class ChatController { payload.put("params", params); - Object result = executeService.execute(payload, "default"); + Object result = executeService.execute(payload, this.tenantId); String jsonResult = objectMapper.writeValueAsString(result); log.info("[Function Calling] '{}' 툴 실행 완료. 결과: {}", metadata.getName(), jsonResult); return jsonResult;