refactor: massive rename dap -> dat and dapmt -> datmt preserving encoding
All checks were successful
Deploy Tools / deploy (push) Successful in 1m21s

This commit is contained in:
jade
2026-08-20 10:41:55 +09:00
parent 7f84dd848b
commit 7389c6380c
445 changed files with 751 additions and 751 deletions

View File

@@ -2,7 +2,7 @@
신한라이프 업무 기능을 MCP(Model Context Protocol) Tool로 제공하는 Java 멀티 모듈 프로젝트입니다. 각 업무 모듈은 독립 실행 가능한 Spring Boot 애플리케이션이며, MCP Streamable HTTP와 REST 실행 API를 함께 제공합니다.
이 저장소에는 DAPMS(Gateway) 애플리케이션이 포함되어 있지 않습니다. DAPMT는 Gateway로 Tool을 push 등록하지 않으며, 각 Pod가 `GET /tool-manifest`를 제공하면 DAPMS가 이 Manifest를 pull하여 Tool 목록을 구성합니다. Tool 조회와 직접 실행은 각 Pod에서도 자체적으로 처리합니다.
이 저장소에는 DAPMS(Gateway) 애플리케이션이 포함되어 있지 않습니다. DATMT는 Gateway로 Tool을 push 등록하지 않으며, 각 Pod가 `GET /tool-manifest`를 제공하면 DAPMS가 이 Manifest를 pull하여 Tool 목록을 구성합니다. Tool 조회와 직접 실행은 각 Pod에서도 자체적으로 처리합니다.
## 기술 기준
@@ -19,15 +19,15 @@
| 모듈 | 역할 | 기본 포트 | Tool 수 |
|---|---|---:|---:|
| `dap-was-lib` | MCP 서버, Tool 스캔·실행, Schema, Manifest, 보안, MCI/EAI/HTTP 연동 공통 기능 | - | - |
| `dap-was-cus` | 고객·CRM·VOC·웹 콘텐츠 관리 Tool | 8084 | 51 |
| `dap-was-sal` | 영업·청구·인수·동의·현장지원 Tool | 8082 | 52 |
| `dap-was-pro` | 상품·계약·고객·GA 설계사 Tool | 8085 | 50 |
| `dap-was-sys` | IAM·시스템 상태·공지·점검·배포 Tool | 8086 | 50 |
| `dat-was-lib` | MCP 서버, Tool 스캔·실행, Schema, Manifest, 보안, MCI/EAI/HTTP 연동 공통 기능 | - | - |
| `dat-was-cus` | 고객·CRM·VOC·웹 콘텐츠 관리 Tool | 8084 | 51 |
| `dat-was-sal` | 영업·청구·인수·동의·현장지원 Tool | 8082 | 52 |
| `dat-was-pro` | 상품·계약·고객·GA 설계사 Tool | 8085 | 50 |
| `dat-was-sys` | IAM·시스템 상태·공지·점검·배포 Tool | 8086 | 50 |
총 203개의 `@McpTool` 선언과 203개의 V17 Tool YAML 정의가 있습니다.
현재 업무 구현은 개발·연동 검증 단계입니다. `dap-was-sal``cmm_claim_search``cmm_memo_retriever`는 각각 MCI와 HTTP Client 흐름을 사용하며, 나머지 Tool은 외부 시스템을 변경하지 않는 모의 응답을 중심으로 구현되어 있습니다.
현재 업무 구현은 개발·연동 검증 단계입니다. `dat-was-sal``cmm_claim_search``cmm_memo_retriever`는 각각 MCI와 HTTP Client 흐름을 사용하며, 나머지 Tool은 외부 시스템을 변경하지 않는 모의 응답을 중심으로 구현되어 있습니다.
## 처리 구조
@@ -60,20 +60,20 @@ Tool Pod
4. `ToolPodMcpToolSynchronizer`가 Tool을 MCP SDK 서버에 등록합니다.
5. REST와 MCP 요청은 공통 `McpToolExecutionService`를 통해 실행됩니다.
DAPMT 내부에는 `/registry/register`, `/registry/deregister` 호출이나 주기적인 Gateway heartbeat 전송이 없습니다. `ToolRegistryHeartbeatSender`라는 클래스명은 호환성을 위해 남아 있지만 현재 역할은 로컬 Tool 스캔과 메타데이터 생성뿐입니다.
DATMT 내부에는 `/registry/register`, `/registry/deregister` 호출이나 주기적인 Gateway heartbeat 전송이 없습니다. `ToolRegistryHeartbeatSender`라는 클래스명은 호환성을 위해 남아 있지만 현재 역할은 로컬 Tool 스캔과 메타데이터 생성뿐입니다.
### DAPMS 연동 방식
```text
DAPMS
└─ GET {DAPMT Pod URL}/tool-manifest
└─ GET {DATMT Pod URL}/tool-manifest
└─ bundleId + revision + tools[]
└─ 각 Tool endpoint: {Pod URL}/mcp/{toolName}
```
- `mcp.manifest.bundle-id`는 Manifest를 제공하는 Pod의 고유 식별자이며 필수입니다.
- 현재 값은 `was-sal`, `was-cus`, `was-pro`, `was-sys`입니다.
- DAPMS에 설정한 bundle ID와 DAPMT가 반환하는 `bundleId`가 일치해야 같은 Tool bundle로 관리됩니다.
- DAPMS에 설정한 bundle ID와 DATMT가 반환하는 `bundleId`가 일치해야 같은 Tool bundle로 관리됩니다.
- `mcp.manifest.name-prefix`가 비어 있지 않으면 모든 Tool 이름이 해당 prefix로 시작해야 합니다.
- Manifest 내용이 바뀌면 `revision`이 증가하며, `If-None-Match`가 일치하면 `304 Not Modified`를 반환합니다.
@@ -115,11 +115,11 @@ Invoke-RestMethod `
### 요청 헤더 계약
DAPMS가 DAPMT Tool Service를 호출할 때 사용하는 헤더는 다음과 같습니다. HTTP 헤더 이름은 대소문자를 구분하지 않지만, 문서와 구현에서는 아래 표기를 기준으로 사용합니다.
DAPMS가 DATMT Tool Service를 호출할 때 사용하는 헤더는 다음과 같습니다. HTTP 헤더 이름은 대소문자를 구분하지 않지만, 문서와 구현에서는 아래 표기를 기준으로 사용합니다.
| 헤더 | 필수 여부 | 용도 | 전달 동작 |
|---|---|---|---|
| `X-Tool-Server-API-Key` | 인증 설정 시 필수 | DAPMS와 DAPMT 사이의 Tool Server 인증 | `mcp.security.api-key` 또는 `api-keys`와 비교 |
| `X-Tool-Server-API-Key` | 인증 설정 시 필수 | DAPMS와 DATMT 사이의 Tool Server 인증 | `mcp.security.api-key` 또는 `api-keys`와 비교 |
| `guid` | 선택 | 업무 호출 상관관계 식별자 | 실행 로그, 성공 응답, 하위 HTTP 호출로 전달 |
| `x-request-id` | 선택 | 요청 추적 식별자 | 실행 로그, 성공 응답, 하위 HTTP 호출로 전달 |
| `employee-no` | 선택 | 실제 사용자 사번 | 하위 HTTP 호출로 전달 |
@@ -172,7 +172,7 @@ SystemStatusResponse getSystemStatus(SystemStatusRequest request);
각 Tool은 업무 모듈의 다음 경로에 YAML 정의를 가집니다.
```text
dap-was-*/src/main/resources/tool-definitions/{category}/{tool-name}.yml
dat-was-*/src/main/resources/tool-definitions/{category}/{tool-name}.yml
```
V17 정의의 주요 필수 항목은 다음과 같습니다.
@@ -211,19 +211,19 @@ $env:TOOL_SERVER_API_KEY = 'tool-server-key'
```powershell
# 영업 Tool Pod
$env:AXHUB_TOOL_URL = 'http://localhost:8082'
.\gradlew.bat :dap-was-sal:bootRun
.\gradlew.bat :dat-was-sal:bootRun
# 고객 Tool Pod
$env:AXHUB_TOOL_URL = 'http://localhost:8084'
.\gradlew.bat :dap-was-cus:bootRun
.\gradlew.bat :dat-was-cus:bootRun
# 상품 Tool Pod
$env:AXHUB_TOOL_URL = 'http://localhost:8085'
.\gradlew.bat :dap-was-pro:bootRun
.\gradlew.bat :dat-was-pro:bootRun
# 시스템 Tool Pod
$env:AXHUB_TOOL_URL = 'http://localhost:8086'
.\gradlew.bat :dap-was-sys:bootRun
.\gradlew.bat :dat-was-sys:bootRun
```
실행 후 SYS Pod 기준 확인 URL은 다음과 같습니다.
@@ -242,7 +242,7 @@ http://localhost:8086/swagger-ui/index.html
| `PORT` | Pod 수신 포트 | 모듈별 기본 포트 |
| `TOOL_SERVER_API_KEY` | DAPMS가 `X-Tool-Server-API-Key`로 전달할 공통 인증 Key | `tool-server-key` |
| `AXHUB_TOOL_URL` | Manifest의 Tool endpoint 생성에 사용할 Pod 외부 URL | `http://localhost:${server.port}` |
| `AXHUB_GATEWAY_URL` | 프로필 및 Compose 호환용 Gateway URL. 현재 DAPMT의 push 등록에는 사용하지 않음 | `http://localhost:8081` |
| `AXHUB_GATEWAY_URL` | 프로필 및 Compose 호환용 Gateway URL. 현재 DATMT의 push 등록에는 사용하지 않음 | `http://localhost:8081` |
| `SPRING_DATA_REDIS_HOST` | Redis 호스트 | `localhost` |
| `SPRING_DATA_REDIS_PORT` | Redis 포트 | `6379` |
| `GLOW_COMMUNICATION_MCI_HOST` | MCI 대상 호스트 | 프로필별 설정 |
@@ -265,12 +265,12 @@ http://localhost:8086/swagger-ui/index.html
PodScaffolder <module-name> <port> [author] [yyyy.MM.dd]
```
예를 들어 `payment 8099`를 입력하면 `dap-was-payment` 모듈을 생성합니다. 생성되는 `application.yml`에는 다음 계약이 포함됩니다.
예를 들어 `payment 8099`를 입력하면 `dat-was-payment` 모듈을 생성합니다. 생성되는 `application.yml`에는 다음 계약이 포함됩니다.
```yaml
mcp:
manifest:
bundle-id: dap-was-payment
bundle-id: dat-was-payment
name-prefix: ""
security:
api-key: ${TOOL_SERVER_API_KEY:tool-server-key}
@@ -294,11 +294,11 @@ mcp:
.\gradlew.bat test
# 모듈별 테스트
.\gradlew.bat :dap-was-lib:test
.\gradlew.bat :dap-was-cus:test
.\gradlew.bat :dap-was-sal:test
.\gradlew.bat :dap-was-pro:test
.\gradlew.bat :dap-was-sys:test
.\gradlew.bat :dat-was-lib:test
.\gradlew.bat :dat-was-cus:test
.\gradlew.bat :dat-was-sal:test
.\gradlew.bat :dat-was-pro:test
.\gradlew.bat :dat-was-sys:test
# Tool 이름·중복 검사
.\gradlew.bat validateMcpToolNames
@@ -322,7 +322,7 @@ mcp:
## Docker Compose
`docker-compose.yml`은 DAPMT의 네 업무 Pod만 정의합니다.
`docker-compose.yml`은 DATMT의 네 업무 Pod만 정의합니다.
| 서비스 | 컨테이너 포트 | 호스트 포트 |
|---|---:|---:|
@@ -334,7 +334,7 @@ mcp:
모듈 Dockerfile은 사전에 생성된 Boot JAR를 이미지에 복사합니다. 먼저 JAR를 빌드한 뒤 Compose를 실행합니다.
```powershell
.\gradlew.bat :dap-was-sal:bootJar :dap-was-cus:bootJar :dap-was-pro:bootJar :dap-was-sys:bootJar
.\gradlew.bat :dat-was-sal:bootJar :dat-was-cus:bootJar :dat-was-pro:bootJar :dat-was-sys:bootJar
docker compose up --build
```
@@ -342,14 +342,14 @@ Compose 파일의 용도와 현재 주의점은 다음과 같습니다.
| 파일 | 용도 | 현재 소스 기준 주의점 |
|---|---|---|
| `docker-compose.yml` | DAPMT 네 Pod 단독 실행 | `gateway` 서비스가 없지만 push 등록이 제거되어 DAPMT 시작에는 필요하지 않음 |
| `docker-compose.local.yml` | DAPMS와 DAPMT의 로컬 통합 구성 | 두 저장소가 같은 상위 디렉터리에 있는 구조를 가정 |
| `docker-compose.prod.yml` | DAPMS와 DAPMT의 개발 프로필 기반 OCI 구성 | 저장소의 runner 등록 토큰을 운영 Secret으로 분리해야 함 |
| `docker-compose.yml` | DATMT 네 Pod 단독 실행 | `gateway` 서비스가 없지만 push 등록이 제거되어 DATMT 시작에는 필요하지 않음 |
| `docker-compose.local.yml` | DAPMS와 DATMT의 로컬 통합 구성 | 두 저장소가 같은 상위 디렉터리에 있는 구조를 가정 |
| `docker-compose.prod.yml` | DAPMS와 DATMT의 개발 프로필 기반 OCI 구성 | 저장소의 runner 등록 토큰을 운영 Secret으로 분리해야 함 |
`docker-compose.local.yml``docker-compose.prod.yml`의 build context는 각각 `./dap-was-dapms`, `./dap-was-dapmt`입니다. 현재 파일 위치에서 사용할 때는 context 기준을 두 저장소의 상위 디렉터리로 맞춰야 합니다.
`docker-compose.local.yml``docker-compose.prod.yml`의 build context는 각각 `./dat-was-dapms`, `./dat-was-datmt`입니다. 현재 파일 위치에서 사용할 때는 context 기준을 두 저장소의 상위 디렉터리로 맞춰야 합니다.
```powershell
# DAPMT 저장소 디렉터리에서 실행
# DATMT 저장소 디렉터리에서 실행
docker compose --project-directory .. -f docker-compose.local.yml up --build
```
@@ -375,19 +375,19 @@ docker compose --project-directory .. -f docker-compose.local.yml up --build
| 주제 | 위치 |
|---|---|
| 공통 빌드 및 검증 작업 | `build.gradle` |
| REST Tool 실행 API | `dap-was-lib/src/main/java/io/shinhanlife/dap/mcc/presentation/BusinessToolController.java` |
| 요청 헤더 캡처·전달 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/McpRequestHeaderFilter.java`, `McpRequestHeaderContext.java` |
| Tool 실행 서비스 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/McpToolExecutionService.java` |
| JSON Schema 2020-12 검증 설정 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/config/ToolSchemaConfiguration.java` |
| 실행 메서드 Registry | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/McpToolMethodRegistry.java` |
| MCP SDK 서버 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolMcpServerConfiguration.java` |
| MCP Tool 동기화 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolPodMcpToolSynchronizer.java` |
| Tool 스캔 및 메타데이터 생성 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/ToolRegistryHeartbeatSender.java` |
| YAML Tool 정의 로딩 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/metadata/ToolDefinitionRepository.java` |
| V17 정의 검증 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/metadata/ToolDefinitionValidator.java` |
| Manifest 생성 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/manifest/ToolManifestService.java` |
| API Key 인터셉터 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/mcp/security/ApiKeyInterceptor.java` |
| Tool·Pod 스캐폴딩 | `dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java`, `PodScaffolder.java` |
| REST Tool 실행 API | `dat-was-lib/src/main/java/io/shinhanlife/dat/mcc/presentation/BusinessToolController.java` |
| 요청 헤더 캡처·전달 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/McpRequestHeaderFilter.java`, `McpRequestHeaderContext.java` |
| Tool 실행 서비스 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/McpToolExecutionService.java` |
| JSON Schema 2020-12 검증 설정 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/config/ToolSchemaConfiguration.java` |
| 실행 메서드 Registry | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/McpToolMethodRegistry.java` |
| MCP SDK 서버 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/ToolMcpServerConfiguration.java` |
| MCP Tool 동기화 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/ToolPodMcpToolSynchronizer.java` |
| Tool 스캔 및 메타데이터 생성 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/ToolRegistryHeartbeatSender.java` |
| YAML Tool 정의 로딩 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/metadata/ToolDefinitionRepository.java` |
| V17 정의 검증 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/metadata/ToolDefinitionValidator.java` |
| Manifest 생성 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/manifest/ToolManifestService.java` |
| API Key 인터셉터 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/mcp/security/ApiKeyInterceptor.java` |
| Tool·Pod 스캐폴딩 | `dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java`, `PodScaffolder.java` |
## 개발 시 권장 확인 순서
@@ -396,5 +396,5 @@ docker compose --project-directory .. -f docker-compose.local.yml up --build
3. `validateMcpToolNames``validateToolSchemaV17`을 실행합니다.
4. 모듈 테스트와 전체 테스트를 실행합니다.
5. 로컬 Pod에서 `/mcp/api/v1/tools/local``/tool-manifest`를 확인합니다.
6. DAPMS의 bundle ID, Pod Manifest URL, Tool Server API Key가 DAPMT 설정과 일치하는지 확인합니다.
6. DAPMS의 bundle ID, Pod Manifest URL, Tool Server API Key가 DATMT 설정과 일치하는지 확인합니다.
7. REST와 MCP 양쪽에서 동일한 Tool 결과·요청 헤더 전달·오류 계약을 확인합니다.

