refactor: 공용 클래스(MCP, Manifest, UseCase 등) lib 패키지로 이관 및 통합
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 2m17s

This commit is contained in:
jade
2026-08-04 23:06:01 +09:00
parent 1a70495686
commit f827760513
51 changed files with 66 additions and 136 deletions

View File

@@ -1,6 +1,6 @@
package io.shinhanlife.dap.mcg.config; package io.shinhanlife.dap.mcg.config;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;

View File

@@ -17,7 +17,7 @@ package io.shinhanlife.dap.mcg.guardrail;
*/ */
import io.shinhanlife.dap.mcg.resilience.FailureType; import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException; import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode; import com.fasterxml.jackson.databind.node.ObjectNode;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -17,7 +17,7 @@ package io.shinhanlife.dap.mcg.guardrail;
*/ */
import io.shinhanlife.dap.mcg.resilience.FailureType; import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException; import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;

View File

@@ -15,7 +15,7 @@ package io.shinhanlife.dap.mcg.presentation;
* *
* </pre> * </pre>
*/ */
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService; import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
import io.shinhanlife.dap.mcg.service.ExecuteService; import io.shinhanlife.dap.mcg.service.ExecuteService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -20,7 +20,7 @@ import io.shinhanlife.dap.lib.adapter.dto.JsonRpcRequest;
import io.shinhanlife.dap.lib.adapter.dto.JsonRpcResponse; import io.shinhanlife.dap.lib.adapter.dto.JsonRpcResponse;
import io.shinhanlife.dap.lib.adapter.dto.Params; import io.shinhanlife.dap.lib.adapter.dto.Params;
import io.shinhanlife.dap.mcg.config.GatewayFallbackProperties; import io.shinhanlife.dap.mcg.config.GatewayFallbackProperties;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService; import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
import io.shinhanlife.dap.mcg.service.ExecuteService; import io.shinhanlife.dap.mcg.service.ExecuteService;
import io.shinhanlife.dap.lib.mcp.security.SecurityProperties; import io.shinhanlife.dap.lib.mcp.security.SecurityProperties;

View File

@@ -17,7 +17,7 @@ package io.shinhanlife.dap.mcg.redis;
*/ */
import io.shinhanlife.dap.mcg.config.McpGatewayProperties; import io.shinhanlife.dap.mcg.config.McpGatewayProperties;
import io.shinhanlife.dap.mcg.security.McpRequestContext; import io.shinhanlife.dap.mcg.security.McpRequestContext;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.ObjectProvider;

View File

@@ -1,6 +1,6 @@
package io.shinhanlife.dap.mcg.registry; package io.shinhanlife.dap.mcg.registry;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;

View File

@@ -18,8 +18,8 @@ package io.shinhanlife.dap.mcg.security;
import io.shinhanlife.dap.mcg.config.McpGatewayProperties; import io.shinhanlife.dap.mcg.config.McpGatewayProperties;
import io.shinhanlife.dap.mcg.resilience.FailureType; import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException; import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
import io.shinhanlife.dap.mcg.dto.OperationType; import io.shinhanlife.dap.lib.dto.OperationType;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.Set; import java.util.Set;

View File

@@ -17,11 +17,11 @@ package io.shinhanlife.dap.mcg.service;
*/ */
import java.util.HashMap; import java.util.HashMap;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.resilience.FailureType; import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.RetryPolicy; import io.shinhanlife.dap.mcg.resilience.RetryPolicy;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException; import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
import io.shinhanlife.dap.mcg.dto.OperationType; import io.shinhanlife.dap.lib.dto.OperationType;
import io.shinhanlife.dap.mcg.config.McpGatewayProperties; import io.shinhanlife.dap.mcg.config.McpGatewayProperties;
import io.shinhanlife.dap.mcg.guardrail.GuardrailService; import io.shinhanlife.dap.mcg.guardrail.GuardrailService;
import io.shinhanlife.dap.mcg.security.McpRequestContext; import io.shinhanlife.dap.mcg.security.McpRequestContext;

View File

