diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/config/RedisConfig.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/config/RedisConfig.java
index b0f11b49..9498936e 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/config/RedisConfig.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/config/RedisConfig.java
@@ -1,6 +1,6 @@
package io.shinhanlife.dap.mcg.config;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/GuardrailService.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/GuardrailService.java
index 00e96673..524f47cc 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/GuardrailService.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/GuardrailService.java
@@ -17,7 +17,7 @@ package io.shinhanlife.dap.mcg.guardrail;
*/
import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.ObjectNode;
import org.springframework.stereotype.Service;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/ToolResponseGuardrailService.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/ToolResponseGuardrailService.java
index 77592f27..d00902da 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/ToolResponseGuardrailService.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/guardrail/ToolResponseGuardrailService.java
@@ -17,7 +17,7 @@ package io.shinhanlife.dap.mcg.guardrail;
*/
import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import org.springframework.stereotype.Service;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ChatController.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ChatController.java
index 4263a979..492407cf 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ChatController.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ChatController.java
@@ -16,7 +16,7 @@ package io.shinhanlife.dap.mcg.presentation;
*
*/
import io.shinhanlife.dap.lib.adapter.dto.JsonRpcResponse;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
import io.shinhanlife.dap.mcg.service.ExecuteService;
import lombok.RequiredArgsConstructor;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/McpRouterController.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/McpRouterController.java
index 4cc5ca9f..99773b7a 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/McpRouterController.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/McpRouterController.java
@@ -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.Params;
import io.shinhanlife.dap.mcg.config.GatewayFallbackProperties;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
import io.shinhanlife.dap.mcg.service.ExecuteService;
import io.shinhanlife.dap.lib.mcp.security.SecurityProperties;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/redis/RedisToolTraceService.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/redis/RedisToolTraceService.java
index ccd71bd6..ab182375 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/redis/RedisToolTraceService.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/redis/RedisToolTraceService.java
@@ -17,7 +17,7 @@ package io.shinhanlife.dap.mcg.redis;
*/
import io.shinhanlife.dap.mcg.config.McpGatewayProperties;
import io.shinhanlife.dap.mcg.security.McpRequestContext;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.ObjectProvider;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/RedisRegistryService.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/RedisRegistryService.java
index 55953f29..73c3899f 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/RedisRegistryService.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/RedisRegistryService.java
@@ -1,6 +1,6 @@
package io.shinhanlife.dap.mcg.registry;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.core.RedisTemplate;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/security/ToolAuthorizationService.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/security/ToolAuthorizationService.java
index 368f3c76..15b234a6 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/security/ToolAuthorizationService.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/security/ToolAuthorizationService.java
@@ -19,7 +19,7 @@ import io.shinhanlife.dap.mcg.config.McpGatewayProperties;
import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
import io.shinhanlife.dap.lib.dto.OperationType;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import org.springframework.stereotype.Service;
import java.util.Set;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ExecuteService.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ExecuteService.java
index f3f2c380..758dc7c1 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ExecuteService.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ExecuteService.java
@@ -17,7 +17,7 @@ package io.shinhanlife.dap.mcg.service;
*/
import java.util.HashMap;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.RetryPolicy;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ToolPlanner.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ToolPlanner.java
index fd27ee12..f5971eab 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ToolPlanner.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/service/ToolPlanner.java
@@ -2,7 +2,7 @@ package io.shinhanlife.dap.mcg.service;
import io.shinhanlife.dap.lib.mcp.security.SecurityProperties;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.config.GatewayFallbackProperties;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/DynamicMcpServerManager.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/DynamicMcpServerManager.java
index 0f43697a..e93a2e9d 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/DynamicMcpServerManager.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/DynamicMcpServerManager.java
@@ -18,7 +18,7 @@ package io.shinhanlife.dap.mcg.sync;
import io.modelcontextprotocol.spec.McpSchema.ServerCapabilities;
import io.modelcontextprotocol.server.McpServer;
import io.modelcontextprotocol.server.McpSyncServer;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.sync.CustomWebMvcSseServerTransportProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSpecificationFactory.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSpecificationFactory.java
index bf8ed511..36d3e43c 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSpecificationFactory.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSpecificationFactory.java
@@ -15,7 +15,7 @@ package io.shinhanlife.dap.mcg.sync;
*
*
*/
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.service.ExecuteService;
import io.modelcontextprotocol.server.McpServerFeatures;
import io.modelcontextprotocol.spec.McpSchema;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSynchronizer.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSynchronizer.java
index 73a2a636..06134996 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSynchronizer.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/RegistryMcpToolSynchronizer.java
@@ -1,6 +1,6 @@
package io.shinhanlife.dap.mcg.sync;
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.registry.RedisRegistryService;
import io.modelcontextprotocol.server.McpSyncServer;
import org.slf4j.Logger;
diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/tool/large/PaginationRequestValidator.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/tool/large/PaginationRequestValidator.java
index cee3eaf6..57878a2d 100644
--- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/tool/large/PaginationRequestValidator.java
+++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/tool/large/PaginationRequestValidator.java
@@ -15,7 +15,7 @@ package io.shinhanlife.dap.mcg.tool.large;
*
*
*/
-import io.shinhanlife.dap.lib.dto.ToolMetadata;
+import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dap.mcg.config.McpGatewayProperties;
import io.shinhanlife.dap.mcg.resilience.FailureType;
import io.shinhanlife.dap.mcg.resilience.ToolExecutionException;
diff --git a/dap-gateway/src/main/resources/mapper/ZtUsacRepository.xml b/dap-gateway/src/main/resources/mapper/ZtUsacRepository.xml
deleted file mode 100644
index 285cc09c..00000000
--- a/dap-gateway/src/main/resources/mapper/ZtUsacRepository.xml
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@Mapper(componentModel = "spring") -public abstract class ZtUsacConverter { - - @Mapping(target = "loginDtm", ignore = true) - @Mapping(target = "isManager", ignore = true) - public abstract SessionDto toSessionDto(ZtUsacOutDto dto); - -} \ No newline at end of file diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/model/ZtUsacModel.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/model/ZtUsacModel.java deleted file mode 100644 index 7c16b1c4..00000000 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/model/ZtUsacModel.java +++ /dev/null @@ -1,51 +0,0 @@ -package io.shinhanlife.dap.lib.session.domain.model; - -import io.shinhanlife.glow.db.dto.AuditInfo; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -/** - * @package io.shinhanlife.dap.lib.session.domain.model - * @className ZtUsacModel - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@Getter -@Builder -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -public class ZtUsacModel extends AuditInfo { - - /* 인사번호 */ - private String prafNo; - /* 인사명 */ - private String prafNm; - /* 조직번호 */ - private String ognzNo; - /* 이메일주소 */ - private String addre; - /* 인사직무코드 */ - private String prafOfduCd; - /* 인사직무명 */ - private String prafOfduNm; - /* 인사직급코드 */ - private String prafOfleCd; - /* 인사직급명 */ - private String prafOfleNm; - /* 인사직책코드 */ - private String prafDutyCd; - /* 인사직책명 */ - private String prafDutyNm; - -} \ No newline at end of file diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/repository/ZtUsacRepository.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/repository/ZtUsacRepository.java deleted file mode 100644 index c300bbb4..00000000 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/repository/ZtUsacRepository.java +++ /dev/null @@ -1,33 +0,0 @@ -package io.shinhanlife.dap.lib.session.domain.repository; - -import io.shinhanlife.glow.GlowMybatisMapper; -import io.shinhanlife.dap.lib.session.dto.ZtUsacInDto; -import io.shinhanlife.dap.lib.session.dto.ZtUsacOutDto; - - -/** - * @package io.shinhanlife.dap.lib.session.domain.repository - * @className ZtUsacRepository - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@GlowMybatisMapper -public interface ZtUsacRepository { - - /** - * 사용자 조회 (단건) - * - * @param dto 사번 - * @return 인사정보 - */ - ZtUsacOutDto selectZtUsac(ZtUsacInDto dto); - -} \ No newline at end of file diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/usecase/ZtUsacUseCase.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/usecase/ZtUsacUseCase.java deleted file mode 100644 index 235a75d1..00000000 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/usecase/ZtUsacUseCase.java +++ /dev/null @@ -1,29 +0,0 @@ -package io.shinhanlife.dap.lib.session.domain.usecase; - -import io.shinhanlife.dap.lib.session.dto.ZtUsacInDto; -import io.shinhanlife.dap.lib.session.dto.ZtUsacOutDto; - -/** - * @package io.shinhanlife.dap.lib.session.domain.service - * @className ZtUsacUseCase - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -public interface ZtUsacUseCase { - - /** - * 사용자 조회 (단건) - * - * @param dto 사번 - * @return 인사정보 - */ - ZtUsacOutDto selectZtUsac(ZtUsacInDto dto); -} diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/usecase/impl/ZtUsacUseCaseImpl.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/usecase/impl/ZtUsacUseCaseImpl.java deleted file mode 100644 index 5486fb8b..00000000 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/domain/usecase/impl/ZtUsacUseCaseImpl.java +++ /dev/null @@ -1,42 +0,0 @@ -package io.shinhanlife.dap.lib.session.domain.usecase.impl; - -import io.shinhanlife.dap.lib.session.domain.repository.ZtUsacRepository; -import io.shinhanlife.dap.lib.session.domain.usecase.ZtUsacUseCase; -import io.shinhanlife.dap.lib.session.dto.ZtUsacInDto; -import io.shinhanlife.dap.lib.session.dto.ZtUsacOutDto; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; - -/** - * @package io.shinhanlife.dap.lib.session.domain.usecase.impl - * @className ZtUsacUseCaseImpl - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@Service -@RequiredArgsConstructor -public class ZtUsacUseCaseImpl implements ZtUsacUseCase { - - private final ZtUsacRepository ztUsacRepository; - - /** - * 사용자 조회 (단건) - * - * @param dto 사번 - * @return 인사정보 - */ - @Override - public ZtUsacOutDto selectZtUsac(ZtUsacInDto dto) { - ZtUsacOutDto result = ztUsacRepository.selectZtUsac(dto); - result.initLists(); - return result; - } -} \ No newline at end of file diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/dto/ZtUsacInDto.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/dto/ZtUsacInDto.java deleted file mode 100644 index 954b9715..00000000 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/dto/ZtUsacInDto.java +++ /dev/null @@ -1,37 +0,0 @@ -package io.shinhanlife.dap.lib.session.dto; - -import lombok.NoArgsConstructor; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.Setter; - -/** - * @package io.shinhanlife.dap.lib.session.dto - * @className ZtUsacInDto - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@Getter -@Setter -@Builder -@AllArgsConstructor -@NoArgsConstructor -public class ZtUsacInDto { - /* 인사번호 */ - private String prafNo; - - /* 사용여부 */ - @Builder.Default - private String puseYn = "Y"; - -} \ No newline at end of file diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/dto/ZtUsacOutDto.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/dto/ZtUsacOutDto.java deleted file mode 100644 index b52e3b76..00000000 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/session/dto/ZtUsacOutDto.java +++ /dev/null @@ -1,85 +0,0 @@ -package io.shinhanlife.dap.lib.session.dto; - -import lombok.Setter; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import lombok.AccessLevel; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; -import lombok.NoArgsConstructor; - -/** - * @package io.shinhanlife.dap.lib.session.dto - * @className ZtUsacOutDto - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@Getter -@Builder -@NoArgsConstructor(access = AccessLevel.PROTECTED) -@AllArgsConstructor -@Setter -public class ZtUsacOutDto { - - /* 인사번호 */ - private String prafNo; - /* 인사명 */ - private String prafNm; - /* 조직번호 */ - private String ognzNo; - /* 조직명 */ - private String ognzNm; - /* 이메일주소 */ -// @GlowSecureField(type = DataSecureType.DECRYPT_DB, direction = SafeDBType.COMM) TODO 방화벽 뚫리면 확인 - private String addre; - /* 인사직무코드 */ - private String prafOfduCd; - /* 인사직무명 */ - private String prafOfduNm; - /* 인사직급코드 */ - private String prafOfleCd; - /* 인사직급명 */ - private String prafOfleNm; - /* 인사직책코드 */ - private String prafDutyCd; - /* 인사직책명 */ - private String prafDutyNm; - /* 사용여부 */ - private String puseYn; - - private String roleNoStrList; - private String roleNmStrList; - private String tgtrPrafNoStrList; - private String tgtrOgnzNoStrList; - - private List
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@RestController -@RequiredArgsConstructor -@Slf4j -@RequestMapping("/sso") -public class SsoRestController { - - private static final String NLS_LOGIN_URL = ""; - private final ZtUsacUseCase ztUsacService; - private final ZtUsacConverter ztUsacConverter; - - /** - * sso 연동 전 임시 로그인 - * - * @param request - * @param response - * @param session - * @param
- * ---------- 개정이력 ---------- - * 수정일 수정자 수정내용 - * ---------- -------- --------------------------- - * 2026.09.01 0986406 최초생성 - * - *- */ -@Getter -@Setter -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class SsoResponse { - - private String retCode; - private SessionDto userInfo; - private String redirectUrl; - -} \ No newline at end of file diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java index 3fa3eebf..80357e4f 100644 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java @@ -330,7 +330,7 @@ public class ToolScaffolder { import %s.dto.%sRequest; import %s.dto.%sResponse; import %s.usecase.%sUseCase; - import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; + import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import %s.converter.%sConverter; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/dto/ToolMetadata.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/dto/ToolMetadata.java similarity index 98% rename from dap-was-lib/src/main/java/io/shinhanlife/dap/lib/dto/ToolMetadata.java rename to dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/dto/ToolMetadata.java index b498032d..44e9f7d9 100644 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/dto/ToolMetadata.java +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/dto/ToolMetadata.java @@ -1,4 +1,4 @@ -package io.shinhanlife.dap.lib.dto; +package io.shinhanlife.dap.mcc.dto; import lombok.Getter; import lombok.Setter; @@ -12,6 +12,7 @@ import java.util.Map; import java.util.Set; import java.util.List; import java.util.HashSet; +import io.shinhanlife.dap.lib.dto.OperationType; /** * Tool(Agent)의 명세 및 라우팅 정보를 담고 있는 메타데이터 클래스 * Redis 레지스트리에 저장되며, Planner와 Router 간의 통신 객체(Plan)로 사용됩니다. diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java index 5eb1db02..a998ad79 100644 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java @@ -21,8 +21,8 @@ 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.config.McpProperties; -import io.shinhanlife.dap.lib.dto.ToolMetadata; -import io.shinhanlife.dap.lib.usecase.ToolRegistryHeartbeatSender; +import io.shinhanlife.dap.mcc.dto.ToolMetadata; +import io.shinhanlife.dap.lib.mcp.ToolRegistryHeartbeatSender; import io.shinhanlife.dap.lib.util.ToolSchemaResolver; import java.lang.reflect.Method; import java.util.ArrayList; diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/usecase/AbstractMcpToolUseCase.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/usecase/AbstractMcpToolUseCase.java similarity index 98% rename from dap-was-lib/src/main/java/io/shinhanlife/dap/lib/usecase/AbstractMcpToolUseCase.java rename to dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/usecase/AbstractMcpToolUseCase.java index 8dbb8210..a8729653 100644 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/usecase/AbstractMcpToolUseCase.java +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/usecase/AbstractMcpToolUseCase.java @@ -1,4 +1,4 @@ -package io.shinhanlife.dap.lib.usecase; +package io.shinhanlife.dap.mcc.usecase; import io.shinhanlife.dap.lib.adapter.connector.LegacyEimsConnector; import io.shinhanlife.dap.lib.adapter.util.PiiMaskingUtils; diff --git a/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/manifest/ToolManifestServiceTest.java b/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/manifest/ToolManifestServiceTest.java index a17c484b..6efc38ec 100644 --- a/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/manifest/ToolManifestServiceTest.java +++ b/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/manifest/ToolManifestServiceTest.java @@ -6,7 +6,7 @@ import static org.junit.jupiter.api.Assertions.assertTrue; import com.fasterxml.jackson.databind.ObjectMapper; import io.shinhanlife.dap.lib.config.McpProperties; -import io.shinhanlife.dap.lib.dto.ToolMetadata; +import io.shinhanlife.dap.mcc.dto.ToolMetadata; import java.util.List; import java.util.Map; import org.junit.jupiter.api.Test; diff --git a/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/McpRequestHeaderFilterTest.java b/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/McpRequestHeaderFilterTest.java index 87071e90..59bc1597 100644 --- a/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/McpRequestHeaderFilterTest.java +++ b/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/McpRequestHeaderFilterTest.java @@ -11,7 +11,7 @@ import static org.mockito.Mockito.when; import com.fasterxml.jackson.databind.ObjectMapper; import io.modelcontextprotocol.server.McpSyncServer; import io.shinhanlife.dap.mcc.presentation.BusinessToolController; -import io.shinhanlife.dap.lib.usecase.ToolRegistryHeartbeatSender; +import io.shinhanlife.dap.lib.mcp.ToolRegistryHeartbeatSender; import java.lang.reflect.Method; import java.util.Map; import org.junit.jupiter.api.Test; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BalanceUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BalanceUseCaseImpl.java index 7e9e0c46..0c49a90a 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BalanceUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BalanceUseCaseImpl.java @@ -16,7 +16,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; * */ import io.shinhanlife.dap.mcc.biz.cmm.usecase.BalanceUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.mcc.biz.cmm.dto.BalanceRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BillingProcessUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BillingProcessUseCaseImpl.java index 890c07bc..bf81db59 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BillingProcessUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BillingProcessUseCaseImpl.java @@ -3,7 +3,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import io.shinhanlife.dap.mcc.biz.cmm.usecase.BillingProcessUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import org.springframework.stereotype.Service; import io.shinhanlife.dap.mcc.biz.cmm.dto.BillingProcessRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.BillingStatusRequest; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BondIssueUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BondIssueUseCaseImpl.java index 2d74f8e6..9851714b 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BondIssueUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/BondIssueUseCaseImpl.java @@ -1,7 +1,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; import io.shinhanlife.dap.mcc.biz.cmm.usecase.BondIssueUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import org.springframework.stereotype.Service; import io.shinhanlife.dap.mcc.biz.cmm.dto.BondCheckRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.BondIssueRequest; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CommonUtilityUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CommonUtilityUseCaseImpl.java index aad892a7..56a600a3 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CommonUtilityUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CommonUtilityUseCaseImpl.java @@ -1,7 +1,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; import io.shinhanlife.dap.mcc.biz.cmm.usecase.CommonUtilityUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import org.springframework.stereotype.Service; import io.shinhanlife.dap.mcc.biz.cmm.dto.LeaveCountRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.VacationRegisterRequest; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ContractInquiryUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ContractInquiryUseCaseImpl.java index 17b858a3..403f1556 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ContractInquiryUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ContractInquiryUseCaseImpl.java @@ -1,7 +1,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; import io.shinhanlife.dap.mcc.biz.cmm.usecase.ContractInquiryUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import org.springframework.stereotype.Service; import io.shinhanlife.dap.mcc.biz.cmm.dto.ContractDetailRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.ContractStatusRequest; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerInfoUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerInfoUseCaseImpl.java index f5cc9a44..cb06f623 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerInfoUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerInfoUseCaseImpl.java @@ -1,7 +1,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; import io.shinhanlife.dap.mcc.biz.cmm.usecase.CustomerInfoUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import org.springframework.stereotype.Service; import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerDetailRequest; import io.shinhanlife.dap.mcc.biz.cmm.dto.CustomerGradeRequest; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java index 13594d63..42a9505b 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java @@ -1,7 +1,7 @@ package io.shinhanlife.dap.mcc.biz.cmm.usecase.impl; import io.shinhanlife.dap.mcc.biz.cmm.usecase.TemplateUtilityUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.mcc.biz.cmm.dto.TemplateDownloadRequest; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java index a65f537b..36059326 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java @@ -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.DailyQuoteResponse; import io.shinhanlife.dap.mcc.biz.smp.usecase.DailyQuoteToolUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java index d7ac0421..10853b02 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java @@ -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.ExchangeRateResponse; import io.shinhanlife.dap.mcc.biz.smp.usecase.ExchangeRateToolUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java index a6f79be1..19d1e25f 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java @@ -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.TeamMemberResponse; import io.shinhanlife.dap.mcc.biz.smp.usecase.TeamMemberUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java index 05c38727..b581199c 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java +++ b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java @@ -3,7 +3,7 @@ package io.shinhanlife.dap.mcc.biz.smp.usecase.impl; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; import io.shinhanlife.dap.mcc.biz.smp.usecase.WeatherToolUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherRequest; import io.shinhanlife.dap.mcc.biz.smp.dto.WeatherResponse; import lombok.extern.slf4j.Slf4j; diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/sms/usecase/impl/SmsToolUseCaseImpl.java b/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/sms/usecase/impl/SmsToolUseCaseImpl.java index 35708843..38585687 100644 --- a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/sms/usecase/impl/SmsToolUseCaseImpl.java +++ b/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/sms/usecase/impl/SmsToolUseCaseImpl.java @@ -1,7 +1,7 @@ package io.shinhanlife.dap.mcc.biz.sms.usecase.impl; import io.shinhanlife.dap.mcc.biz.sms.usecase.SmsToolUseCase; -import io.shinhanlife.dap.lib.usecase.AbstractMcpToolUseCase; +import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import org.springframework.stereotype.Service; import io.shinhanlife.dap.mcc.biz.sms.converter.SmsLegacyConverter; import io.shinhanlife.dap.mcc.biz.sms.dto.SmsSendRequest; diff --git a/manifest_output.json b/manifest_output.json new file mode 100644 index 00000000..b8125795 --- /dev/null +++ b/manifest_output.json @@ -0,0 +1,606 @@ +{ + "bundleId": "tool-oth", + "revision": "1785826298946", + "tools": [ + { + "name": "balance", + "endpoint": "http://localhost:8084/mcp/balance", + "title": "balance í´", + "description": "ê³ ê°ì ê³ì¢ ìì¡ì ì¡°íí©ëë¤.", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "accountNumber": { + "type": "string", + "pattern": "\\S", + "description": "ê³ ê°ì ê³ì¢ë²í¸ (- ì ì¸) " + } + }, + "required": [ + "accountNumber" + ] + }, + "annotations": { + "title": "balance í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "billing_process", + "endpoint": "http://localhost:8084/mcp/billing_process", + "title": "process í´", + "description": "ì²êµ¬ ì²ë¦¬", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "approvalStatus": { + "type": "string", + "description": "ì¬ì¬ ì¹ì¸ ì¬ë¶ (ì: APPROVE, REJECT)", + "enum": [ + "APPROVE", + "REJECT" + ] + }, + "billingId": { + "type": "string", + "pattern": "\\S", + "description": "ì²ë¦¬í ì²êµ¬ ì ì ë²í¸" + } + }, + "required": [ + "billingId", + "approvalStatus" + ] + }, + "annotations": { + "title": "process í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "bond_issue", + "endpoint": "http://localhost:8084/mcp/bond_issue", + "title": "issue í´", + "description": "ì¦ê¶ ë°í í\u0085ì¤í¸1", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "amount": { + "type": "integer", + "description": "ë°íí ëì§í¸ ì¦ê¶ ê¸ì¡", + "minimum": 1 + }, + "targetAccount": { + "type": "string", + "pattern": "\\S", + "description": "ë°í ëì ê³ì¢ ë²í¸" + } + }, + "required": [ + "amount", + "targetAccount" + ] + }, + "annotations": { + "title": "issue í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "contract_detail", + "endpoint": "http://localhost:8084/mcp/contract_detail", + "title": "contract_detail í´", + "description": "ê³ì½ìì¸ ì¡°í", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "contractId": { + "type": "string", + "description": "ì¡°íí ê³ì½ ë²í¸" + }, + "customerName": { + "type": "string", + "description": "ê³ ê°ëª\u0085" + } + }, + "required": [ + "customerName", + "contractId" + ] + }, + "annotations": { + "title": "contract_detail í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "customer_detail", + "endpoint": "http://localhost:8084/mcp/customer_detail", + "title": "detail í´", + "description": "ê³ ê°ìì¸ ì ë³´ ì¡°í", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "customerId": { + "type": "string", + "description": "ê³ ê° ìë³ ë²í¸ (CID)" + }, + "customerName": { + "type": "string", + "description": "ê³ ê°ëª\u0085" + } + }, + "required": [ + "customerName" + ] + }, + "annotations": { + "title": "detail í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "daily_quote", + "endpoint": "http://localhost:8084/mcp/daily_quote", + "title": "ëë¤ ëª\u0085ì¸ í´", + "description": "무ììë¡ ìê°ì 주ë ëª\u0085ì¸ì íë ê°ì ¸ìµëë¤.", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "category" + } + } + }, + "annotations": { + "title": "ëë¤ ëª\u0085ì¸ í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "exchange_rate", + "endpoint": "http://localhost:8084/mcp/exchange_rate", + "title": "ì¤ìê° íì¨ ì¡°í í´", + "description": "ìíë íµíì ì¤ìê° íì¨ì ì¡°íí©ëë¤. (ì: USD, EUR, JPY)", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "currencyCode": { + "type": "string", + "description": "currencyCode" + } + } + }, + "annotations": { + "title": "ì¤ìê° íì¨ ì¡°í í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "get_leave_count", + "endpoint": "http://localhost:8084/mcp/get_leave_count", + "title": "get_leave_count í´", + "description": "ì°ì°¨ ê°¯ì ì¡°í", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "employeeId": { + "type": "string", + "description": "ì°ì°¨ ë´ìì ì¡°íí ì¬ì ë²í¸" + } + }, + "required": [ + "employeeId" + ] + }, + "annotations": { + "title": "get_leave_count í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "get_smp_members", + "endpoint": "http://localhost:8084/mcp/get_smp_members", + "title": "ì íë¼ì´í MCP, TOOL íí¸ êµ¬ì±ì ì¡°í", + "description": "ì íë¼ì´í MCP, TOOL íí¸ êµ¬ì±ìì ì¡°íí©ëë¤.", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "teamName": { + "type": "string", + "description": "ì¡°íí í ì´ë¦ (ì: AX, MCP, TOOL, ì ì²´ ë±)" + } + } + }, + "annotations": { + "title": "ì íë¼ì´í MCP, TOOL íí¸ êµ¬ì±ì ì¡°í", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": true + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "get_template_file_url", + "endpoint": "http://localhost:8084/mcp/get_template_file_url", + "title": "í\u0085í릿 ì í¸ë¦¬í°", + "description": "ìì²í í\u0085í릿(ìì\u0085, ìë ë±) íì¼(ìì)ì ë¤ì´ë¡ë ë°ì ì ìë ìì¤í\u0085 URLì ë°íí©ëë¤. AIë ì´ URLì ì¬ì©ììê² ë§í¬ë¤ì´ ë§í¬ ííë¡ ì ê³µí´ì¼ í©ëë¤.", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "templateId": { + "type": "string", + "description": "templateId" + } + } + }, + "annotations": { + "title": "í\u0085í릿 ì í¸ë¦¬í°", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "metaCommonCode", + "endpoint": "http://localhost:8084/mcp/metaCommonCode", + "title": "ë©í íµí©ì½ë ì¡°í í´", + "description": "ë©í íµí©ì½ë 목ë¡ì ì¡°íí´ì¤", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "codeName": { + "type": "string", + "description": "ì½ëëª\u0085 ê²ì í¤ìë (ì: ì¬ì©, ìí)" + }, + "useYn": { + "type": "string", + "description": "ì¬ì©ì¬ë¶ (ì: Y, N)" + }, + "groupCode": { + "type": "string", + "description": "íµí©ì½ë 그룹 ID (ì: GRP_SYS_01, GRP_COMM_CD)" + } + } + }, + "annotations": { + "title": "ë©í íµí©ì½ë ì¡°í í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": true + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "metaTable", + "endpoint": "http://localhost:8084/mcp/metaTable", + "title": "ë©í í\u0085ì´ë¸ ì¡°í í´", + "description": "ë©í í\u0085ì´ë¸ ì ë³´ 목ë¡ì ì¡°íí´ì¤", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "tableLogicalName": { + "type": "string", + "description": "í\u0085ì´ë¸ ë\u0085¼ë¦¬ëª\u0085(íê¸) í¤ìë (ì: ê³ ê°ê¸°ë³¸, ê³ì½)" + }, + "owner": { + "type": "string", + "description": "ì¤í¤ë§/ìì ìëª\u0085 (ì: DAPADM, SHLOWN)" + }, + "tableName": { + "type": "string", + "description": "í\u0085ì´ë¸ 물리ëª\u0085 í¤ìë (ì: TB_CUST_BAS, TB_CONT)" + } + } + }, + "annotations": { + "title": "ë©í í\u0085ì´ë¸ ì¡°í í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": true + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "sample.claim.search.resource", + "endpoint": "http://localhost:8084/mcp/sample.claim.search.resource", + "title": "Claim search JSON Schema sample", + "description": "Claim search Tool sample using input and output JSON Schema resources.", + "inputSchema": { + "$schema": "https://json-schema.org/draft/2020-12/schema", + "type": "object", + "properties": { + "claimNo": { + "type": "string", + "description": "ì²êµ¬ë²í¸. CLM ë¤ì ì«ì 13ì리 íìì´ë¤.", + "pattern": "^CLM[0-9]{13}$", + "examples": [ + "CLM2026070100123" + ] + }, + "contractNo": { + "type": "string", + "description": "ê³ì½ë²í¸. ì«ì 11ì리 íìì´ë¤.", + "pattern": "^[0-9]{11}$", + "examples": [ + "10023456789" + ] + }, + "status": { + "type": "string", + "enum": [ + "RECEIVED", + "REVIEWING", + "ADDITIONAL_DOC_REQUIRED", + "APPROVED", + "PAID", + "REJECTED", + "WITHDRAWN" + ] + }, + "size": { + "type": "integer", + "minimum": 1, + "maximum": 50, + "default": 20 + } + }, + "required": [ + + ], + "additionalProperties": false, + "anyOf": [ + { + "required": [ + "claimNo" + ] + }, + { + "required": [ + "contractNo" + ] + } + ] + }, + "annotations": { + "title": "Claim search JSON Schema sample", + "readOnlyHint": true, + "destructiveHint": false, + "idempotentHint": true, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "secret_tool", + "endpoint": "http://localhost:8084/mcp/secret_tool", + "title": "secret_tool í´", + "description": "ë¹ê³µê° í´ í\u0085ì¤í¸", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "employeeId": { + "type": "string", + "description": "ì°ì°¨ ë´ìì ì¡°íí ì¬ì ë²í¸" + } + }, + "required": [ + "employeeId" + ] + }, + "annotations": { + "title": "secret_tool í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "solReqDetail", + "endpoint": "http://localhost:8084/mcp/solReqDetail", + "title": "SolReqDetail í´", + "description": "SOL ì뢰ì ìì¸ ì¡°í", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "srId": { + "type": "string", + "description": "ìì¸ ì¡°íí SOL ì뢰ì ID" + } + }, + "required": [ + "srId" + ] + }, + "annotations": { + "title": "SolReqDetail í´", + "readOnlyHint": true, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": true + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "solReqList", + "endpoint": "http://localhost:8084/mcp/solReqList", + "title": "SolReqList í´", + "description": "SOL ì뢰ì ëª©ë¡ ì¡°íí´ì¤", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "period": { + "type": "string", + "description": "ì¡°íê¸°ê° (ì: 1ê°ì, 3ê°ì ë±)" + }, + "status": { + "type": "string", + "description": "ì§íìí (ì: ì§íì¤, ìë£ ë±)" + }, + "target": { + "type": "string", + "description": "ì¡°íëì (ì: ëì ì\u0085무, ì ì²´ ë±)" + } + } + }, + "annotations": { + "title": "SolReqList í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": true + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + }, + { + "name": "weather", + "endpoint": "http://localhost:8084/mcp/weather", + "title": "ë ì¨ ì¡°í í´", + "description": "í¹ì ëìì íì¬ ë ì¨, ì¨ë, íì ì 보를 ì¡°íí©ëë¤.", + "inputSchema": { + "additionalProperties": false, + "type": "object", + "properties": { + "city": { + "type": "string", + "description": "ë ì¨ë¥¼ ì¡°íí ëì ì´ë¦ (ì: ìì¸, ë¶ì°, ì 주)" + } + }, + "required": [ + "city" + ] + }, + "annotations": { + "title": "ë ì¨ ì¡°í í´", + "readOnlyHint": false, + "destructiveHint": false, + "idempotentHint": false, + "openWorldHint": false + }, + "_meta": { + "version": "1.0.0", + "timeoutMillis": 300000, + "enabled": true + } + } + ] +} \ No newline at end of file diff --git a/recent_changes.diff b/recent_changes.diff new file mode 100644 index 00000000..119d7ac8 --- /dev/null +++ b/recent_changes.diff @@ -0,0 +1,715 @@ +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 c7251dd..6ee5f33 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 +@@ -39,6 +39,17 @@ public @interface McpFunction { + */ + // 異붽?: Redis ?먮룞 ?깅줉 諛?Heartbeat ????щ? ?쒖뼱 + String inputSchemaResource() default ""; ++ ++ /** ++ * Tool response JSON Schema. When unset, output validation is skipped. ++ */ ++ String outputSchema() default "{}"; ++ ++ /** ++ * Classpath resource for a complex Tool response JSON Schema. ++ * This value has priority over outputSchema. ++ */ ++ String outputSchemaResource() default ""; + boolean register() default false; + + // 異붽?: ??紐⑸줉 ?몄텧 ?щ? ?쒖뼱 (false ???쇱슦?낆? ?섎굹 紐⑸줉?먯꽌 ?④?) +diff --git a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpOutputSchema.java b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpOutputSchema.java +new file mode 100644 +index 0000000..cfb37dc +--- /dev/null ++++ b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/annotation/McpOutputSchema.java +@@ -0,0 +1,17 @@ ++package io.shinhanlife.dap.lib.annotation; ++ ++import java.lang.annotation.Documented; ++import java.lang.annotation.ElementType; ++import java.lang.annotation.Retention; ++import java.lang.annotation.RetentionPolicy; ++import java.lang.annotation.Target; ++ ++/** ++ * Marks a Tool response DTO for automatic output JSON Schema generation. ++ * Field constraints are declared with {@link McpValidation}. ++ */ ++@Target(ElementType.TYPE) ++@Retention(RetentionPolicy.RUNTIME) ++@Documented ++public @interface McpOutputSchema { ++} +\ No newline at end of file +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 ecf23c8..4353edf 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 +@@ -31,6 +31,6 @@ public @interface McpValidation { + int maxLength() default -1; + String[] allowedValues() default {}; + String format() default ""; +- String defaultValue() default ""; ++ boolean nullable() default false; 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 a90efa0..d95dae6 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 +@@ -103,6 +103,14 @@ public class JsonSchemaGenerator { + if (validation != null && validation.examples().length > 0) { + fieldSchema.put("examples", List.of(validation.examples())); + } ++ if (validation != null && validation.nullable()) { ++ Map