View File

@@ -17,7 +17,7 @@ allprojects {
version = '0.0.1-SNAPSHOT'
}
// dap-gateway, dap-was-lib, dap-was-oth, dap-was-sms에 공통 적용합니다.
// dat-gateway, dat-was-lib, dat-was-oth, dat-was-sms에 공통 적용합니다.
subprojects {
apply plugin: 'java'
apply plugin: 'io.spring.dependency-management'
@@ -81,17 +81,17 @@ subprojects {
}
// Tool 이름 중복 검사 프로그램이 포함된 공통 라이브러리 모듈입니다.
def toolCoreProject = project(':dap-was-lib')
def toolCoreProject = project(':dat-was-lib')
// 전체 Tool Pod의 @McpTool(name) 중복을 배포 산출물 생성 전에 차단합니다.
tasks.register('validateMcpToolNames', JavaExec) {
group = 'verification'
description = 'Checks duplicate @McpTool names across all Tool modules before packaging.'
// 검사 Runner를 실행하기 전에 dap-was-lib 클래스를 먼저 컴파일합니다.
// 검사 Runner를 실행하기 전에 dat-was-lib 클래스를 먼저 컴파일합니다.
dependsOn toolCoreProject.tasks.named('classes')
classpath = toolCoreProject.sourceSets.main.runtimeClasspath
mainClass.set('io.shinhanlife.dap.lib.validation.McpToolNameValidationRunner')
mainClass.set('io.shinhanlife.dat.lib.validation.McpToolNameValidationRunner')
args rootProject.projectDir.absolutePath
}
@@ -100,7 +100,7 @@ tasks.register('validateToolSchemaV17', JavaExec) {
description = 'Validates BC-DAB-STD-003 V17 definitions for every @McpTool.'
dependsOn toolCoreProject.tasks.named('classes')
classpath = toolCoreProject.sourceSets.main.runtimeClasspath
mainClass.set('io.shinhanlife.dap.lib.validation.ToolSchemaV17ValidationRunner')
mainClass.set('io.shinhanlife.dat.lib.validation.ToolSchemaV17ValidationRunner')
args rootProject.projectDir.absolutePath
}

View File

@@ -1,14 +0,0 @@
package io.shinhanlife.dap.mcc.biz.cmm.converter;
import io.shinhanlife.dap.mcc.biz.cmm.dto.ClaimSearchRequest;
import io.shinhanlife.dap.mcc.biz.cmm.dto.ClaimSearchResponse;
import io.shinhanlife.dap.mcc.infra.itrf.mci.ncla.io.CLCNNB00001_I;
import io.shinhanlife.dap.mcc.infra.itrf.mci.ncla.io.CLCNNB00001_O;
import org.mapstruct.Mapper;
@Mapper(componentModel = "spring")
public interface ClaimSearchConverter {
CLCNNB00001_I toLegacyRequest(ClaimSearchRequest request);
ClaimSearchRequest toRequest(CLCNNB00001_I mciRequest);
ClaimSearchResponse toResponse(CLCNNB00001_O mciRes);
}

View File

@@ -4,7 +4,7 @@ plugins {
}
dependencies {
// MCP Server, Tool , MCI/EAI dap-was-lib에서 .
implementation project(':dap-was-lib')
// MCP Server, Tool , MCI/EAI dat-was-lib에서 .
implementation project(':dat-was-lib')
implementation 'org.apache.poi:poi-ooxml:5.3.0'
}

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.biz.crm.dto;
package io.shinhanlife.dat.mcc.biz.crm.dto;
import lombok.Data;
import org.springaicommunity.mcp.annotation.McpToolParam;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.biz.crm.dto;
package io.shinhanlife.dat.mcc.biz.crm.dto;
import java.util.List;
import lombok.Data;

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.biz.crm.usecase;
package io.shinhanlife.dat.mcc.biz.crm.usecase;
import io.shinhanlife.dap.lib.annotation.GrowToolHint;
import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolRequest;
import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolResponse;
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolRequest;
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolResponse;
import org.springaicommunity.mcp.annotation.McpTool;
public interface CrmToolUseCase {

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.biz.crm.usecase.impl;
package io.shinhanlife.dat.mcc.biz.crm.usecase.impl;
import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolRequest;
import io.shinhanlife.dap.mcc.biz.crm.dto.CrmToolResponse;
import io.shinhanlife.dap.mcc.biz.crm.usecase.CrmToolUseCase;
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolRequest;
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolResponse;
import io.shinhanlife.dat.mcc.biz.crm.usecase.CrmToolUseCase;
import java.time.LocalDateTime;
import java.util.List;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.biz.voc.dto;
package io.shinhanlife.dat.mcc.biz.voc.dto;
import lombok.Data;
import org.springaicommunity.mcp.annotation.McpToolParam;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.biz.voc.dto;
package io.shinhanlife.dat.mcc.biz.voc.dto;
import java.util.List;
import lombok.Data;

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.biz.voc.usecase;
package io.shinhanlife.dat.mcc.biz.voc.usecase;
import io.shinhanlife.dap.lib.annotation.GrowToolHint;
import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolRequest;
import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolResponse;
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolRequest;
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolResponse;
import org.springaicommunity.mcp.annotation.McpTool;
public interface VocToolUseCase {

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.biz.voc.usecase.impl;
package io.shinhanlife.dat.mcc.biz.voc.usecase.impl;
import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolRequest;
import io.shinhanlife.dap.mcc.biz.voc.dto.VocToolResponse;
import io.shinhanlife.dap.mcc.biz.voc.usecase.VocToolUseCase;
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolRequest;
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolResponse;
import io.shinhanlife.dat.mcc.biz.voc.usecase.VocToolUseCase;
import java.time.LocalDateTime;
import java.util.List;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.biz.wcm.dto;
package io.shinhanlife.dat.mcc.biz.wcm.dto;
import lombok.Data;
import org.springaicommunity.mcp.annotation.McpToolParam;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.biz.wcm.dto;
package io.shinhanlife.dat.mcc.biz.wcm.dto;
import java.util.List;
import lombok.Data;

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.biz.wcm.usecase;
package io.shinhanlife.dat.mcc.biz.wcm.usecase;
import io.shinhanlife.dap.lib.annotation.GrowToolHint;
import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolRequest;
import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolResponse;
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolRequest;
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolResponse;
import org.springaicommunity.mcp.annotation.McpTool;
public interface WcmToolUseCase {

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.biz.wcm.usecase.impl;
package io.shinhanlife.dat.mcc.biz.wcm.usecase.impl;
import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolRequest;
import io.shinhanlife.dap.mcc.biz.wcm.dto.WcmToolResponse;
import io.shinhanlife.dap.mcc.biz.wcm.usecase.WcmToolUseCase;
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolRequest;
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolResponse;
import io.shinhanlife.dat.mcc.biz.wcm.usecase.WcmToolUseCase;
import java.time.LocalDateTime;
import java.util.List;
import org.springframework.stereotype.Service;

View File

@@ -1,9 +1,9 @@
package io.shinhanlife.dap.mcc.cus;
package io.shinhanlife.dat.mcc.cus;
/**
* @package io.shinhanlife.dap.mcc.cus
* @className DapWasCusApplication
* @package io.shinhanlife.dat.mcc.cus
* @className DatWasCusApplication
* @description AX HUB 시스템 처리 클래스
* @author 0986406
* @create 2026.09.01
@@ -20,14 +20,14 @@ 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;
import io.shinhanlife.dat.lib.mcp.ToolMcpServerConfiguration;
@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"})
@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"})
@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dat.mcc", "io.shinhanlife.dat.lib"})
@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dat.mcc", "io.shinhanlife.dat.lib"})
@EnableCaching
@Import(ToolMcpServerConfiguration.class)
public class DapWasCusApplication {
public class DatWasCusApplication {
public static void main(String[] args) {
SpringApplication.run(DapWasCusApplication.class, args);
SpringApplication.run(DatWasCusApplication.class, args);
}
}

View File

@@ -2,7 +2,7 @@ server:
port: 8084
spring:
application:
name: dap-was-cus
name: dat-was-cus
profiles:
active: local
logging:

View File

@@ -16,10 +16,10 @@
<property name="HOSTNAME" value="${HOSTNAME}" />
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>/swlog/dap-was-sal/A01/${HOSTNAME}_A01.log</file> <!-- 현재 로그가 쌓이는 파일 -->
<file>/swlog/dat-was-cus/A01/${HOSTNAME}_A01.log</file> <!-- 현재 로그가 쌓이는 파일 -->
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<!-- 매일 자정에 날짜를 붙여서 지난 로그를 분리 저장 -->
<fileNamePattern>/swlog/dap-was-sal/A01/${HOSTNAME}_A01_%d{yyyyMMdd}.%i.log</fileNamePattern>
<fileNamePattern>/swlog/dat-was-cus/A01/${HOSTNAME}_A01_%d{yyyyMMdd}.%i.log</fileNamePattern>
<!-- 개별 로그 파일 크기를 100MB로 제한하고, 전체 보관 일수는 30일, 총 로그 누적 용량은 1GB로 제한 -->
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.adapter.dto;
package io.shinhanlife.dat.lib.adapter.dto;
import lombok.Builder;
import lombok.NoArgsConstructor;
@@ -8,7 +8,7 @@ import lombok.Getter;
import lombok.Setter;
/**
* @package io.shinhanlife.dap.lib.adapter.dto
* @package io.shinhanlife.dat.lib.adapter.dto
* @className ErrorDetail
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,10 +1,10 @@
package io.shinhanlife.dap.lib.adapter.dto;
package io.shinhanlife.dat.lib.adapter.dto;
import lombok.Getter;
import lombok.Setter;
/**
* @package io.shinhanlife.dap.lib.adapter.dto
* @package io.shinhanlife.dat.lib.adapter.dto
* @className JsonRpcRequest
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.adapter.dto;
package io.shinhanlife.dat.lib.adapter.dto;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;
import lombok.Getter;
@@ -6,7 +6,7 @@ import lombok.Setter;
// 2. 응답 DTO
/**
* @package io.shinhanlife.dap.lib.adapter.dto
* @package io.shinhanlife.dat.lib.adapter.dto
* @className JsonRpcResponse
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.adapter.dto;
package io.shinhanlife.dat.lib.adapter.dto;
import lombok.Builder;
import lombok.NoArgsConstructor;
@@ -11,7 +11,7 @@ import lombok.Getter;
import lombok.Setter;
/**
* @package io.shinhanlife.dap.lib.adapter.dto
* @package io.shinhanlife.dat.lib.adapter.dto
* @className Params
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.adapter.test;
package io.shinhanlife.dat.lib.adapter.test;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.adapter.util;
package io.shinhanlife.dat.lib.adapter.util;
import ch.qos.logback.classic.pattern.MessageConverter;
import ch.qos.logback.classic.spi.ILoggingEvent;
@@ -9,7 +9,7 @@ import ch.qos.logback.classic.spi.ILoggingEvent;
* 여기서 PiiMaskingUtils.mask() 호출하여 PII(주민번호, 계좌번호 ) 안전하게 별표(*) 처리합니다.
*/
/**
* @package io.shinhanlife.dap.lib.adapter.util
* @package io.shinhanlife.dat.lib.adapter.util
* @className PiiMaskingLogbackConverter
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,10 +1,10 @@
package io.shinhanlife.dap.lib.adapter.util;
package io.shinhanlife.dat.lib.adapter.util;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
* @package io.shinhanlife.dap.lib.adapter.util
* @package io.shinhanlife.dat.lib.adapter.util
* @className PiiMaskingUtils
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.annotation;
package io.shinhanlife.dat.lib.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
@@ -7,7 +7,7 @@ import java.lang.annotation.Target;
/**
* Spring AI @Tool 어노테이션을 보완하여 MCP 시스템 메타데이터를 추가 제공하는 힌트 어노테이션
* @package io.shinhanlife.dap.lib.annotation
* @package io.shinhanlife.dat.lib.annotation
* @className GrowToolHint
* @description 비즈니스 로직(Tool) 시스템 제어 메타데이터 분리
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.annotation;
package io.shinhanlife.dat.lib.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.lib.aop;
package io.shinhanlife.dat.lib.aop;
/**
* @package io.shinhanlife.dap.lib.aop
* @package io.shinhanlife.dat.lib.aop
* @className ToolSlaMonitoringAspect
* @description AX HUB 시스템 처리 클래스
* @author 0986406
@@ -15,7 +15,7 @@ package io.shinhanlife.dap.lib.aop;
*
* </pre>
*/
import io.shinhanlife.dap.lib.config.McpProperties;
import io.shinhanlife.dat.lib.config.McpProperties;
import java.lang.reflect.Method;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.config;
package io.shinhanlife.dat.lib.config;
import io.shinhanlife.glow.communication.module.http.component.GlowHttpComponent;
import java.net.http.HttpClient;

View File

@@ -1,11 +1,11 @@
package io.shinhanlife.dap.lib.config;
package io.shinhanlife.dat.lib.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @package io.shinhanlife.dap.lib.config
* @package io.shinhanlife.dat.lib.config
* @className CorsConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.config;
package io.shinhanlife.dat.lib.config;
import lombok.Getter;
import lombok.Setter;
@@ -11,7 +11,7 @@ import org.springframework.stereotype.Component;
* 자바 객체(Bean) 매핑하여 제공합니다.
*/
/**
* @package io.shinhanlife.dap.lib.config
* @package io.shinhanlife.dat.lib.config
* @className GlowCommunicationProperties
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.config;
package io.shinhanlife.dat.lib.config;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -7,7 +7,7 @@ import org.springframework.context.annotation.Configuration;
import java.util.Map;
/**
* @package io.shinhanlife.dap.lib.config
* @package io.shinhanlife.dat.lib.config
* @className McpProperties
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.config;
package io.shinhanlife.dat.lib.config;
import javax.sql.DataSource;
@@ -8,7 +8,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @package io.shinhanlife.dap.lib.config
* @package io.shinhanlife.dat.lib.config
* @className MybatisConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406
@@ -25,7 +25,7 @@ import org.mybatis.spring.annotation.MapperScan;
import io.shinhanlife.glow.GlowMybatisMapper;
@Configuration
@MapperScan(basePackages = "io.shinhanlife.dap", annotationClass = GlowMybatisMapper.class)
@MapperScan(basePackages = "io.shinhanlife.dat", annotationClass = GlowMybatisMapper.class)
public class MybatisConfig {
@Bean

View File

@@ -1,10 +1,10 @@
package io.shinhanlife.dap.lib.config;
package io.shinhanlife.dat.lib.config;
import com.p6spy.engine.logging.Category;
import com.p6spy.engine.spy.appender.MessageFormattingStrategy;
/**
* @package io.shinhanlife.dap.lib.config
* @package io.shinhanlife.dat.lib.config
* @className P6SpySqlFormatter
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,10 +1,10 @@
package io.shinhanlife.dap.lib.config;
package io.shinhanlife.dat.lib.config;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.json.schema.JsonSchemaValidator;
import io.modelcontextprotocol.json.schema.jackson2.DefaultJsonSchemaValidator;
import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
import io.shinhanlife.dap.lib.validation.ToolArgumentSchemaValidator;
import io.shinhanlife.dat.lib.util.ToolSchemaResolver;
import io.shinhanlife.dat.lib.validation.ToolArgumentSchemaValidator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.lib.dto;
package io.shinhanlife.dat.lib.dto;
/**
* @package io.shinhanlife.dap.mcg.dto
* @package io.shinhanlife.dat.mcg.dto
* @className OperationType
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration;
package io.shinhanlife.dat.lib.integration;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
* MCP 툴에서 손쉽게 호출할 있도록 일원화한 컴포넌트입니다.
*/
/**
* @package io.shinhanlife.dap.lib.integration
* @package io.shinhanlife.dat.lib.integration
* @className GlowIntegrationCall
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.dto;
package io.shinhanlife.dat.lib.integration.dto;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
@@ -16,7 +16,7 @@ import java.util.List;
* 새로운 대외 통신 전문을 만들 파일을 복사해서 필드명과 길이만 수정하여 사용하세요.
*/
/**
* @package io.shinhanlife.dap.lib.integration.dto
* @package io.shinhanlife.dat.lib.integration.dto
* @className SampleGlowMessage
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,6 +1,6 @@
package io.shinhanlife.dap.lib.integration.eai.component;
package io.shinhanlife.dat.lib.integration.eai.component;
import io.shinhanlife.dap.lib.config.GlowCommunicationProperties;
import io.shinhanlife.dat.lib.config.GlowCommunicationProperties;
import io.shinhanlife.glow.communication.dto.CommonHeader;
import io.shinhanlife.glow.communication.dto.Transfer;
import io.shinhanlife.glow.communication.module.eai.component.GlowEaiComponent;
@@ -17,7 +17,7 @@ import org.springframework.stereotype.Component;
@RequiredArgsConstructor
/**
* @package io.shinhanlife.dap.lib.integration.eai.component
* @package io.shinhanlife.dat.lib.integration.eai.component
* @className AxhubEaiComponent
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,10 +1,10 @@
package io.shinhanlife.dap.lib.integration.http.component;
package io.shinhanlife.dat.lib.integration.http.component;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.config.GlowCommunicationProperties;
import io.shinhanlife.dap.lib.mcp.McpRequestHeaderContext;
import io.shinhanlife.dap.lib.mcp.McpRequestHeaders;
import io.shinhanlife.dat.lib.config.GlowCommunicationProperties;
import io.shinhanlife.dat.lib.mcp.McpRequestHeaderContext;
import io.shinhanlife.dat.lib.mcp.McpRequestHeaders;
import io.shinhanlife.glow.communication.module.http.component.GlowHttpComponent;
import io.shinhanlife.glow.communication.module.http.dto.HttpBody;
import io.shinhanlife.glow.communication.module.http.dto.HttpHeader;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.http.component;
package io.shinhanlife.dat.lib.integration.http.component;
import java.util.ArrayList;
import java.util.List;

View File

@@ -1,15 +1,15 @@
package io.shinhanlife.dap.lib.integration.mci.component;
package io.shinhanlife.dat.lib.integration.mci.component;
import io.shinhanlife.dap.lib.session.dto.SessionDto;
import io.shinhanlife.dap.lib.util.SessionUtil;
import io.shinhanlife.dap.lib.config.GlowCommunicationProperties;
import io.shinhanlife.dat.lib.session.dto.SessionDto;
import io.shinhanlife.dat.lib.util.SessionUtil;
import io.shinhanlife.dat.lib.config.GlowCommunicationProperties;
import io.shinhanlife.glow.BizException;
import io.shinhanlife.glow.communication.dto.CommonHeader;
import io.shinhanlife.glow.communication.dto.HeaderDefaults;
import io.shinhanlife.glow.communication.dto.Transfer;
import io.shinhanlife.glow.communication.module.mci.component.GlowMciComponent;
import io.shinhanlife.glow.communication.util.CommonHeaderFactory;
import io.shinhanlife.dap.lib.integration.mci.enums.IndvCtinRoleTyp;
import io.shinhanlife.dat.lib.integration.mci.enums.IndvCtinRoleTyp;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -25,7 +25,7 @@ import java.util.Map;
@RequiredArgsConstructor
/**
* @package io.shinhanlife.dap.lib.integration.mci.component
* @package io.shinhanlife.dat.lib.integration.mci.component
* @className AxhubMciComponent
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.config;
package io.shinhanlife.dat.lib.integration.mci.config;
import io.shinhanlife.glow.communication.module.mci.component.GlowMciComponent;
import org.springframework.context.annotation.Bean;
@@ -11,7 +11,7 @@ import org.springframework.context.annotation.Configuration;
@Configuration
/**
* @package io.shinhanlife.dap.lib.integration.mci.config
* @package io.shinhanlife.dat.lib.integration.mci.config
* @className GlowMockConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.config;
package io.shinhanlife.dat.lib.integration.mci.config;
import lombok.Getter;
import lombok.Setter;
@@ -6,7 +6,7 @@ import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;
/**
* @package io.shinhanlife.dap.lib.integration.mci.config
* @package io.shinhanlife.dat.lib.integration.mci.config
* @className ShinhanIntegrationProperties
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.dto;
package io.shinhanlife.dat.lib.integration.mci.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -8,7 +8,7 @@ import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
/**
* @package io.shinhanlife.dap.lib.integration.mci.dto
* @package io.shinhanlife.dat.lib.integration.mci.dto
* @className MciRequestWrapper
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.dto;
package io.shinhanlife.dat.lib.integration.mci.dto;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
import lombok.AllArgsConstructor;
@@ -7,7 +7,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @package io.shinhanlife.dap.lib.integration.mci.dto
* @package io.shinhanlife.dat.lib.integration.mci.dto
* @className MciResponseWrapper
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.dto;
package io.shinhanlife.dat.lib.integration.mci.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -7,7 +7,7 @@ import lombok.NoArgsConstructor;
import java.util.List;
/**
* @package io.shinhanlife.dap.lib.integration.mci.dto
* @package io.shinhanlife.dat.lib.integration.mci.dto
* @className OlCommonHeaderDto
* @description AX HUB 시스템 처리 클래스 - OL( 오렌지라이프) 공통 헤더
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.dto;
package io.shinhanlife.dat.lib.integration.mci.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @package io.shinhanlife.dap.lib.integration.mci.dto
* @package io.shinhanlife.dat.lib.integration.mci.dto
* @className ShinhanCommonHeaderDto
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.dto;
package io.shinhanlife.dat.lib.integration.mci.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @package io.shinhanlife.dap.lib.integration.mci.dto
* @package io.shinhanlife.dat.lib.integration.mci.dto
* @className ShinhanMessageDto
* @description AX HUB 시스템 처리 클래스 - MCI 전문 메시지부
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.dto;
package io.shinhanlife.dat.lib.integration.mci.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -8,7 +8,7 @@ import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonUnwrapped;
/**
* @package io.shinhanlife.dap.lib.integration.mci.dto
* @package io.shinhanlife.dat.lib.integration.mci.dto
* @className ShinhanTelegramWrapper
* @description AX HUB 시스템 처리 클래스 - MCI 전문 전체 래퍼 (공통헤더부 + 메시지부 + 데이터부)
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.dto;
package io.shinhanlife.dat.lib.integration.mci.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
@@ -6,7 +6,7 @@ import lombok.Data;
import lombok.NoArgsConstructor;
/**
* @package io.shinhanlife.dap.lib.integration.mci.dto
* @package io.shinhanlife.dat.lib.integration.mci.dto
* @className SlCommonHeaderDto
* @description AX HUB 시스템 처리 클래스 - SL(신한라이프) 표준 헤더
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.integration.mci.enums;
package io.shinhanlife.dat.lib.integration.mci.enums;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
@@ -7,7 +7,7 @@ import lombok.RequiredArgsConstructor;
@RequiredArgsConstructor
/**
* @package io.shinhanlife.dap.lib.integration.mci.enums
* @package io.shinhanlife.dat.lib.integration.mci.enums
* @className IndvCtinRoleTyp
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
import java.io.IOException;
import jakarta.servlet.FilterChain;
@@ -7,8 +7,8 @@ import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Component;
import org.springframework.web.filter.OncePerRequestFilter;
import io.shinhanlife.dap.lib.session.mci.AxhubSessionService;
import io.shinhanlife.dap.lib.session.dto.SessionDto;
import io.shinhanlife.dat.lib.session.mci.AxhubSessionService;
import io.shinhanlife.dat.lib.session.dto.SessionDto;
import org.springframework.beans.factory.annotation.Autowired;
/** Captures optional correlation and employee headers for an MCP HTTP call and creates mock session. */

View File

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

View File

@@ -1,9 +1,9 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.json.schema.JsonSchemaValidator.ValidationResponse;
import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
import io.shinhanlife.dap.lib.validation.ToolArgumentSchemaValidator;
import io.shinhanlife.dat.lib.util.ToolSchemaResolver;
import io.shinhanlife.dat.lib.validation.ToolArgumentSchemaValidator;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
import io.shinhanlife.dap.lib.annotation.GrowToolHint;
import io.shinhanlife.dap.lib.config.McpProperties;
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
import io.shinhanlife.dat.lib.config.McpProperties;
import java.lang.reflect.Method;
import java.util.LinkedHashMap;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
import io.modelcontextprotocol.server.McpServer;
import io.modelcontextprotocol.server.McpSyncServer;

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
import io.modelcontextprotocol.spec.McpSchema;
import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dat.mcc.dto.ToolMetadata;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

View File

@@ -1,10 +1,10 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.modelcontextprotocol.server.McpServerFeatures;
import io.modelcontextprotocol.server.McpSyncServer;
import io.modelcontextprotocol.spec.McpSchema;
import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dat.mcc.dto.ToolMetadata;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.lib.mcp;
package io.shinhanlife.dat.lib.mcp;
/**
* @package io.shinhanlife.dap.mcc.service
* @package io.shinhanlife.dat.mcc.service
* @className ToolRegistryHeartbeatSender
* @description AX HUB 시스템 처리 클래스
* @author 0986406
@@ -17,12 +17,12 @@ package io.shinhanlife.dap.lib.mcp;
*/
import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.annotation.GrowToolHint;
import io.shinhanlife.dap.lib.config.McpProperties;
import io.shinhanlife.dap.lib.metadata.ToolDefinition;
import io.shinhanlife.dap.lib.metadata.ToolDefinitionRepository;
import io.shinhanlife.dap.lib.util.ToolSchemaResolver;
import io.shinhanlife.dap.mcc.dto.ToolMetadata;
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
import io.shinhanlife.dat.lib.config.McpProperties;
import io.shinhanlife.dat.lib.metadata.ToolDefinition;
import io.shinhanlife.dat.lib.metadata.ToolDefinitionRepository;
import io.shinhanlife.dat.lib.util.ToolSchemaResolver;
import io.shinhanlife.dat.mcc.dto.ToolMetadata;
import jakarta.annotation.PostConstruct;
import java.lang.reflect.Method;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.config;
package io.shinhanlife.dat.lib.mcp.config;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
@@ -7,7 +7,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @package io.shinhanlife.dap.lib.mcp.config
* @package io.shinhanlife.dat.lib.mcp.config
* @className CacheConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.config;
package io.shinhanlife.dat.lib.mcp.config;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -8,7 +8,7 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
/**
* @package io.shinhanlife.dap.lib.mcp.config
* @package io.shinhanlife.dat.lib.mcp.config
* @className JacksonConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.config;
package io.shinhanlife.dat.lib.mcp.config;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.serialization.StringSerializer;
@@ -13,7 +13,7 @@ import java.util.HashMap;
import java.util.Map;
/**
* @package io.shinhanlife.dap.lib.mcp.config
* @package io.shinhanlife.dat.lib.mcp.config
* @className KafkaLocalConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.config;
package io.shinhanlife.dat.lib.mcp.config;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.OpenAPI;
@@ -9,7 +9,7 @@ import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @package io.shinhanlife.dap.lib.mcp.config
* @package io.shinhanlife.dat.lib.mcp.config
* @className SwaggerConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.config;
package io.shinhanlife.dat.lib.mcp.config;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
@@ -6,10 +6,10 @@ import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import io.shinhanlife.dap.lib.mcp.security.ApiKeyInterceptor;
import io.shinhanlife.dat.lib.mcp.security.ApiKeyInterceptor;
/**
* @package io.shinhanlife.dap.lib.mcp.config
* @package io.shinhanlife.dat.lib.mcp.config
* @className WebConfig
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.lib.mcp.exception;
package io.shinhanlife.dat.lib.mcp.exception;
/**
* @package io.shinhanlife.dap.lib.mcp.exception
* @package io.shinhanlife.dat.lib.mcp.exception
* @className GlobalExceptionHandler
* @description AX HUB 시스템 처리 클래스
* @author 0986406
@@ -15,8 +15,8 @@ package io.shinhanlife.dap.lib.mcp.exception;
*
* </pre>
*/
import io.shinhanlife.dap.lib.adapter.dto.ErrorDetail;
import io.shinhanlife.dap.lib.adapter.dto.JsonRpcResponse;
import io.shinhanlife.dat.lib.adapter.dto.ErrorDetail;
import io.shinhanlife.dat.lib.adapter.dto.JsonRpcResponse;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.ExceptionHandler;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.filter;
package io.shinhanlife.dat.lib.mcp.filter;
import jakarta.servlet.FilterChain;
import jakarta.servlet.ServletException;
@@ -12,7 +12,7 @@ import java.io.IOException;
import java.util.UUID;
/**
* @package io.shinhanlife.dap.lib.mcp.filter
* @package io.shinhanlife.dat.lib.mcp.filter
* @className MdcLoggingFilter
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.security;
package io.shinhanlife.dat.lib.mcp.security;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
@@ -11,7 +11,7 @@ import org.springframework.web.servlet.HandlerInterceptor;
import java.util.Map;
/**
* @package io.shinhanlife.dap.lib.mcp.security
* @package io.shinhanlife.dat.lib.mcp.security
* @className ApiKeyInterceptor
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.mcp.security;
package io.shinhanlife.dat.lib.mcp.security;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
@@ -14,7 +14,7 @@ import java.util.Map;
* Map 자료구조로 자동 바인딩(주입) 받기 위한 설정 클래스입니다.
*/
/**
* @package io.shinhanlife.dap.lib.mcp.security
* @package io.shinhanlife.dat.lib.mcp.security
* @className SecurityProperties
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.metadata;
package io.shinhanlife.dat.lib.metadata;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.metadata;
package io.shinhanlife.dat.lib.metadata;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.metadata;
package io.shinhanlife.dat.lib.metadata;
import java.util.List;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.metadata;
package io.shinhanlife.dat.lib.metadata;
import com.fasterxml.jackson.annotation.JsonProperty;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.session.dto;
package io.shinhanlife.dat.lib.session.dto;
import lombok.NoArgsConstructor;
@@ -11,7 +11,7 @@ import lombok.Getter;
import lombok.Setter;
/**
* @package io.shinhanlife.dap.lib.session.dto
* @package io.shinhanlife.dat.lib.session.dto
* @className SessionDto
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,7 +1,7 @@
package io.shinhanlife.dap.lib.session.mci;
package io.shinhanlife.dat.lib.session.mci;
import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent;
import io.shinhanlife.dap.lib.session.dto.SessionDto;
import io.shinhanlife.dat.lib.integration.mci.component.AxhubMciComponent;
import io.shinhanlife.dat.lib.session.dto.SessionDto;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.session.mci;
package io.shinhanlife.dat.lib.session.mci;
import io.shinhanlife.glow.communication.annotation.GlowTrgmField;
import lombok.*;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.session.mci;
package io.shinhanlife.dat.lib.session.mci;
import io.shinhanlife.glow.communication.annotation.GlowTrgmField;
import lombok.*;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.util;
package io.shinhanlife.dat.lib.util;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
@@ -17,7 +17,7 @@ import jakarta.validation.constraints.Pattern;
/**
* @package io.shinhanlife.dap.lib.util
* @package io.shinhanlife.dat.lib.util
* @className JsonSchemaGenerator
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.util;
package io.shinhanlife.dat.lib.util;
import java.io.IOException;
import java.nio.file.Files;
@@ -19,10 +19,10 @@ public class PodScaffolder {
System.out.println(" MCP Tool Pod Scaffolder (Java CLI) ");
System.out.println("=========================================\n");
String rawModuleName = getOrAsk(args, 0, scanner, "1. 생성할 모듈(Pod) 이름 (예: payment 또는 dap-was-payment): ");
String moduleName = rawModuleName.startsWith("dap-was-") ? rawModuleName : "dap-was-" + rawModuleName;
String rawModuleName = getOrAsk(args, 0, scanner, "1. 생성할 모듈(Pod) 이름 (예: payment 또는 dat-was-payment): ");
String moduleName = rawModuleName.startsWith("dat-was-") ? rawModuleName : "dat-was-" + rawModuleName;
String portStr = getOrAsk(args, 1, scanner, "2. 사용할 포트 번호 (예: 8085): ");
String shortName = moduleName.replace("dap-was-", "").replace("-", "");
String shortName = moduleName.replace("dat-was-", "").replace("-", "");
String defaultAuthor = System.getProperty("user.name");
String defaultDate = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy.MM.dd"));
@@ -71,7 +71,7 @@ public class PodScaffolder {
dependencies {
// Shared MCP, Glow integration, validation, logging, Lombok and MapStruct configuration.
implementation project(':dap-was-lib')
implementation project(':dat-was-lib')
}
""";
writeUtf8(modulePath.resolve("build.gradle"), buildGradle);
@@ -89,11 +89,11 @@ public class PodScaffolder {
writeUtf8(modulePath.resolve("Dockerfile"), dockerfile);
log.append("[4/6] Application 클래스 및 설정 파일 생성 중...\n");
Path srcPath = modulePath.resolve("src/main/java/io/shinhanlife/dap/mcc/" + shortName);
Path srcPath = modulePath.resolve("src/main/java/io/shinhanlife/dat/mcc/" + shortName);
Files.createDirectories(srcPath);
String appClass = """
package io.shinhanlife.dap.mcc.%s;
package io.shinhanlife.dat.mcc.%s;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -101,8 +101,8 @@ public class PodScaffolder {
import org.springframework.cache.annotation.EnableCaching;
/**
* @package io.shinhanlife.dap.mcc.%s
* @className DapWas%sApplication
* @package io.shinhanlife.dat.mcc.%s
* @className DatWas%sApplication
* @description AX HUB 시스템 처리 클래스
* @author %s
* @create %s
@@ -114,16 +114,16 @@ public class PodScaffolder {
*
* </pre>
*/
@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"})
@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib"})
@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dat.mcc", "io.shinhanlife.dat.lib"})
@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dat.mcc", "io.shinhanlife.dat.lib"})
@EnableCaching
public class DapWas%sApplication {
public class DatWas%sApplication {
public static void main(String[] args) {
SpringApplication.run(DapWas%sApplication.class, args);
SpringApplication.run(DatWas%sApplication.class, args);
}
}
""".formatted(shortName, shortName, capitalize(shortName), author, createDate, createDate, author, capitalize(shortName), capitalize(shortName));
writeUtf8(srcPath.resolve("DapWas" + capitalize(shortName) + "Application.java"), appClass);
writeUtf8(srcPath.resolve("DatWas" + capitalize(shortName) + "Application.java"), appClass);
Path resPath = modulePath.resolve("src/main/resources");
Files.createDirectories(resPath);

View File

@@ -1,13 +1,13 @@
package io.shinhanlife.dap.lib.util;
package io.shinhanlife.dat.lib.util;
import io.shinhanlife.dap.lib.session.dto.SessionDto;
import io.shinhanlife.dat.lib.session.dto.SessionDto;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
/**
* @package io.shinhanlife.dap.lib.util
* @package io.shinhanlife.dat.lib.util
* @className SessionUtil
* @description AX HUB 시스템 처리 클래스
* @author 0986406

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.lib.util;
package io.shinhanlife.dat.lib.util;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import io.shinhanlife.dap.lib.metadata.ToolDefinition;
import io.shinhanlife.dat.lib.metadata.ToolDefinition;
import java.io.IOException;
import java.nio.file.Files;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.util;
package io.shinhanlife.dat.lib.util;
import java.io.IOException;
@@ -24,11 +24,11 @@ import java.util.stream.Collectors;
* - 콘솔 질문에 차례대로 값을 입력하면 파일이 생성됩니다.
*
* 방법 2. 명령줄에서 실행
* - 컴파일: javac -encoding UTF-8 dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java
* - 실행: java -cp dap-was-lib/src/main/java io.shinhanlife.dap.lib.util.ToolScaffolder [이름] [ID] "[설명]" "[그룹]" "[통신방식]" "[모듈명]"
* - 컴파일: javac -encoding UTF-8 dat-was-lib/src/main/java/io/shinhanlife/dat/lib/util/ToolScaffolder.java
* - 실행: java -cp dat-was-lib/src/main/java io.shinhanlife.dat.lib.util.ToolScaffolder [이름] [ID] "[설명]" "[그룹]" "[통신방식]" "[모듈명]"
*/
/**
* @package io.shinhanlife.dap.lib.util
* @package io.shinhanlife.dat.lib.util
* @className ToolScaffolder
* @description AX HUB 시스템 처리 클래스
* @author 0986406
@@ -43,8 +43,8 @@ import java.util.stream.Collectors;
*/
public class ToolScaffolder {
private static final String BASE_PACKAGE = "io.shinhanlife.dap.mcc";
private static final String BASE_PACKAGE_PATH = "src/main/java/io/shinhanlife/dap/mcc";
private static final String BASE_PACKAGE = "io.shinhanlife.dat.mcc";
private static final String BASE_PACKAGE_PATH = "src/main/java/io/shinhanlife/dat/mcc";
public record FieldDefinition(String name, String type, String description, List<String> examples, String pattern, boolean required,
List<String> enumValues, String itemType, List<FieldDefinition> itemFields) {
@@ -191,7 +191,7 @@ public class ToolScaffolder {
String mciClientContent = "package " + ioPackage + ";\n\n"
+ "import org.springframework.stereotype.Component;\n"
+ "import lombok.RequiredArgsConstructor;\n"
+ "import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent;\n"
+ "import io.shinhanlife.dat.lib.integration.mci.component.AxhubMciComponent;\n"
+ "import io.shinhanlife.glow.communication.dto.Transfer;\n\n"
+ "@Component\n@RequiredArgsConstructor\npublic class Mci" + clientPrefixCap + "Client {\n"
+ " private final AxhubMciComponent mci;\n"
@@ -270,7 +270,7 @@ public class ToolScaffolder {
}
return "package " + bizPackage + ".usecase;\n\n"
+ "import org.springaicommunity.mcp.annotation.McpTool;\n"
+ "import io.shinhanlife.dap.lib.annotation.GrowToolHint;\n"
+ "import io.shinhanlife.dat.lib.annotation.GrowToolHint;\n"
+ imports + "\npublic interface " + useCaseBaseName + "UseCase {\n\n" + methods + "}\n";
}
@@ -509,7 +509,7 @@ public class ToolScaffolder {
private static String groupedMciClientContent(String ioPackage, String baseName, String interfaceId) {
return "package " + ioPackage + ";\n\n"
+ "import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent;\n"
+ "import io.shinhanlife.dat.lib.integration.mci.component.AxhubMciComponent;\n"
+ "import io.shinhanlife.glow.communication.dto.Transfer;\n"
+ "import lombok.RequiredArgsConstructor;\nimport org.springframework.stereotype.Component;\n"
+ "import " + ioPackage + ".io." + baseName + "_I;\n"
@@ -546,9 +546,9 @@ public class ToolScaffolder {
if (routingType.trim().isEmpty()) {
routingType = "HTTP";
}
String moduleName = getOrAsk(args, 6, scanner, "7. Target module (default dap-was-cus): ");
String moduleName = getOrAsk(args, 6, scanner, "7. Target module (default dat-was-cus): ");
if (moduleName.trim().isEmpty()) {
moduleName = "dap-was-cus";
moduleName = "dat-was-cus";
}
String defaultAuthor = System.getProperty("user.name");
@@ -565,7 +565,7 @@ public class ToolScaffolder {
String schemaResourceDirectory = "classpath:tool-schemas/" + group.toLowerCase() + "/";
String inputSchemaResource = useSchemaResource ? schemaResourceDirectory + toKebabCase(baseName) + "-resource-input-schema.json" : null;
String outputSchemaResource = useSchemaResource ? schemaResourceDirectory + toKebabCase(baseName) + "-resource-output-schema.json" : null;
String defaultWorkspace = "c:\\eGovFrameDev-4.3.1-64bit\\workspace-egov\\dap-was-dapmt";
String defaultWorkspace = "c:\\eGovFrameDev-4.3.1-64bit\\workspace-egov\\dat-was-datmt";
String workspace = getOrAsk(args, 10, scanner, "11. 대상 프로젝트 워크스페이스 경로 (default: " + defaultWorkspace + "): ");
if (workspace.trim().isEmpty()) {
workspace = defaultWorkspace;
@@ -816,7 +816,7 @@ public class ToolScaffolder {
package %s.usecase;
import org.springaicommunity.mcp.annotation.McpTool;
import io.shinhanlife.dap.lib.annotation.GrowToolHint;
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
import %s.dto.%sRequest;
import %s.dto.%sResponse;
@@ -862,7 +862,7 @@ public class ToolScaffolder {
import %s.dto.%sRequest;
import %s.dto.%sResponse;
import %s.usecase.%sUseCase;
import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent;
import io.shinhanlife.dat.lib.integration.mci.component.AxhubMciComponent;
import io.shinhanlife.glow.communication.dto.Transfer;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
@@ -1162,7 +1162,7 @@ public class ToolScaffolder {
import org.springframework.stereotype.Component;
import lombok.RequiredArgsConstructor;
import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent;
import io.shinhanlife.dat.lib.integration.mci.component.AxhubMciComponent;
import io.shinhanlife.glow.communication.dto.Transfer;
/**
@@ -1412,7 +1412,7 @@ public class ToolScaffolder {
log.append("[Mock Response] ").append(mockResponsePath).append("\n");
}
Path generatedTestDir = rootDir.resolve(Paths.get(moduleName, "src/test/java/io/shinhanlife/dap/mcc/biz", group.toLowerCase(), "usecase"));
Path generatedTestDir = rootDir.resolve(Paths.get(moduleName, "src/test/java/io/shinhanlife/dat/mcc/biz", group.toLowerCase(), "usecase"));
Files.createDirectories(generatedTestDir);
Path generatedTestPath = generatedTestDir.resolve(baseName + "UseCaseTest.java");
writeUtf8(generatedTestPath, useCaseTestContent(bizPackage, baseName));
@@ -1871,7 +1871,7 @@ public class ToolScaffolder {
return """
package %s;
import io.shinhanlife.dap.lib.integration.http.component.AxhubHttpComponent;
import io.shinhanlife.dat.lib.integration.http.component.AxhubHttpComponent;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;

View File

@@ -1,9 +1,9 @@
package io.shinhanlife.dap.lib.util;
package io.shinhanlife.dat.lib.util;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.annotation.McpOutputSchema;
import io.shinhanlife.dap.lib.annotation.GrowToolHint;
import io.shinhanlife.dat.lib.annotation.McpOutputSchema;
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
import java.io.InputStream;
import java.util.Map;
import org.springframework.core.io.ClassPathResource;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.lib.util;
package io.shinhanlife.dat.lib.util;
import java.io.IOException;
import java.nio.file.Files;
@@ -78,7 +78,7 @@ public final class ToolSourceUpdater {
try (var paths = Files.walk(rootDirectory)) {
return paths.filter(Files::isRegularFile)
.filter(path -> path.getFileName().toString().endsWith("UseCase.java"))
.filter(path -> path.toString().contains("dap-was-") || path.toString().contains("axhub-tool-"))
.filter(path -> path.toString().contains("dat-was-") || path.toString().contains("axhub-tool-"))
.sorted(Comparator.naturalOrder())
.filter(path -> containsMcpTool(path, toolName))
.findFirst()

Some files were not shown because too many files have changed in this diff Show More