diff --git a/README.md b/README.md index f168236b..b3246548 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,27 @@ # AX HUB MCP Tool Platform +## Current Tool Pod modules + +| Pod role | Gradle module | Container service | Internal endpoint | Local Docker endpoint | +|---|---|---|---|---| +| Customer/common integration | `dap-was-cus` | `was-cus` | `http://was-cus:8084/mcp` | `http://localhost:8284/mcp` | +| Sales/notification integration | `dap-was-sal` | `was-sal` | `http://was-sal:8082/mcp` | `http://localhost:8282/mcp` | +| Process integration (new) | `dap-was-pro` | `was-pro` | `http://was-pro:8085/mcp` | `http://localhost:8085/mcp` | +| System integration (new) | `dap-was-sys` | `was-sys` | `http://was-sys:8086/mcp` | `http://localhost:8086/mcp` | + +- The former `dap-was-oth` module is now `dap-was-cus`; the former `dap-was-sms` module is now `dap-was-sal`. +- This is a deployment Pod rename only. Existing tool category and function names such as `oth_*` and `sms_*` remain valid so already registered MCP clients are not broken. +- `dap-was-pro` and `dap-was-sys` are empty, independently deployable Tool Pods ready for new business tools. + +### Run the Tool Pods locally + +```powershell +.\gradlew.bat :dap-was-cus:bootRun +.\gradlew.bat :dap-was-sal:bootRun +.\gradlew.bat :dap-was-pro:bootRun +.\gradlew.bat :dap-was-sys:bootRun +``` + AX HUB에서 AI Agent가 업무 Tool을 검색하고 호출할 수 있도록 Gateway와 독립 Tool Pod를 제공하는 멀티 모듈 Spring Boot 프로젝트입니다. ## 1. 현재 구성 @@ -61,8 +83,10 @@ $env:OPENROUTER_API_KEY = '<발급받은-키>' ```powershell .\gradlew.bat :dap-gateway:bootRun -.\gradlew.bat :dap-was-sms:bootRun -.\gradlew.bat :dap-was-oth:bootRun +.\gradlew.bat :dap-was-sal:bootRun +.\gradlew.bat :dap-was-cus:bootRun +.\gradlew.bat :dap-was-pro:bootRun +.\gradlew.bat :dap-was-sys:bootRun ``` ### 4.2 Docker Compose 실행 @@ -227,8 +251,10 @@ https://dev-ichmci.shinhanlife.co.kr/ntl_mci/clc_rcv ```powershell .\gradlew.bat :dap-was-lib:test -.\gradlew.bat :dap-was-oth:compileJava -.\gradlew.bat :dap-was-sms:compileJava +.\gradlew.bat :dap-was-cus:compileJava +.\gradlew.bat :dap-was-sal:compileJava +.\gradlew.bat :dap-was-pro:compileJava +.\gradlew.bat :dap-was-sys:compileJava .\gradlew.bat validateMcpToolNames ``` diff --git a/build.gradle b/build.gradle index d4f2318f..c2758d33 100644 --- a/build.gradle +++ b/build.gradle @@ -38,8 +38,14 @@ subprojects { // Spring Boot 3.5.11과 호환되는 Spring/Jackson/Tomcat 등의 버전을 관리합니다. mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES - // Spring AI, MCP, OpenAI 연동 라이브러리의 호환 버전을 1.1.8로 고정합니다. + // Boot 3.5.11과 호환되는 Spring AI 계층은 1.1.8로 유지합니다. mavenBom 'org.springframework.ai:spring-ai-bom:1.1.8' + + // MCP Java SDK만 2.0.0으로 올립니다. Spring AI 2.x 전체 BOM은 Boot 4 기반이므로 사용하지 않습니다. + mavenBom 'io.modelcontextprotocol.sdk:mcp-bom:2.0.0' + + // MCP SDK 2.0의 Jackson 2 전송 모듈이 요구하는 호환 버전입니다. + mavenBom 'com.fasterxml.jackson:jackson-bom:2.20.1' } } diff --git a/dap-gateway/build.gradle b/dap-gateway/build.gradle index 18d4109f..3737b757 100644 --- a/dap-gateway/build.gradle +++ b/dap-gateway/build.gradle @@ -18,8 +18,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter:3.0.3' - // Gateway가 /mcp Endpoint를 MCP Server로 노출하도록 지원합니다. - implementation 'org.springframework.ai:spring-ai-starter-mcp-server-webmvc' + // Gateway MCP Server/Client는 공통 모듈이 제공하는 MCP Java SDK 2.0.0을 사용합니다. // ChatClient를 통해 OpenAI/OpenRouter 호환 모델을 호출합니다. implementation 'org.springframework.ai:spring-ai-starter-model-openai' 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 14ee2507..60081016 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 @@ -250,13 +250,5 @@ public class McpRouterController { return ResponseEntity.ok("Deregistered"); } - @PostMapping("/registry/heartbeat") - public ResponseEntity heartbeat(@RequestBody String uid) { - boolean success = registryService.refreshHeartbeat(uid); - if (success) { - return ResponseEntity.ok("Heartbeat updated"); - } else { - return ResponseEntity.status(404).body("Tool not found"); - } - } + } \ No newline at end of file diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingController.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingController.java index e75ea148..e1e5448e 100644 --- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingController.java +++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/presentation/ScaffoldingController.java @@ -58,7 +58,7 @@ public class ScaffoldingController { @PostMapping("/pod") public String scaffoldPod(@RequestBody Map req) { try { - String moduleName = req.getOrDefault("moduleName", "dap-was-oth"); + String moduleName = req.getOrDefault("moduleName", "dap-was-cus"); if (!moduleName.startsWith("dap-was-")) moduleName = "dap-was-" + moduleName; String port = req.getOrDefault("port", "8085"); String shortName = moduleName.replace("dap-was-", "").replace("-", ""); @@ -83,7 +83,7 @@ public class ScaffoldingController { String description = req.get("description"); String group = req.getOrDefault("categoryKey", req.getOrDefault("group", "COMMON")); String routingType = req.getOrDefault("routingType", "HTTP"); - String moduleName = req.getOrDefault("moduleName", "dap-was-oth"); + String moduleName = req.getOrDefault("moduleName", "dap-was-cus"); String author = req.get("author"); if (author == null || author.trim().isEmpty()) author = System.getProperty("user.name"); String date = req.get("date"); @@ -124,7 +124,7 @@ public class ScaffoldingController { throw new IllegalArgumentException("UseCase name must be PascalCase."); } String moduleName = request.moduleName() == null || request.moduleName().isBlank() - ? "dap-was-oth" : request.moduleName().trim(); + ? "dap-was-cus" : request.moduleName().trim(); String author = request.author() == null || request.author().isBlank() ? System.getProperty("user.name") : request.author().trim(); String date = request.date() == null || request.date().isBlank() @@ -248,12 +248,12 @@ public class ScaffoldingController { File[] files = dir.listFiles(f -> f.isDirectory() && f.getName().startsWith("dap-was-") && !f.getName().equals("dap-was-lib")); if (files == null || files.length == 0) { - return List.of("dap-was-oth", "dap-was-hr", "dap-was-sms"); + return List.of("dap-was-cus", "dap-was-sal", "dap-was-pro", "dap-was-sys"); } return Arrays.stream(files).map(File::getName).sorted().collect(Collectors.toList()); } catch (Exception e) { - return List.of("dap-was-oth", "dap-was-hr", "dap-was-sms"); + return List.of("dap-was-cus", "dap-was-sal", "dap-was-pro", "dap-was-sys"); } } diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/InMemoryRegistryService.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/InMemoryRegistryService.java index c4f3107b..ea1756fb 100644 --- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/InMemoryRegistryService.java +++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/registry/InMemoryRegistryService.java @@ -30,26 +30,10 @@ public class InMemoryRegistryService { * 툴 등록 및 갱신 */ public void saveTool(ToolMetadata meta) { - meta.setLastHeartbeat(System.currentTimeMillis()); toolCache.put(meta.getUid(), meta); log.info(" [InMemoryRegistry] 툴 등록 완료: {}", meta.getUid()); } - /** - * 하트비트 갱신 (TTL 초기화) - */ - public boolean refreshHeartbeat(String uid) { - ToolMetadata meta = toolCache.get(uid); - if (meta != null) { - meta.setLastHeartbeat(System.currentTimeMillis()); - log.debug(" [InMemoryRegistry] 하트비트 갱신: {}", uid); - return true; - } else { - log.warn(" [InMemoryRegistry] 존재하지 않는 툴에 대한 하트비트 요청: {}", uid); - return false; - } - } - public List getAvailablePods(String uid) { ToolMetadata tool = getTool(uid); if (tool != null && tool.getPodUrl() != null) { @@ -91,21 +75,4 @@ public class InMemoryRegistryService { toolCache.remove(uid); log.info(" [InMemoryRegistry] 툴 삭제 완료: {}", uid); } - - /** - * 만료된 툴을 스케줄러로 삭제합니다. (10초마다 실행) - */ - @Scheduled(fixedRate = 10000) - public void evictExpiredTools() { - long now = System.currentTimeMillis(); - List expiredKeys = toolCache.entrySet().stream() - .filter(entry -> (now - entry.getValue().getLastHeartbeat()) > DEFAULT_TTL_MILLIS) - .map(Map.Entry::getKey) - .collect(Collectors.toList()); - - for (String key : expiredKeys) { - toolCache.remove(key); - log.info(" [InMemoryRegistry] TTL 초과로 툴 자동 삭제: {}", key); - } - } } \ No newline at end of file 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 a07c4163..d8b88857 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 @@ -51,9 +51,15 @@ public class DynamicMcpServerManager { getOrCreateServer("common"); getOrCreateServer("hr"); getOrCreateServer("payment"); + // Tool category names are not Pod names. Keep existing external category + // endpoints available while the SMS/OTH Pods transition to SAL/CUS. getOrCreateServer("sms"); - getOrCreateServer("email"); getOrCreateServer("oth"); + getOrCreateServer("sal"); + getOrCreateServer("email"); + getOrCreateServer("cus"); + getOrCreateServer("pro"); + getOrCreateServer("sys"); getOrCreateServer("sample"); getOrCreateServer("smp"); // smp 카테고리도 기본적으로 항상 열어두도록 추가 } diff --git a/dap-gateway/src/main/resources/application-dev.yml b/dap-gateway/src/main/resources/application-dev.yml index f8519738..69932636 100644 --- a/dap-gateway/src/main/resources/application-dev.yml +++ b/dap-gateway/src/main/resources/application-dev.yml @@ -10,10 +10,15 @@ mcp: gateway: fallback: - default-url: http://was-oth:8084 + default-url: http://was-cus:8084 routes: - sms: http://was-sms:8082 - hr: http://was-oth:8084 + cus: http://was-cus:8084 + sal: http://was-sal:8082 + sms: http://was-sal:8082 + oth: http://was-cus:8084 + hr: http://was-cus:8084 + pro: http://was-pro:8085 + sys: http://was-sys:8086 # --- 신한라이프 EAI/MCI 연계 IP 정보 (개발 환경) --- shinhan: diff --git a/dap-gateway/src/main/resources/application-local.yml b/dap-gateway/src/main/resources/application-local.yml index 88bb7c0e..12f1d531 100644 --- a/dap-gateway/src/main/resources/application-local.yml +++ b/dap-gateway/src/main/resources/application-local.yml @@ -37,10 +37,15 @@ mcp: default-url: http://localhost:8084 routes: cmm_memo_retriever: http://localhost:8082 + cus: http://localhost:8084 + sal: http://localhost:8082 sms: http://localhost:8082 + oth: http://localhost:8084 email: http://localhost:8083 payment: http://localhost:8085 hr: http://localhost:8084 + pro: http://localhost:8085 + sys: http://localhost:8086 tool: host: localhost diff --git a/dap-gateway/src/main/resources/application.yml b/dap-gateway/src/main/resources/application.yml index e468d0d2..b9f893f9 100644 --- a/dap-gateway/src/main/resources/application.yml +++ b/dap-gateway/src/main/resources/application.yml @@ -27,10 +27,16 @@ server: mcp: gateway: fallback: - default-url: http://was-oth:8084 + default-url: http://was-cus:8084 routes: - sms: http://was-sms:8082 - hr: http://was-oth:8084 + cus: http://was-cus:8084 + sal: http://was-sal:8082 + # Existing SMS category callers continue to resolve to the SAL Pod. + sms: http://was-sal:8082 + oth: http://was-cus:8084 + hr: http://was-cus:8084 + pro: http://was-pro:8085 + sys: http://was-sys:8086 agent-claims-required: false trusted-claims-required: false write-approval-required: false diff --git a/dap-gateway/src/main/resources/static/admin/scaffold.html b/dap-gateway/src/main/resources/static/admin/scaffold.html index d5ed8d6f..7f33a381 100644 --- a/dap-gateway/src/main/resources/static/admin/scaffold.html +++ b/dap-gateway/src/main/resources/static/admin/scaffold.html @@ -981,9 +981,11 @@
Destination Pod directory.
@@ -1478,7 +1480,7 @@ .then(modules => { const select = document.getElementById('targetModuleSelect'); if (modules && modules.length > 0) { - select.innerHTML = modules.map(m => ``).join(''); + select.innerHTML = modules.map(m => ``).join(''); } }) .catch(err => console.error('Failed to load modules:', err)); diff --git a/dap-was-oth/Dockerfile b/dap-was-cus/Dockerfile similarity index 74% rename from dap-was-oth/Dockerfile rename to dap-was-cus/Dockerfile index 51b0b079..5666a177 100644 --- a/dap-was-oth/Dockerfile +++ b/dap-was-cus/Dockerfile @@ -2,7 +2,7 @@ FROM eclipse-temurin:21-jre-alpine WORKDIR /app RUN apk add --no-cache tzdata ENV TZ=Asia/Seoul -COPY dap-was-oth/build/libs/*-SNAPSHOT.jar app.jar +COPY dap-was-cus/build/libs/*-SNAPSHOT.jar app.jar EXPOSE 8084 ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/dap-was-oth/build.gradle b/dap-was-cus/build.gradle similarity index 100% rename from dap-was-oth/build.gradle rename to dap-was-cus/build.gradle diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/CustomerGuidanceToolConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/CustomerGuidanceToolConverter.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/CustomerGuidanceToolConverter.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/CustomerGuidanceToolConverter.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaCommonCodeConverter.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaTableConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaTableConverter.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaTableConverter.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MetaTableConverter.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/AnalysisDataQueryRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/AnalysisDataQueryRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/AnalysisDataQueryRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/AnalysisDataQueryRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CcCstUnfcNotiCarhDto.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CcCstUnfcNotiCarhDto.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CcCstUnfcNotiCarhDto.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CcCstUnfcNotiCarhDto.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/CustomerGuidanceToolResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleStringResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleStringResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleStringResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleStringResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleTargetDto.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleTargetDto.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleTargetDto.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MciSampleTargetDto.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaCommonCodeResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MetaTableResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/SampleStringResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/TemplateDownloadRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/TemplateDownloadRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/TemplateDownloadRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/TemplateDownloadRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaCommonCodeUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaCommonCodeUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaCommonCodeUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaCommonCodeUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaTableUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaTableUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaTableUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MetaTableUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/TemplateUtilityUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerGuidanceToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerGuidanceToolUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerGuidanceToolUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/CustomerGuidanceToolUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaCommonCodeUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaTableUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaTableUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaTableUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MetaTableUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/TemplateUtilityUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/converter/InsuranceClaimProcessorConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/converter/InsuranceClaimProcessorConverter.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/converter/InsuranceClaimProcessorConverter.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/converter/InsuranceClaimProcessorConverter.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/dto/InsuranceClaimProcessorResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/impl/InsuranceClaimProcessorUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/impl/InsuranceClaimProcessorUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/impl/InsuranceClaimProcessorUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/ins/usecase/impl/InsuranceClaimProcessorUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/converter/Onnba3011Converter.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/dto/Onnba3011Request.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/dto/Onnba3011Request.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/dto/Onnba3011Request.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/dto/Onnba3011Request.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/Onnba3011UseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/Onnba3011UseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/Onnba3011UseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/Onnba3011UseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/DailyQuoteResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/ExchangeRateResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/TeamMemberResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/dto/WeatherResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/DailyQuoteToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/DailyQuoteToolUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/DailyQuoteToolUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/DailyQuoteToolUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/ExchangeRateToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/ExchangeRateToolUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/ExchangeRateToolUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/ExchangeRateToolUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/TeamMemberUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/TeamMemberUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/TeamMemberUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/TeamMemberUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/WeatherToolUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/WeatherToolUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/WeatherToolUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/WeatherToolUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/DailyQuoteToolUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/ExchangeRateToolUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/TeamMemberUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/smp/usecase/impl/WeatherToolUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqDetailConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqDetailConverter.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqDetailConverter.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqDetailConverter.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqListConverter.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqListConverter.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqListConverter.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/converter/SolReqListConverter.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqDetailResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/dto/SolReqListResponse.java diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java new file mode 100644 index 00000000..deef3247 --- /dev/null +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java @@ -0,0 +1,42 @@ +package io.shinhanlife.dap.mcc.biz.sol.usecase; + +import org.springaicommunity.mcp.annotation.McpTool; +import io.shinhanlife.dap.lib.annotation.GrowToolHint; + +import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest; + +/** + * @package io.shinhanlife.dap.mcc.biz.sol.usecase + * @className SolReqDetailUseCase + * @description AX HUB 시스템 처리 클래스 + * @author 0986406 + * @create 2026.09.01 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.09.01  0986406    최초생성
+ *
+ * 
+ */ +public interface SolReqDetailUseCase { + + @McpTool(name = "sol_request_detail", title = "SolReqDetail 툴", description = "SOL 의뢰서 상세 조회", annotations = @McpTool.McpAnnotations(openWorldHint = true, readOnlyHint = true)) + @GrowToolHint( + requiresApproval = false, + categoryKey = "sol", + mappingId = "SOLG00000002", + displayDescription = "SOL 의뢰서 한 건의 상세 정보를 조회합니다.", + functionDescription = "SOL 의뢰서 식별자를 기준으로 의뢰서 상세 내용을 조회한다.", + whenToUse = "사용자가 특정 SOL 의뢰서의 상세 내용과 진행 정보를 확인하려는 경우 사용한다.", + whenNotToUse = "의뢰서 목록만 찾거나 의뢰서를 변경 또는 처리하려는 경우에는 사용하지 않는다.", + ioLimits = "정확한 의뢰서 ID가 필요하며 등록된 상세 정보만 반환한다.", + exampleQueries = {"이 SOL 의뢰서 상세를 보여줘", "의뢰서 ID로 처리 내용을 확인해줘", "선택한 의뢰서의 상세 정보를 알려줘"}, + destructive = false, + idempotent = true, + tags = {"SOL", "의뢰서"}, + requiredEnvKeys = {}, + ownerOrg = "MCP_TOOL" + ) + Object getSolRequestDetail(SolReqDetailRequest req); +} diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqListUseCase.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqListUseCase.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqListUseCase.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqListUseCase.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImpl.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImpl.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImpl.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImpl.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/oth/DapWasOthApplication.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/cus/DapWasCusApplication.java similarity index 82% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/oth/DapWasOthApplication.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/cus/DapWasCusApplication.java index 4b831fb1..2d170ed8 100644 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/oth/DapWasOthApplication.java +++ b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/cus/DapWasCusApplication.java @@ -1,9 +1,9 @@ -package io.shinhanlife.dap.mcc.oth; +package io.shinhanlife.dap.mcc.cus; /** - * @package io.shinhanlife.dap.mcc.oth - * @className DapWasOthApplication + * @package io.shinhanlife.dap.mcc.cus + * @className DapWasCusApplication * @description AX HUB 시스템 처리 클래스 * @author 0986406 * @create 2026.09.01 @@ -26,8 +26,8 @@ import io.shinhanlife.dap.lib.mcp.ToolMcpServerConfiguration; @ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"}) @EnableCaching @Import(ToolMcpServerConfiguration.class) -public class DapWasOthApplication { +public class DapWasCusApplication { public static void main(String[] args) { - SpringApplication.run(DapWasOthApplication.class, args); + SpringApplication.run(DapWasCusApplication.class, args); } } diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/InsuranceClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/InsuranceClient.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/InsuranceClient.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/InsuranceClient.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpRequest.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpRequest.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpRequest.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpResponse.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpResponse.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpResponse.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/MciCfpaClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/MciCfpaClient.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/MciCfpaClient.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/MciCfpaClient.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_I.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_I.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_I.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_O.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_O.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_O.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_I.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_I.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_I.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_O.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_O.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_O.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncm/d/io/ONCMD0030_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncm/d/io/ONCMD0030_O.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncm/d/io/ONCMD0030_O.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncm/d/io/ONCMD0030_O.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_I.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_I.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_I.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_O.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_O.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_O.java diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/presentation/DtoExcelDownloadController.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/presentation/DtoExcelDownloadController.java similarity index 100% rename from dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/presentation/DtoExcelDownloadController.java rename to dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/presentation/DtoExcelDownloadController.java diff --git a/dap-was-oth/src/main/resources/application-dev.yml b/dap-was-cus/src/main/resources/application-dev.yml similarity index 100% rename from dap-was-oth/src/main/resources/application-dev.yml rename to dap-was-cus/src/main/resources/application-dev.yml diff --git a/dap-was-oth/src/main/resources/application-local.yml b/dap-was-cus/src/main/resources/application-local.yml similarity index 100% rename from dap-was-oth/src/main/resources/application-local.yml rename to dap-was-cus/src/main/resources/application-local.yml diff --git a/dap-was-oth/src/main/resources/application-prod.yml b/dap-was-cus/src/main/resources/application-prod.yml similarity index 100% rename from dap-was-oth/src/main/resources/application-prod.yml rename to dap-was-cus/src/main/resources/application-prod.yml diff --git a/dap-was-oth/src/main/resources/application-test.yml b/dap-was-cus/src/main/resources/application-test.yml similarity index 100% rename from dap-was-oth/src/main/resources/application-test.yml rename to dap-was-cus/src/main/resources/application-test.yml diff --git a/dap-was-oth/src/main/resources/application.yml b/dap-was-cus/src/main/resources/application.yml similarity index 76% rename from dap-was-oth/src/main/resources/application.yml rename to dap-was-cus/src/main/resources/application.yml index f81a5d6f..dfc56afe 100644 --- a/dap-was-oth/src/main/resources/application.yml +++ b/dap-was-cus/src/main/resources/application.yml @@ -2,7 +2,7 @@ server: port: 8084 spring: application: - name: dap-was-oth + name: dap-was-cus profiles: active: local logging: @@ -11,9 +11,9 @@ logging: mcp: namespace: "" manifest: - bundle-id: was-oth - # Set the AA-assigned prefix before MCP pull activation (for example: oth.). + bundle-id: was-cus + # Set the AA-assigned prefix before MCP pull activation (for example: cus.). name-prefix: "" security: tenant-domains: - TESTER-DEV: ALL \ No newline at end of file + TESTER-DEV: ALL diff --git a/dap-was-oth/src/main/resources/logback-spring.xml b/dap-was-cus/src/main/resources/logback-spring.xml similarity index 93% rename from dap-was-oth/src/main/resources/logback-spring.xml rename to dap-was-cus/src/main/resources/logback-spring.xml index b2731087..c0a9d1d4 100644 --- a/dap-was-oth/src/main/resources/logback-spring.xml +++ b/dap-was-cus/src/main/resources/logback-spring.xml @@ -16,10 +16,10 @@ - /swlog/dap-was-oth/A01/${HOSTNAME}_A01.log + /swlog/dap-was-cus/A01/${HOSTNAME}_A01.log - /swlog/dap-was-oth/A01/${HOSTNAME}_A01_%d{yyyyMMdd}.%i.log + /swlog/dap-was-cus/A01/${HOSTNAME}_A01_%d{yyyyMMdd}.%i.log 100MB 30 diff --git a/dap-was-oth/src/main/resources/mock-responses/cmm_customer_tool.json b/dap-was-cus/src/main/resources/mock-responses/cmm_customer_tool.json similarity index 100% rename from dap-was-oth/src/main/resources/mock-responses/cmm_customer_tool.json rename to dap-was-cus/src/main/resources/mock-responses/cmm_customer_tool.json diff --git a/dap-was-oth/src/main/resources/mock-responses/ins_insurance_processor.json b/dap-was-cus/src/main/resources/mock-responses/ins_insurance_processor.json similarity index 100% rename from dap-was-oth/src/main/resources/mock-responses/ins_insurance_processor.json rename to dap-was-cus/src/main/resources/mock-responses/ins_insurance_processor.json diff --git a/dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_comcode_lookup.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_comcode_lookup.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_comcode_lookup.yml rename to dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_comcode_lookup.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_customer_tool.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_customer_tool.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_customer_tool.yml rename to dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_customer_tool.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_meta_table.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_meta_table.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_meta_table.yml rename to dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_meta_table.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_template_url.yml b/dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_template_url.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/cmm/cmm_template_url.yml rename to dap-was-cus/src/main/resources/tool-definitions/cmm/cmm_template_url.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/ins/ins_insurance_processor.yml b/dap-was-cus/src/main/resources/tool-definitions/ins/ins_insurance_processor.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/ins/ins_insurance_processor.yml rename to dap-was-cus/src/main/resources/tool-definitions/ins/ins_insurance_processor.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/oth/oth_onnba3011_call.yml b/dap-was-cus/src/main/resources/tool-definitions/oth/oth_onnba3011_call.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/oth/oth_onnba3011_call.yml rename to dap-was-cus/src/main/resources/tool-definitions/oth/oth_onnba3011_call.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/smp/smp_exchange_inquiry.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_exchange_inquiry.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/smp/smp_exchange_inquiry.yml rename to dap-was-cus/src/main/resources/tool-definitions/smp/smp_exchange_inquiry.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/smp/smp_quote_daily.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_quote_daily.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/smp/smp_quote_daily.yml rename to dap-was-cus/src/main/resources/tool-definitions/smp/smp_quote_daily.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/smp/smp_team_list.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/smp/smp_team_list.yml rename to dap-was-cus/src/main/resources/tool-definitions/smp/smp_team_list.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/smp/smp_weather_inquiry.yml b/dap-was-cus/src/main/resources/tool-definitions/smp/smp_weather_inquiry.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/smp/smp_weather_inquiry.yml rename to dap-was-cus/src/main/resources/tool-definitions/smp/smp_weather_inquiry.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/sol/sol_request_detail.yml b/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_detail.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/sol/sol_request_detail.yml rename to dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_detail.yml diff --git a/dap-was-oth/src/main/resources/tool-definitions/sol/sol_request_list.yml b/dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_list.yml similarity index 100% rename from dap-was-oth/src/main/resources/tool-definitions/sol/sol_request_list.yml rename to dap-was-cus/src/main/resources/tool-definitions/sol/sol_request_list.yml diff --git a/dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCaseTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCaseTest.java similarity index 100% rename from dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCaseTest.java rename to dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/CustomerGuidanceToolUseCaseTest.java diff --git a/dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCaseTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCaseTest.java similarity index 100% rename from dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCaseTest.java rename to dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/ins/usecase/InsuranceClaimProcessorUseCaseTest.java diff --git a/dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImplTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImplTest.java similarity index 100% rename from dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImplTest.java rename to dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/oth/usecase/impl/Onnba3011UseCaseImplTest.java diff --git a/dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImplTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImplTest.java similarity index 100% rename from dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImplTest.java rename to dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqDetailUseCaseImplTest.java diff --git a/dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImplTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImplTest.java similarity index 100% rename from dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImplTest.java rename to dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/biz/sol/usecase/impl/SolReqListUseCaseImplTest.java diff --git a/dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java b/dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java similarity index 100% rename from dap-was-oth/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java rename to dap-was-cus/src/test/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/converter/Onnba3011MciRequestConverterTest.java diff --git a/dap-was-lib/build.gradle b/dap-was-lib/build.gradle index d4d66136..78d6bff2 100644 --- a/dap-was-lib/build.gradle +++ b/dap-was-lib/build.gradle @@ -37,15 +37,19 @@ dependencies { api 'io.lettuce:lettuce-core:6.6.0.RELEASE' // MCI XML 전문, JSON Tool Schema/Manifest 처리에 사용합니다. - api 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml:2.17.1' - api 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.17.1' - api 'com.fasterxml.jackson.core:jackson-databind:2.17.1' - api 'com.networknt:json-schema-validator:3.0.0' + api 'com.fasterxml.jackson.dataformat:jackson-dataformat-xml' + api 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml' + api 'com.fasterxml.jackson.core:jackson-databind' + // MCP Java SDK 2.0.0의 mcp-json-jackson2가 호출하는 Schema API와 반드시 맞춘다. + // 3.x는 Schema.validate(JsonNode) 반환 규격이 달라 런타임 NoSuchMethodError가 발생한다. + api 'com.networknt:json-schema-validator:2.0.0' - // Tool Pod의 /mcp Streamable HTTP Server와 MCP SDK를 제공합니다. - api 'org.springframework.ai:spring-ai-starter-mcp-server-webmvc' + // Boot 3.5.11 위에서 MCP Java SDK 2.0.0의 Server/Client와 Servlet 전송 계층을 사용합니다. + // Jackson 2 공급자를 명시해 Boot 3의 Jackson 계열과 맞춥니다. + api 'io.modelcontextprotocol.sdk:mcp-core' + api 'io.modelcontextprotocol.sdk:mcp-json-jackson2' - // Spring AI 1.1.x에서 @McpTool, @McpToolParam, metaProvider를 제공합니다. + // Boot 3.5 호환 Spring AI 어노테이션 API를 유지합니다. api 'org.springaicommunity:mcp-annotations:0.9.0' // 이벤트 기반 확장이 필요한 Tool의 공통 Kafka 연동 기능입니다. diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolMcpServerConfiguration.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolMcpServerConfiguration.java index 90afd71b..47fe285f 100644 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolMcpServerConfiguration.java +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolMcpServerConfiguration.java @@ -1,6 +1,9 @@ package io.shinhanlife.dap.lib.mcp; +import io.modelcontextprotocol.server.McpServer; +import io.modelcontextprotocol.server.McpSyncServer; import io.modelcontextprotocol.server.transport.HttpServletStreamableServerTransportProvider; +import io.modelcontextprotocol.spec.McpSchema; import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -28,6 +31,15 @@ public class ToolMcpServerConfiguration { .build(); } + /** Creates the Tool Pod MCP server directly with MCP Java SDK 2.0.0. */ + @Bean(destroyMethod = "close") + public McpSyncServer toolMcpServer(HttpServletStreamableServerTransportProvider transportProvider) { + return McpServer.sync(transportProvider) + .serverInfo("dap-tool-pod", "2.0.0") + .capabilities(McpSchema.ServerCapabilities.builder().tools(true).build()) + .build(); + } + @Bean public ServletRegistrationBean toolMcpServlet( HttpServletStreamableServerTransportProvider transportProvider) { diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolRegistryHeartbeatSender.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolRegistryHeartbeatSender.java index 50ad19f5..2ce4dffc 100644 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolRegistryHeartbeatSender.java +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolRegistryHeartbeatSender.java @@ -24,6 +24,9 @@ import io.shinhanlife.dap.lib.util.ToolSchemaResolver; import io.shinhanlife.dap.lib.metadata.ToolDefinition; import io.shinhanlife.dap.lib.metadata.ToolDefinitionRepository; import jakarta.annotation.PostConstruct; +import jakarta.annotation.PreDestroy; +import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.context.event.EventListener; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.HashMap; @@ -110,12 +113,12 @@ public class ToolRegistryHeartbeatSender { String subToolName = mcpProperties.getNamespace() != null && !mcpProperties.getNamespace().isEmpty() ? mcpProperties.getNamespace() + "_" + rawSubToolName : rawSubToolName; - // @GrowToolHint(register = false)인 Tool은 메타데이터 조회에는 남기되, + // @GrowToolHint인 Tool은 메타데이터 조회에는 남기되, // Gateway 등록 및 heartbeat 전송 대상에서는 제외합니다. // ToolHint가 없는 기존 Tool은 이전 동작과 동일하게 등록합니다. boolean isRegister = hintAnnotation == null || hintAnnotation.register(); if (!isRegister) { - log.info(" [HeartbeatSender] '{}' Tool is excluded from Gateway registration because register=false. (tool name: {})", + log.info(" [HeartbeatSender] '{}' Tool is excluded from Gateway registration because . (tool name: {})", baseName, subToolName); } @@ -223,26 +226,30 @@ public class ToolRegistryHeartbeatSender { meta.setOwnerOrg(definition.ownerOrg()); } - @Scheduled(fixedRate = 30000) - public void sendHeartbeats() { + @EventListener(ApplicationReadyEvent.class) + public void registerAllTools() { + if (registeredTools.isEmpty()) return; + + for (ToolMetadata tool : registeredTools) { + registerTool(tool); + } + } + + @PreDestroy + public void deregisterAllTools() { if (registeredTools.isEmpty()) return; for (ToolMetadata tool : registeredTools) { try { - ResponseEntity response = restClient.post() - .uri(gatewayUrl + "/mcp/api/v1/registry/heartbeat") + restClient.post() + .uri(gatewayUrl + "/mcp/api/v1/registry/deregister") .header("Content-Type", "application/json") - .body(tool.getUid()) .retrieve() - .toEntity(String.class); - - if (response.getStatusCode().is2xxSuccessful()) { - log.info(" [HeartbeatSender] 하트비트 전송 성공: {}", tool.getUid()); - } - } catch (Exception e) { - log.warn(" [HeartbeatSender] 하트비트 전송 실패 ({}): {}. 재등록을 시도합니다.", tool.getUid(), e.getMessage()); - registerTool(tool); + .toBodilessEntity(); + log.info(" [HeartbeatSender] 툴 삭제(Deregister) 성공: {}", tool.getUid()); + } catch (Exception ex) { + log.warn(" [HeartbeatSender] 툴 삭제 실패: {}", ex.getMessage()); } } } diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/PodScaffolder.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/PodScaffolder.java index 64125ddd..7974277d 100644 --- a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/PodScaffolder.java +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/PodScaffolder.java @@ -337,13 +337,8 @@ public class PodScaffolder { dockerfile: %s/Dockerfile ports: - "%s:%s" - depends_on: - - redis environment: - TZ=Asia/Seoul - - SPRING_REDIS_HOST=redis - - SPRING_REDIS_PORT=6379 - - SPRING_DATA_REDIS_PORT=6379 - AXHUB_GATEWAY_URL=http://gateway:8081 - AXHUB_TOOL_URL=http://%s:%s - GLOW_COMMUNICATION_MCI_HOST=http://mci-mock 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 2764d5b7..c03efe24 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 @@ -425,9 +425,9 @@ public class ToolScaffolder { if (routingType.trim().isEmpty()) { routingType = "HTTP"; } - String moduleName = getOrAsk(args, 6, scanner, "7. Target module (default dap-was-oth): "); + String moduleName = getOrAsk(args, 6, scanner, "7. Target module (default dap-was-cus): "); if (moduleName.trim().isEmpty()) { - moduleName = "dap-was-oth"; + moduleName = "dap-was-cus"; } String defaultAuthor = System.getProperty("user.name"); diff --git a/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/mcp/McpSdk2CompatibilityTest.java b/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/mcp/McpSdk2CompatibilityTest.java index f49597e9..9cb357f7 100644 --- a/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/mcp/McpSdk2CompatibilityTest.java +++ b/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/mcp/McpSdk2CompatibilityTest.java @@ -1,20 +1,29 @@ package io.shinhanlife.dap.lib.mcp; import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import io.modelcontextprotocol.json.schema.jackson2.DefaultJsonSchemaValidator; import io.modelcontextprotocol.spec.McpSchema; +import java.util.Map; import org.junit.jupiter.api.Test; -import org.springframework.ai.mcp.annotation.McpTool; class McpSdk2CompatibilityTest { - @Test - void usesOfficialSpringAiMcpAnnotations() { - assertEquals("org.springframework.ai.mcp.annotation", McpTool.class.getPackageName()); - } - @Test void usesMcpJavaSdkTwo() { assertEquals("2.0.0", McpSchema.class.getPackage().getImplementationVersion()); } + + @Test + void validatesJsonSchemaWithTheNetworkntVersionRequiredByMcpSdkTwo() { + DefaultJsonSchemaValidator validator = new DefaultJsonSchemaValidator(); + + var response = validator.validateSchema(Map.of( + "$schema", McpSchema.JSON_SCHEMA_DIALECT_2020_12, + "type", "object", + "properties", Map.of("employeeId", Map.of("type", "string")))); + + assertTrue(response.valid(), response.errorMessage()); + } } diff --git a/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/PodScaffolderTest.java b/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/PodScaffolderTest.java index 5d708d4b..2fd79d9c 100644 --- a/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/PodScaffolderTest.java +++ b/dap-was-lib/src/test/java/io/shinhanlife/dap/lib/util/PodScaffolderTest.java @@ -50,4 +50,17 @@ class PodScaffolderTest { assertTrue(Files.readString(resources.resolve("application-prod.yml")) .contains("classpath:glow/application-glow-prod.yml")); } + + @Test + void generatesRedisOptionalPodComposeConfiguration() throws Exception { + Files.writeString(root.resolve("settings.gradle"), "rootProject.name = 'test'\n"); + Files.writeString(root.resolve("docker-compose.yml"), "services:\n"); + + PodScaffolder.scaffoldPod(root, "dap-was-pro", "8085", "pro", "tester", "2026.08.13"); + + String compose = Files.readString(root.resolve("docker-compose.yml")); + assertTrue(compose.contains("was-pro:")); + assertFalse(compose.contains("depends_on:\n - redis")); + assertFalse(compose.contains("SPRING_REDIS_HOST=redis")); + } } diff --git a/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/ToolMcpServerConfigurationTest.java b/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/ToolMcpServerConfigurationTest.java index 82fe9796..dfd5b70d 100644 --- a/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/ToolMcpServerConfigurationTest.java +++ b/dap-was-lib/src/test/java/io/shinhanlife/dap/mcc/mcp/ToolMcpServerConfigurationTest.java @@ -5,6 +5,7 @@ import static org.junit.jupiter.api.Assertions.assertFalse; import static org.assertj.core.api.Assertions.assertThat; import io.modelcontextprotocol.server.transport.HttpServletStreamableServerTransportProvider; +import io.modelcontextprotocol.server.McpSyncServer; import io.shinhanlife.dap.lib.mcp.ToolMcpServerConfiguration; import org.junit.jupiter.api.Test; import org.springframework.boot.web.servlet.ServletRegistrationBean; @@ -20,4 +21,14 @@ class ToolMcpServerConfigurationTest { assertThat(registration.getUrlMappings()).containsExactlyInAnyOrder("/mcp", "/mcp/message"); } + + @Test + void createsMcpSdkTwoSyncServerWithoutSpringAiAutoConfiguration() { + HttpServletStreamableServerTransportProvider transport = configuration.toolMcpTransportProvider(); + + McpSyncServer server = configuration.toolMcpServer(transport); + + assertEquals("dap-tool-pod", server.getServerInfo().name()); + server.close(); + } } diff --git a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java b/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java deleted file mode 100644 index 3eff5182..00000000 --- a/dap-was-oth/src/main/java/io/shinhanlife/dap/mcc/biz/sol/usecase/SolReqDetailUseCase.java +++ /dev/null @@ -1,27 +0,0 @@ -package io.shinhanlife.dap.mcc.biz.sol.usecase; - -import org.springaicommunity.mcp.annotation.McpTool; -import io.shinhanlife.dap.lib.annotation.GrowToolHint; - -import io.shinhanlife.dap.mcc.biz.sol.dto.SolReqDetailRequest; - -/** - * @package io.shinhanlife.dap.mcc.biz.sol.usecase - * @className SolReqDetailUseCase - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -public interface SolReqDetailUseCase { - - @McpTool(name = "sol_request_detail", title = "SolReqDetail 툴", description = "SOL 의뢰서 상세 조회", annotations = @McpTool.McpAnnotations(openWorldHint = true, readOnlyHint = true)) - @GrowToolHint(requiresApproval = false, categoryKey = "sol", mappingId = "SOLG00000002") - Object getSolRequestDetail(SolReqDetailRequest req); -} diff --git a/dap-was-pro/Dockerfile b/dap-was-pro/Dockerfile new file mode 100644 index 00000000..171eebde --- /dev/null +++ b/dap-was-pro/Dockerfile @@ -0,0 +1,7 @@ +FROM eclipse-temurin:21-jre-alpine +WORKDIR /app +RUN apk add --no-cache tzdata +ENV TZ=Asia/Seoul +COPY dap-was-pro/build/libs/*-SNAPSHOT.jar app.jar +EXPOSE 8085 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/dap-was-pro/build.gradle b/dap-was-pro/build.gradle new file mode 100644 index 00000000..629ebb45 --- /dev/null +++ b/dap-was-pro/build.gradle @@ -0,0 +1,9 @@ +plugins { + // Spring Boot 3.5.11 version is managed by the root build.gradle. + id 'org.springframework.boot' +} + +dependencies { + // Shared MCP, Glow integration, validation, logging, Lombok and MapStruct configuration. + implementation project(':dap-was-lib') +} diff --git a/dap-was-pro/src/main/java/io/shinhanlife/dap/mcc/pro/DapWasProApplication.java b/dap-was-pro/src/main/java/io/shinhanlife/dap/mcc/pro/DapWasProApplication.java new file mode 100644 index 00000000..2b1921f3 --- /dev/null +++ b/dap-was-pro/src/main/java/io/shinhanlife/dap/mcc/pro/DapWasProApplication.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.pro; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Import; +import io.shinhanlife.dap.lib.mcp.ToolMcpServerConfiguration; + +/** + * @package io.shinhanlife.dap.mcc.pro + * @className DapWasProApplication + * @description AX HUB 시스템 처리 클래스 + * @author system + * @create 2026.08.13 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.08.13  system    최초생성
+ *
+ * 
+ */ +@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"}) +@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"}) +@EnableCaching +@Import(ToolMcpServerConfiguration.class) +public class DapWasProApplication { + public static void main(String[] args) { + SpringApplication.run(DapWasProApplication.class, args); + } +} diff --git a/dap-was-pro/src/main/resources/application-dev.yml b/dap-was-pro/src/main/resources/application-dev.yml new file mode 100644 index 00000000..44d61de2 --- /dev/null +++ b/dap-was-pro/src/main/resources/application-dev.yml @@ -0,0 +1,46 @@ +# OCI 클라우드 환경 전용 설정 +server: + port: ${PORT:8085} + +spring: + config: + activate: + on-profile: dev + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-dev.yml + +axhub: + gateway: + url: https://axhubmcp.devjun.net + tool: + url: http://144.24.70.100:8085 + +eims: + http: + url: http://localhost:${server.port}/api/gateway + tcp: + host: 127.0.0.1 + port: 8090 + timeout: 5000 + jsp: + form: + url: http://localhost:${server.port}/mock/jsp-form + json: + url: http://localhost:${server.port}/mock/jsp-json + mci: + url: http://localhost:${server.port}/api/mock/esb/api + mcistring: + url: http://localhost:${server.port}/api/mock/esb/string + +shinhan: + integration: + envrTypeCd: D + eai: + url: http://10.176.32.181 + internalMci: + url: http://10.176.32.173 + bancaMci: + url: http://10.176.32.117 + externalMci: + url: http://10.176.32.176 diff --git a/dap-was-pro/src/main/resources/application-local.yml b/dap-was-pro/src/main/resources/application-local.yml new file mode 100644 index 00000000..caa93c7f --- /dev/null +++ b/dap-was-pro/src/main/resources/application-local.yml @@ -0,0 +1,45 @@ +# Local 환경 전용 설정 (H2 메모리 DB 등) +spring: + config: + activate: + on-profile: local + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-local.yml + datasource: + url: jdbc:p6spy:h2:mem:testdb;DB_CLOSE_DELAY=-1; + driverClassName: com.p6spy.engine.spy.P6SpyDriver + username: sa + password: password + h2: + console: + enabled: true + +eims: + http: + url: http://localhost:${server.port}/api/gateway + tcp: + host: 127.0.0.1 + port: 8090 + timeout: 5000 + jsp: + form: + url: http://localhost:${server.port}/mock/jsp-form + json: + url: http://localhost:${server.port}/mock/jsp-json + mci: + url: http://localhost:${server.port}/api/mock/esb/api + mcistring: + url: http://localhost:${server.port}/api/mock/esb/string + +mcp: + security: + tenant-domains: + mcp-client-1: CUSTOMER,COMMON + mcp-client-2: ALL + +axhub: + gateway: + url: http://localhost:8081 + tool: + url: ${AXHUB_TOOL_URL:http://localhost:${server.port}} diff --git a/dap-was-pro/src/main/resources/application-prod.yml b/dap-was-pro/src/main/resources/application-prod.yml new file mode 100644 index 00000000..682467fd --- /dev/null +++ b/dap-was-pro/src/main/resources/application-prod.yml @@ -0,0 +1,16 @@ +server: + port: ${PORT:8085} + +spring: + config: + activate: + on-profile: prod + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-prod.yml + +axhub: + gateway: + url: ${AXHUB_GATEWAY_URL} + tool: + url: ${AXHUB_TOOL_URL} diff --git a/dap-was-pro/src/main/resources/application-test.yml b/dap-was-pro/src/main/resources/application-test.yml new file mode 100644 index 00000000..e2bc327d --- /dev/null +++ b/dap-was-pro/src/main/resources/application-test.yml @@ -0,0 +1,16 @@ +server: + port: ${PORT:8085} + +spring: + config: + activate: + on-profile: test + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-test.yml + +axhub: + gateway: + url: ${AXHUB_GATEWAY_URL} + tool: + url: ${AXHUB_TOOL_URL} diff --git a/dap-was-pro/src/main/resources/application.yml b/dap-was-pro/src/main/resources/application.yml new file mode 100644 index 00000000..8838ee17 --- /dev/null +++ b/dap-was-pro/src/main/resources/application.yml @@ -0,0 +1,18 @@ +server: + port: 8085 +spring: + application: + name: dap-was-pro + profiles: + active: local +logging: + level: + org.apache.kafka: ERROR +mcp: + namespace: "" + manifest: + bundle-id: was-pro + name-prefix: "" + security: + tenant-domains: + TESTER-DEV: ALL diff --git a/dap-was-pro/src/main/resources/logback-spring.xml b/dap-was-pro/src/main/resources/logback-spring.xml new file mode 100644 index 00000000..93c7c963 --- /dev/null +++ b/dap-was-pro/src/main/resources/logback-spring.xml @@ -0,0 +1,24 @@ + + + + + + ${LOG_PATTERN} + + + + logs/dap-was-pro.log + + logs/dap-was-pro-%d{yyyy-MM-dd}.log + 30 + + + ${LOG_PATTERN} + + + + + + + + diff --git a/dap-was-sms/Dockerfile b/dap-was-sal/Dockerfile similarity index 74% rename from dap-was-sms/Dockerfile rename to dap-was-sal/Dockerfile index 44631b5c..2ea05b07 100644 --- a/dap-was-sms/Dockerfile +++ b/dap-was-sal/Dockerfile @@ -2,7 +2,7 @@ FROM eclipse-temurin:21-jre-alpine WORKDIR /app RUN apk add --no-cache tzdata ENV TZ=Asia/Seoul -COPY dap-was-sms/build/libs/*-SNAPSHOT.jar app.jar +COPY dap-was-sal/build/libs/*-SNAPSHOT.jar app.jar EXPOSE 8082 ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/dap-was-sms/build.gradle b/dap-was-sal/build.gradle similarity index 100% rename from dap-was-sms/build.gradle rename to dap-was-sal/build.gradle diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/ClaimSearchConverter.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/ClaimSearchConverter.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/ClaimSearchConverter.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/ClaimSearchConverter.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MemoListRetrieverConverter.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MemoListRetrieverConverter.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MemoListRetrieverConverter.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/converter/MemoListRetrieverConverter.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchRequest.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchRequest.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchRequest.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchRequest.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchResponse.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchResponse.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchResponse.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/ClaimSearchResponse.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverRequest.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverRequest.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverRequest.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverRequest.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverResponse.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverResponse.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverResponse.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/dto/MemoListRetrieverResponse.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCase.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCase.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCase.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCase.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCase.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCase.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCase.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCase.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImpl.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImpl.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImpl.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImpl.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MemoListRetrieverUseCaseImpl.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MemoListRetrieverUseCaseImpl.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MemoListRetrieverUseCaseImpl.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/impl/MemoListRetrieverUseCaseImpl.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/MemoClient.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/MemoClient.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/MemoClient.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/MemoClient.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpRequest.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpRequest.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpRequest.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpRequest.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpResponse.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpResponse.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpResponse.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpResponse.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/MciNclaClient.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/MciNclaClient.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/MciNclaClient.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/MciNclaClient.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_I.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_I.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_I.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_I.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_O.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_O.java similarity index 100% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_O.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_O.java diff --git a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/sms/DapWasSmsApplication.java b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/sal/DapWasSalApplication.java similarity index 68% rename from dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/sms/DapWasSmsApplication.java rename to dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/sal/DapWasSalApplication.java index 49eb8db4..e05db816 100644 --- a/dap-was-sms/src/main/java/io/shinhanlife/dap/mcc/sms/DapWasSmsApplication.java +++ b/dap-was-sal/src/main/java/io/shinhanlife/dap/mcc/sal/DapWasSalApplication.java @@ -1,9 +1,9 @@ -package io.shinhanlife.dap.mcc.sms; +package io.shinhanlife.dap.mcc.sal; /** - * @package io.shinhanlife.dap.mcc.sms - * @className DapWasSmsApplication + * @package io.shinhanlife.dap.mcc.sal + * @className DapWasSalApplication * @description AX HUB 시스템 처리 클래스 * @author 0986406 * @create 2026.09.01 @@ -19,12 +19,15 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Import; +import io.shinhanlife.dap.lib.mcp.ToolMcpServerConfiguration; @SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"}) @ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"}) @EnableCaching -public class DapWasSmsApplication { +@Import(ToolMcpServerConfiguration.class) +public class DapWasSalApplication { public static void main(String[] args) { - SpringApplication.run(DapWasSmsApplication.class, args); + SpringApplication.run(DapWasSalApplication.class, args); } } diff --git a/dap-was-sms/src/main/resources/application-dev.yml b/dap-was-sal/src/main/resources/application-dev.yml similarity index 100% rename from dap-was-sms/src/main/resources/application-dev.yml rename to dap-was-sal/src/main/resources/application-dev.yml diff --git a/dap-was-sms/src/main/resources/application-local.yml b/dap-was-sal/src/main/resources/application-local.yml similarity index 100% rename from dap-was-sms/src/main/resources/application-local.yml rename to dap-was-sal/src/main/resources/application-local.yml diff --git a/dap-was-sms/src/main/resources/application-prod.yml b/dap-was-sal/src/main/resources/application-prod.yml similarity index 100% rename from dap-was-sms/src/main/resources/application-prod.yml rename to dap-was-sal/src/main/resources/application-prod.yml diff --git a/dap-was-sms/src/main/resources/application-test.yml b/dap-was-sal/src/main/resources/application-test.yml similarity index 100% rename from dap-was-sms/src/main/resources/application-test.yml rename to dap-was-sal/src/main/resources/application-test.yml diff --git a/dap-was-sms/src/main/resources/application.yml b/dap-was-sal/src/main/resources/application.yml similarity index 76% rename from dap-was-sms/src/main/resources/application.yml rename to dap-was-sal/src/main/resources/application.yml index 38f04748..964b9653 100644 --- a/dap-was-sms/src/main/resources/application.yml +++ b/dap-was-sal/src/main/resources/application.yml @@ -2,7 +2,7 @@ server: port: 8082 spring: application: - name: dap-was-sms + name: dap-was-sal profiles: active: local logging: @@ -11,9 +11,9 @@ logging: mcp: namespace: "" manifest: - bundle-id: tool-sms - # Set the AA-assigned prefix before MCP pull activation (for example: sms.). + bundle-id: was-sal + # Set the AA-assigned prefix before MCP pull activation (for example: sal.). name-prefix: "" security: tenant-domains: - TESTER-DEV: ALL \ No newline at end of file + TESTER-DEV: ALL diff --git a/dap-was-sms/src/main/resources/logback-spring.xml b/dap-was-sal/src/main/resources/logback-spring.xml similarity index 93% rename from dap-was-sms/src/main/resources/logback-spring.xml rename to dap-was-sal/src/main/resources/logback-spring.xml index b6d8f216..52764cd6 100644 --- a/dap-was-sms/src/main/resources/logback-spring.xml +++ b/dap-was-sal/src/main/resources/logback-spring.xml @@ -16,10 +16,10 @@ - /swlog/dap-was-sms/A01/${HOSTNAME}_A01.log + /swlog/dap-was-sal/A01/${HOSTNAME}_A01.log - /swlog/dap-was-sms/A01/${HOSTNAME}_A01_%d{yyyyMMdd}.%i.log + /swlog/dap-was-sal/A01/${HOSTNAME}_A01_%d{yyyyMMdd}.%i.log 100MB 30 diff --git a/dap-was-sms/src/main/resources/mock-responses/cmm_memo_retriever.json b/dap-was-sal/src/main/resources/mock-responses/cmm_memo_retriever.json similarity index 100% rename from dap-was-sms/src/main/resources/mock-responses/cmm_memo_retriever.json rename to dap-was-sal/src/main/resources/mock-responses/cmm_memo_retriever.json diff --git a/dap-was-sms/src/main/resources/mock-responses/sms_cmm_claim_search.json b/dap-was-sal/src/main/resources/mock-responses/sms_cmm_claim_search.json similarity index 100% rename from dap-was-sms/src/main/resources/mock-responses/sms_cmm_claim_search.json rename to dap-was-sal/src/main/resources/mock-responses/sms_cmm_claim_search.json diff --git a/dap-was-sms/src/main/resources/tool-definitions/cmm/cmm_claim_search.yml b/dap-was-sal/src/main/resources/tool-definitions/cmm/cmm_claim_search.yml similarity index 100% rename from dap-was-sms/src/main/resources/tool-definitions/cmm/cmm_claim_search.yml rename to dap-was-sal/src/main/resources/tool-definitions/cmm/cmm_claim_search.yml diff --git a/dap-was-sms/src/main/resources/tool-definitions/cmm/cmm_memo_retriever.yml b/dap-was-sal/src/main/resources/tool-definitions/cmm/cmm_memo_retriever.yml similarity index 100% rename from dap-was-sms/src/main/resources/tool-definitions/cmm/cmm_memo_retriever.yml rename to dap-was-sal/src/main/resources/tool-definitions/cmm/cmm_memo_retriever.yml diff --git a/dap-was-sms/src/main/resources/tool-schemas/cmm/claim-search-resource-input-schema.json b/dap-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-input-schema.json similarity index 100% rename from dap-was-sms/src/main/resources/tool-schemas/cmm/claim-search-resource-input-schema.json rename to dap-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-input-schema.json diff --git a/dap-was-sms/src/main/resources/tool-schemas/cmm/claim-search-resource-output-schema.json b/dap-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-output-schema.json similarity index 100% rename from dap-was-sms/src/main/resources/tool-schemas/cmm/claim-search-resource-output-schema.json rename to dap-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-output-schema.json diff --git a/dap-was-sms/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCaseTest.java b/dap-was-sal/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCaseTest.java similarity index 100% rename from dap-was-sms/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCaseTest.java rename to dap-was-sal/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/ClaimSearchUseCaseTest.java diff --git a/dap-was-sms/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCaseTest.java b/dap-was-sal/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCaseTest.java similarity index 100% rename from dap-was-sms/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCaseTest.java rename to dap-was-sal/src/test/java/io/shinhanlife/dap/mcc/biz/cmm/usecase/MemoListRetrieverUseCaseTest.java diff --git a/dap-was-sys/Dockerfile b/dap-was-sys/Dockerfile new file mode 100644 index 00000000..b6c1c845 --- /dev/null +++ b/dap-was-sys/Dockerfile @@ -0,0 +1,7 @@ +FROM eclipse-temurin:21-jre-alpine +WORKDIR /app +RUN apk add --no-cache tzdata +ENV TZ=Asia/Seoul +COPY dap-was-sys/build/libs/*-SNAPSHOT.jar app.jar +EXPOSE 8086 +ENTRYPOINT ["java", "-jar", "app.jar"] diff --git a/dap-was-sys/build.gradle b/dap-was-sys/build.gradle new file mode 100644 index 00000000..629ebb45 --- /dev/null +++ b/dap-was-sys/build.gradle @@ -0,0 +1,9 @@ +plugins { + // Spring Boot 3.5.11 version is managed by the root build.gradle. + id 'org.springframework.boot' +} + +dependencies { + // Shared MCP, Glow integration, validation, logging, Lombok and MapStruct configuration. + implementation project(':dap-was-lib') +} diff --git a/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/DapWasSysApplication.java b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/DapWasSysApplication.java new file mode 100644 index 00000000..b34cf0ee --- /dev/null +++ b/dap-was-sys/src/main/java/io/shinhanlife/dap/mcc/sys/DapWasSysApplication.java @@ -0,0 +1,32 @@ +package io.shinhanlife.dap.mcc.sys; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.context.properties.ConfigurationPropertiesScan; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.Import; +import io.shinhanlife.dap.lib.mcp.ToolMcpServerConfiguration; + +/** + * @package io.shinhanlife.dap.mcc.sys + * @className DapWasSysApplication + * @description AX HUB 시스템 처리 클래스 + * @author system + * @create 2026.08.13 + *
+ * ---------- 개정이력 ----------
+ * 수정일      수정자    수정내용
+ * ---------- -------- ---------------------------
+ * 2026.08.13  system    최초생성
+ *
+ * 
+ */ +@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"}) +@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"}) +@EnableCaching +@Import(ToolMcpServerConfiguration.class) +public class DapWasSysApplication { + public static void main(String[] args) { + SpringApplication.run(DapWasSysApplication.class, args); + } +} diff --git a/dap-was-sys/src/main/resources/application-dev.yml b/dap-was-sys/src/main/resources/application-dev.yml new file mode 100644 index 00000000..727939dd --- /dev/null +++ b/dap-was-sys/src/main/resources/application-dev.yml @@ -0,0 +1,46 @@ +# OCI 클라우드 환경 전용 설정 +server: + port: ${PORT:8086} + +spring: + config: + activate: + on-profile: dev + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-dev.yml + +axhub: + gateway: + url: https://axhubmcp.devjun.net + tool: + url: http://144.24.70.100:8086 + +eims: + http: + url: http://localhost:${server.port}/api/gateway + tcp: + host: 127.0.0.1 + port: 8090 + timeout: 5000 + jsp: + form: + url: http://localhost:${server.port}/mock/jsp-form + json: + url: http://localhost:${server.port}/mock/jsp-json + mci: + url: http://localhost:${server.port}/api/mock/esb/api + mcistring: + url: http://localhost:${server.port}/api/mock/esb/string + +shinhan: + integration: + envrTypeCd: D + eai: + url: http://10.176.32.181 + internalMci: + url: http://10.176.32.173 + bancaMci: + url: http://10.176.32.117 + externalMci: + url: http://10.176.32.176 diff --git a/dap-was-sys/src/main/resources/application-local.yml b/dap-was-sys/src/main/resources/application-local.yml new file mode 100644 index 00000000..caa93c7f --- /dev/null +++ b/dap-was-sys/src/main/resources/application-local.yml @@ -0,0 +1,45 @@ +# Local 환경 전용 설정 (H2 메모리 DB 등) +spring: + config: + activate: + on-profile: local + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-local.yml + datasource: + url: jdbc:p6spy:h2:mem:testdb;DB_CLOSE_DELAY=-1; + driverClassName: com.p6spy.engine.spy.P6SpyDriver + username: sa + password: password + h2: + console: + enabled: true + +eims: + http: + url: http://localhost:${server.port}/api/gateway + tcp: + host: 127.0.0.1 + port: 8090 + timeout: 5000 + jsp: + form: + url: http://localhost:${server.port}/mock/jsp-form + json: + url: http://localhost:${server.port}/mock/jsp-json + mci: + url: http://localhost:${server.port}/api/mock/esb/api + mcistring: + url: http://localhost:${server.port}/api/mock/esb/string + +mcp: + security: + tenant-domains: + mcp-client-1: CUSTOMER,COMMON + mcp-client-2: ALL + +axhub: + gateway: + url: http://localhost:8081 + tool: + url: ${AXHUB_TOOL_URL:http://localhost:${server.port}} diff --git a/dap-was-sys/src/main/resources/application-prod.yml b/dap-was-sys/src/main/resources/application-prod.yml new file mode 100644 index 00000000..0351d3f8 --- /dev/null +++ b/dap-was-sys/src/main/resources/application-prod.yml @@ -0,0 +1,16 @@ +server: + port: ${PORT:8086} + +spring: + config: + activate: + on-profile: prod + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-prod.yml + +axhub: + gateway: + url: ${AXHUB_GATEWAY_URL} + tool: + url: ${AXHUB_TOOL_URL} diff --git a/dap-was-sys/src/main/resources/application-test.yml b/dap-was-sys/src/main/resources/application-test.yml new file mode 100644 index 00000000..4771d148 --- /dev/null +++ b/dap-was-sys/src/main/resources/application-test.yml @@ -0,0 +1,16 @@ +server: + port: ${PORT:8086} + +spring: + config: + activate: + on-profile: test + import: + - classpath:glow/application-glow.yml + - classpath:glow/application-glow-test.yml + +axhub: + gateway: + url: ${AXHUB_GATEWAY_URL} + tool: + url: ${AXHUB_TOOL_URL} diff --git a/dap-was-sys/src/main/resources/application.yml b/dap-was-sys/src/main/resources/application.yml new file mode 100644 index 00000000..5c05991b --- /dev/null +++ b/dap-was-sys/src/main/resources/application.yml @@ -0,0 +1,18 @@ +server: + port: 8086 +spring: + application: + name: dap-was-sys + profiles: + active: local +logging: + level: + org.apache.kafka: ERROR +mcp: + namespace: "" + manifest: + bundle-id: was-sys + name-prefix: "" + security: + tenant-domains: + TESTER-DEV: ALL diff --git a/dap-was-sys/src/main/resources/logback-spring.xml b/dap-was-sys/src/main/resources/logback-spring.xml new file mode 100644 index 00000000..5f946d79 --- /dev/null +++ b/dap-was-sys/src/main/resources/logback-spring.xml @@ -0,0 +1,24 @@ + + + + + + ${LOG_PATTERN} + + + + logs/dap-was-sys.log + + logs/dap-was-sys-%d{yyyy-MM-dd}.log + 30 + + + ${LOG_PATTERN} + + + + + + + + diff --git a/docker-compose.yml b/docker-compose.yml index bd34e964..32aa4dd0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -19,12 +19,15 @@ services: - AXHUB_SOURCE_DIR=/src - JAVA_TOOL_OPTIONS=-Xms64m -Xmx384m - SPRING_PROFILES_ACTIVE=${ACTIVE_PROFILE:-local} - - MCP_GATEWAY_FALLBACK_DEFAULT_URL=http://tool-oth:8084 - - MCP_GATEWAY_FALLBACK_ROUTES_SMS=http://tool-sms:8082 - - MCP_GATEWAY_FALLBACK_ROUTES_HR=http://tool-oth:8084 - - MCP_GATEWAY_FALLBACK_DEFAULT_URL=http://was-oth:8084 - - MCP_GATEWAY_FALLBACK_ROUTES_SMS=http://was-sms:8082 - - MCP_GATEWAY_FALLBACK_ROUTES_HR=http://was-oth:8084 + - MCP_GATEWAY_FALLBACK_DEFAULT_URL=http://was-cus:8084 + - MCP_GATEWAY_FALLBACK_ROUTES_CUS=http://was-cus:8084 + - MCP_GATEWAY_FALLBACK_ROUTES_SAL=http://was-sal:8082 + # Backward-compatible route during the SMS-to-SAL Pod name transition. + - MCP_GATEWAY_FALLBACK_ROUTES_SMS=http://was-sal:8082 + - MCP_GATEWAY_FALLBACK_ROUTES_OTH=http://was-cus:8084 + - MCP_GATEWAY_FALLBACK_ROUTES_HR=http://was-cus:8084 + - MCP_GATEWAY_FALLBACK_ROUTES_PRO=http://was-pro:8085 + - MCP_GATEWAY_FALLBACK_ROUTES_SYS=http://was-sys:8086 - REPORT_SERVICE_URL=http://tool-report:8092 tool-report: @@ -47,40 +50,40 @@ services: volumes: - ./mci-mock:/home/wiremock - was-sms: + was-sal: build: context: . - dockerfile: dap-was-sms/Dockerfile + dockerfile: dap-was-sal/Dockerfile ports: - "8282:8082" environment: - TZ=Asia/Seoul - AXHUB_GATEWAY_URL=http://gateway:8081 - AXHUB_SOURCE_DIR=/src - - AXHUB_TOOL_URL=http://was-sms:8082 - - GLOW_COMMUNICATION_MCI_HOMT=http://mci-mock + - AXHUB_TOOL_URL=http://was-sal:8082 + - GLOW_COMMUNICATION_MCI_HOST=http://mci-mock - GLOW_COMMUNICATION_MCI_PORT=8080 - - GLOW_COMMUNICATION_EXTMCI_HOMT=http://mci-mock + - GLOW_COMMUNICATION_EXTMCI_HOST=http://mci-mock - GLOW_COMMUNICATION_EXTMCI_PORT=8080 - - GLOW_COMMUNICATION_EAI_HOMT=http://mci-mock + - GLOW_COMMUNICATION_EAI_HOST=http://mci-mock - GLOW_COMMUNICATION_EAI_PORT=8080 - SPRING_PROFILES_ACTIVE=${ACTIVE_PROFILE:-local} - was-oth: + was-cus: build: context: . - dockerfile: dap-was-oth/Dockerfile + dockerfile: dap-was-cus/Dockerfile ports: - "8284:8084" environment: - TZ=Asia/Seoul - AXHUB_GATEWAY_URL=http://gateway:8081 - - AXHUB_TOOL_URL=http://was-oth:8084 - - GLOW_COMMUNICATION_MCI_HOMT=http://mci-mock + - AXHUB_TOOL_URL=http://was-cus:8084 + - GLOW_COMMUNICATION_MCI_HOST=http://mci-mock - GLOW_COMMUNICATION_MCI_PORT=8080 - - GLOW_COMMUNICATION_EXTMCI_HOMT=http://mci-mock + - GLOW_COMMUNICATION_EXTMCI_HOST=http://mci-mock - GLOW_COMMUNICATION_EXTMCI_PORT=8080 - - GLOW_COMMUNICATION_EAI_HOMT=http://mci-mock + - GLOW_COMMUNICATION_EAI_HOST=http://mci-mock - GLOW_COMMUNICATION_EAI_PORT=8080 - SPRING_PROFILES_ACTIVE=${ACTIVE_PROFILE:-local} @@ -108,3 +111,37 @@ services: - ./bin/docker:/usr/bin/docker - /usr/libexec/docker/cli-plugins/docker-compose:/usr/libexec/docker/cli-plugins/docker-compose restart: always + + was-pro: + build: + context: . + dockerfile: dap-was-pro/Dockerfile + ports: + - "8085:8085" + environment: + - TZ=Asia/Seoul + - AXHUB_GATEWAY_URL=http://gateway:8081 + - AXHUB_TOOL_URL=http://was-pro:8085 + - GLOW_COMMUNICATION_MCI_HOST=http://mci-mock + - GLOW_COMMUNICATION_MCI_PORT=8080 + - GLOW_COMMUNICATION_EXTMCI_HOST=http://mci-mock + - GLOW_COMMUNICATION_EXTMCI_PORT=8080 + - GLOW_COMMUNICATION_EAI_HOST=http://mci-mock + - GLOW_COMMUNICATION_EAI_PORT=8080 + + was-sys: + build: + context: . + dockerfile: dap-was-sys/Dockerfile + ports: + - "8086:8086" + environment: + - TZ=Asia/Seoul + - AXHUB_GATEWAY_URL=http://gateway:8081 + - AXHUB_TOOL_URL=http://was-sys:8086 + - GLOW_COMMUNICATION_MCI_HOST=http://mci-mock + - GLOW_COMMUNICATION_MCI_PORT=8080 + - GLOW_COMMUNICATION_EXTMCI_HOST=http://mci-mock + - GLOW_COMMUNICATION_EXTMCI_PORT=8080 + - GLOW_COMMUNICATION_EAI_HOST=http://mci-mock + - GLOW_COMMUNICATION_EAI_PORT=8080 diff --git a/settings.gradle b/settings.gradle index e68aab4d..e6042d11 100644 --- a/settings.gradle +++ b/settings.gradle @@ -2,6 +2,8 @@ rootProject.name = 'dap-admin' include 'dap-gateway' include 'dap-was-lib' -include 'dap-was-sms' -include 'dap-was-oth' +include 'dap-was-cus' +include 'dap-was-sal' +include 'dap-was-pro' +include 'dap-was-sys' include 'dap-tool-report'