@@ -2,7 +2,7 @@ package io.shinhanlife.dap.mcg.service;
import io.shinhanlife.dap.lib.mcp.security.SecurityProperties; import io.shinhanlife.dap.lib.mcp.security.SecurityProperties;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService; import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.config.GatewayFallbackProperties; import io.shinhanlife.dap.mcg.config.GatewayFallbackProperties;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -18,7 +18,7 @@ package io.shinhanlife.dap.mcg.sync;
import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities; import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
import io.modelcontextprotocol.server.McpServer; import io.modelcontextprotocol.server.McpServer;
import io.modelcontextprotocol.server.McpSyncServer; import io.modelcontextprotocol.server.McpSyncServer;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.sync.CustomWebMvcSseServerTransportProvider; import io.shinhanlife.dap.mcg.sync.CustomWebMvcSseServerTransportProvider;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;

View File

@@ -15,7 +15,7 @@ package io.shinhanlife.dap.mcg.sync;
* *
* </pre> * </pre>
*/ */
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.service.ExecuteService; import io.shinhanlife.dap.mcg.service.ExecuteService;
import io.modelcontextprotocol.server.McpServerFeatures; import io.modelcontextprotocol.server.McpServerFeatures;
import io.modelcontextprotocol.spec.McpSchema; import io.modelcontextprotocol.spec.McpSchema;

View File

@@ -1,6 +1,6 @@
package io.shinhanlife.dap.mcg.sync; package io.shinhanlife.dap.mcg.sync;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService; import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
import io.modelcontextprotocol.server.McpSyncServer; import io.modelcontextprotocol.server.McpSyncServer;
import org.slf4j.Logger; import org.slf4j.Logger;

View File

@@ -15,7 +15,7 @@ package io.shinhanlife.dap.mcg.tool.large;
* *
* </pre> * </pre>
*/ */
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.config.McpGatewayProperties; import io.shinhanlife.dap.mcg.config.McpGatewayProperties;
import io.shinhanlife.dap.mcg.resilience.FailureType; import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException; import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;

View File

@@ -5,7 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.spec.McpSchema; import io.modelcontextprotocol.spec.McpSchema;
import io.shinhanlife.dap.mcg.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.sync.RegistryMcpToolSpecificationFactory; import io.shinhanlife.dap.mcg.sync.RegistryMcpToolSpecificationFactory;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcg.dto; package io.shinhanlife.dap.lib.dto;
/** /**
* @package io.shinhanlife.dap.mcg.dto * @package io.shinhanlife.dap.mcg.dto

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcg.dto; package io.shinhanlife.dap.lib.dto;
import lombok.Getter; import lombok.Getter;
import lombok.Setter; import lombok.Setter;
@@ -63,6 +63,10 @@ public class ToolMetadata {
@Builder.Default @Builder.Default
private Boolean visible = true; private Boolean visible = true;
// 활성화 여부
@Builder.Default
private Boolean enabled = true;
// 2-5. Redis 등록 여부 (UI 표출용) // 2-5. Redis 등록 여부 (UI 표출용)
@Builder.Default @Builder.Default
private Boolean isRegistered = true; private Boolean isRegistered = true;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.manifest; package io.shinhanlife.dap.lib.manifest;
/** Behaviour hints exposed by the Tool Service manifest. */ /** Behaviour hints exposed by the Tool Service manifest. */
public record ToolManifestAnnotations( public record ToolManifestAnnotations(

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.manifest; package io.shinhanlife.dap.lib.manifest;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.Map; import java.util.Map;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.manifest; package io.shinhanlife.dap.lib.manifest;
/** Operational metadata exposed by the Tool Service manifest. */ /** Operational metadata exposed by the Tool Service manifest. */
public record ToolManifestMeta(String version, long timeoutMillis, boolean enabled) { public record ToolManifestMeta(String version, long timeoutMillis, boolean enabled) {

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.manifest; package io.shinhanlife.dap.lib.manifest;
import java.util.List; import java.util.List;

View File

@@ -1,9 +1,9 @@
package io.shinhanlife.dap.mcc.manifest; package io.shinhanlife.dap.lib.manifest;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.config.McpProperties; import io.shinhanlife.dap.lib.config.McpProperties;
import io.shinhanlife.dap.mcc.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcc.usecase.ToolRegistryHeartbeatSender; import io.shinhanlife.dap.lib.usecase.ToolRegistryHeartbeatSender;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.util.Comparator; import java.util.Comparator;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.mcp; package io.shinhanlife.dap.lib.mcp;
/** Holds optional MCP headers for the lifetime of one HTTP request thread. */ /** Holds optional MCP headers for the lifetime of one HTTP request thread. */
public final class McpRequestHeaderContext { public final class McpRequestHeaderContext {

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.mcp; package io.shinhanlife.dap.lib.mcp;
import java.io.IOException; import java.io.IOException;
import jakarta.servlet.FilterChain; import jakarta.servlet.FilterChain;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.mcp; package io.shinhanlife.dap.lib.mcp;
/** Optional request headers propagated from an MCP HTTP request to a Tool invocation. */ /** Optional request headers propagated from an MCP HTTP request to a Tool invocation. */
public record McpRequestHeaders( public record McpRequestHeaders(

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.mcp; package io.shinhanlife.dap.lib.mcp;
import io.modelcontextprotocol.server.transport.HttpServletStreamableServerTransportProvider; import io.modelcontextprotocol.server.transport.HttpServletStreamableServerTransportProvider;
import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.boot.web.servlet.ServletRegistrationBean;

View File

@@ -1,12 +1,12 @@
package io.shinhanlife.dap.mcc.mcp; package io.shinhanlife.dap.lib.mcp;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.server.McpServerFeatures; import io.modelcontextprotocol.server.McpServerFeatures;
import io.modelcontextprotocol.server.McpSyncServer; import io.modelcontextprotocol.server.McpSyncServer;
import io.modelcontextprotocol.spec.McpSchema; import io.modelcontextprotocol.spec.McpSchema;
import io.shinhanlife.dap.mcc.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcc.presentation.BusinessToolController; import io.shinhanlife.dap.mcc.presentation.BusinessToolController;
import io.shinhanlife.dap.mcc.usecase.ToolRegistryHeartbeatSender; import io.shinhanlife.dap.lib.usecase.ToolRegistryHeartbeatSender;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
import org.springframework.boot.context.event.ApplicationReadyEvent; import org.springframework.boot.context.event.ApplicationReadyEvent;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.usecase; package io.shinhanlife.dap.lib.usecase;
import io.shinhanlife.dap.lib.adapter.connector.LegacyEimsConnector; import io.shinhanlife.dap.lib.adapter.connector.LegacyEimsConnector;
import io.shinhanlife.dap.lib.adapter.util.PiiMaskingUtils; import io.shinhanlife.dap.lib.adapter.util.PiiMaskingUtils;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.usecase; package io.shinhanlife.dap.lib.usecase;
/** /**
@@ -19,7 +19,7 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.lib.config.McpProperties; import io.shinhanlife.dap.lib.config.McpProperties;
import io.shinhanlife.dap.mcc.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.lib.util.ToolSchemaResolver; import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
import jakarta.annotation.PostConstruct; import jakarta.annotation.PostConstruct;
import java.lang.reflect.Method; import java.lang.reflect.Method;

View File

@@ -330,7 +330,7 @@ public class ToolScaffolder {
import %s.dto.%sRequest; import %s.dto.%sRequest;
import %s.dto.%sResponse; import %s.dto.%sResponse;
import %s.usecase.%sUseCase; import %s.usecase.%sUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import %s.converter.%sConverter; import %s.converter.%sConverter;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.presentation; package io.shinhanlife.dap.lib.validation;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.networknt.schema.Error; import com.networknt.schema.Error;

View File

@@ -1,76 +0,0 @@
package io.shinhanlife.dap.mcc.dto;
import lombok.Getter;
import lombok.Setter;
import lombok.Builder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;
import java.util.Map;
/**
* @package io.shinhanlife.dap.mcc.dto
* @className ToolMetadata
* @description AX HUB 시스템 처리 클래스
* @author 0986406
* @create 2026.09.01
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2026.09.01 0986406 최초생성
*
* </pre>
*/
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class ToolMetadata {
// 1. Tool 기본 정보
private String uid; // UUID 형식의 고유 식별자
private String semver; // 버전 (예: 1.0.0)
private Long timeoutMillis;
private Boolean enabled;
private String displayName; // 사람이 읽는 라벨 (1-128자)
private String name; // MCP 서브툴 명칭 (64자 이하, 예: CustomerSearchTool)
private String description; // 툴의 목적 및 설명 (LLM 프롬프트에 활용 가능)
// 2. 파라미터 스키마 (JSON Schema 형태의 Map)
private Map<String, Object> parametersSchema;
// 2-0. 프론트엔드 UI용 함수별 프롬프트 매핑 (추가됨)
private Map<String, String> actionPrompts;
// 2-1. 도메인 부서 그룹명 (category_key, 슬러그 형식)
private String categoryKey;
private String endpoint;
private String podUrl;
private String integrationType;
private String mciServiceId;
@Builder.Default
private Boolean visible = true;
@Builder.Default
private Boolean isRegistered = true;
@Builder.Default
private Boolean requiresApproval = false;
@Builder.Default
private Boolean readOnlyHint = false;
@Builder.Default
private Boolean destructiveHint = false;
@Builder.Default
private Boolean idempotentHint = false;
@Builder.Default
private Boolean openWorldHint = false;
}

View File

@@ -18,10 +18,11 @@ package io.shinhanlife.dap.mcc.presentation;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import com.networknt.schema.Error; import com.networknt.schema.Error;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.validation.ToolArgumentSchemaValidator;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.lib.config.McpProperties; import io.shinhanlife.dap.lib.config.McpProperties;
import io.shinhanlife.dap.mcc.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import io.shinhanlife.dap.mcc.usecase.ToolRegistryHeartbeatSender; import io.shinhanlife.dap.lib.usecase.ToolRegistryHeartbeatSender;
import io.shinhanlife.dap.lib.util.ToolSchemaResolver; import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.ArrayList; import java.util.ArrayList;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.mcc.presentation; package io.shinhanlife.dap.mcc.presentation;
import io.shinhanlife.dap.mcc.manifest.ToolManifestResponse; import io.shinhanlife.dap.lib.manifest.ToolManifestResponse;
import io.shinhanlife.dap.mcc.manifest.ToolManifestService; import io.shinhanlife.dap.lib.manifest.ToolManifestService;
import org.springframework.http.HttpHeaders; import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity; import org.springframework.http.ResponseEntity;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.manifest; package io.shinhanlife.dap.lib.manifest;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows; import static org.junit.jupiter.api.Assertions.assertThrows;
@@ -6,7 +6,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.config.McpProperties; import io.shinhanlife.dap.lib.config.McpProperties;
import io.shinhanlife.dap.mcc.dto.ToolMetadata; import io.shinhanlife.dap.lib.dto.ToolMetadata;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.mcp; package io.shinhanlife.dap.lib.mcp;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNull; import static org.junit.jupiter.api.Assertions.assertNull;
@@ -11,7 +11,7 @@ import static org.mockito.Mockito.when;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.server.McpSyncServer; import io.modelcontextprotocol.server.McpSyncServer;
import io.shinhanlife.dap.mcc.presentation.BusinessToolController; import io.shinhanlife.dap.mcc.presentation.BusinessToolController;
import io.shinhanlife.dap.mcc.usecase.ToolRegistryHeartbeatSender; import io.shinhanlife.dap.lib.usecase.ToolRegistryHeartbeatSender;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.Map; import java.util.Map;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.mcp; package io.shinhanlife.dap.lib.mcp;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertFalse;

View File

@@ -4,6 +4,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertTrue; import static org.junit.jupiter.api.Assertions.assertTrue;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.validation.ToolArgumentSchemaValidator;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -16,7 +16,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
* </pre> * </pre>
*/ */
import io.shinhanlife.dap.mcc.biz.cmm.usecase.BalanceUseCase; import io.shinhanlife.dap.mcc.biz.cmm.usecase.BalanceUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import io.shinhanlife.dap.mcc.biz.cmm.dto.BalanceRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.BalanceRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -3,7 +3,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.BillingProcessUseCase; import io.shinhanlife.dap.mcc.biz.cmm.usecase.BillingProcessUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import io.shinhanlife.dap.mcc.biz.cmm.dto.BillingProcessRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.BillingProcessRequest;
import io.shinhanlife.dap.mcc.biz.cmm.dto.BillingStatusRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.BillingStatusRequest;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.BondIssueUseCase; import io.shinhanlife.dap.mcc.biz.cmm.usecase.BondIssueUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import io.shinhanlife.dap.mcc.biz.cmm.dto.BondCheckRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.BondCheckRequest;
import io.shinhanlife.dap.mcc.biz.cmm.dto.BondIssueRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.BondIssueRequest;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.CommonUtilityUseCase; import io.shinhanlife.dap.mcc.biz.cmm.usecase.CommonUtilityUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import io.shinhanlife.dap.mcc.biz.cmm.dto.LeaveCountRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.LeaveCountRequest;
import io.shinhanlife.dap.mcc.biz.cmm.dto.VacationRegisterRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.VacationRegisterRequest;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.ContractInquiryUseCase; import io.shinhanlife.dap.mcc.biz.cmm.usecase.ContractInquiryUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import io.shinhanlife.dap.mcc.biz.cmm.dto.ContractDetailRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.ContractDetailRequest;
import io.shinhanlife.dap.mcc.biz.cmm.dto.ContractStatusRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.ContractStatusRequest;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.CustomerInfoUseCase; import io.shinhanlife.dap.mcc.biz.cmm.usecase.CustomerInfoUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerDetailRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerDetailRequest;
import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGradeRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGradeRequest;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.TemplateUtilityUseCase; import io.shinhanlife.dap.mcc.biz.cmm.usecase.TemplateUtilityUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import io.shinhanlife.dap.mcc.biz.cmm.dto.TemplateDownloadRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.TemplateDownloadRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -3,7 +3,7 @@ package io.shinhanlife.dap.mcc.biz.smp.usecase.impl;
import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteRequest; import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteRequest;
import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteResponse; import io.shinhanlife.dap.mcc.biz.smp.dto.DailyQuoteResponse;
import io.shinhanlife.dap.mcc.biz.smp.usecase.DailyQuoteToolUseCase; import io.shinhanlife.dap.mcc.biz.smp.usecase.DailyQuoteToolUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;

View File

@@ -3,7 +3,7 @@ package io.shinhanlife.dap.mcc.biz.smp.usecase.impl;
import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateRequest; import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateRequest;
import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateResponse; import io.shinhanlife.dap.mcc.biz.smp.dto.ExchangeRateResponse;
import io.shinhanlife.dap.mcc.biz.smp.usecase.ExchangeRateToolUseCase; import io.shinhanlife.dap.mcc.biz.smp.usecase.ExchangeRateToolUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient;

View File

@@ -3,7 +3,7 @@ package io.shinhanlife.dap.mcc.biz.smp.usecase.impl;
import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberRequest; import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberRequest;
import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberResponse; import io.shinhanlife.dap.mcc.biz.smp.dto.TeamMemberResponse;
import io.shinhanlife.dap.mcc.biz.smp.usecase.TeamMemberUseCase; import io.shinhanlife.dap.mcc.biz.smp.usecase.TeamMemberUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -3,7 +3,7 @@ package io.shinhanlife.dap.mcc.biz.smp.usecase.impl;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.mcc.biz.smp.usecase.WeatherToolUseCase; import io.shinhanlife.dap.mcc.biz.smp.usecase.WeatherToolUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherRequest; import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherRequest;
import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherResponse; import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -8,7 +8,7 @@ import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.util.JsonSchemaGenerator; import io.shinhanlife.dap.lib.util.JsonSchemaGenerator;
import io.shinhanlife.dap.lib.util.ToolSchemaResolver; import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
import io.shinhanlife.dap.mcc.biz.cmm.usecase.impl.ClaimSearchSchemaSampleUseCaseImpl; import io.shinhanlife.dap.mcc.biz.cmm.usecase.impl.ClaimSearchSchemaSampleUseCaseImpl;
import io.shinhanlife.dap.mcc.presentation.ToolArgumentSchemaValidator;import io.shinhanlife.dap.mcc.biz.cmm.usecase.ClaimSearchSchemaSampleUseCase; import io.shinhanlife.dap.lib.validation.ToolArgumentSchemaValidator;import io.shinhanlife.dap.mcc.biz.cmm.usecase.ClaimSearchSchemaSampleUseCase;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.mcc.biz.sms.usecase.impl; package io.shinhanlife.dap.mcc.biz.sms.usecase.impl;
import io.shinhanlife.dap.mcc.biz.sms.usecase.SmsToolUseCase; import io.shinhanlife.dap.mcc.biz.sms.usecase.SmsToolUseCase;
import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import io.shinhanlife.dap.mcc.biz.sms.converter.SmsLegacyConverter; import io.shinhanlife.dap.mcc.biz.sms.converter.SmsLegacyConverter;
import io.shinhanlife.dap.mcc.biz.sms.dto.SmsSendRequest; import io.shinhanlife.dap.mcc.biz.sms.dto.SmsSendRequest;