diff --git a/dat-was-sal/Dockerfile b/dat-was-sal/Dockerfile
index b087be906..5b9b12ab2 100644
--- a/dat-was-sal/Dockerfile
+++ b/dat-was-sal/Dockerfile
@@ -3,6 +3,5 @@ WORKDIR /app
RUN apk add --no-cache tzdata
ENV TZ=Asia/Seoul
COPY dat-was-sal/build/libs/*-SNAPSHOT.jar app.jar
-EXPOSE 8082
+EXPOSE 8083
ENTRYPOINT ["java", "-jar", "app.jar"]
-
diff --git a/dat-was-sal/build.gradle b/dat-was-sal/build.gradle
index c04cf80f4..e08421661 100644
--- a/dat-was-sal/build.gradle
+++ b/dat-was-sal/build.gradle
@@ -1,9 +1,9 @@
plugins {
- // SMS Tool Pod를 독립 실행 가능한 Spring Boot JAR로 생성합니다.
+ // Spring Boot 3.5.11 version is managed by the root build.gradle.
id 'org.springframework.boot'
}
dependencies {
- // MCP Server, Tool 공통 처리, MCI/EAI 연동 기반은 dat-was-lib에서 상속합니다.
+ // Shared MCP, Glow integration, validation, logging, Lombok and MapStruct configuration.
implementation project(':dat-was-lib')
}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/converter/ClaimSearchConverter.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/converter/ClaimSearchConverter.java
deleted file mode 100644
index 3f41a8fce..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/converter/ClaimSearchConverter.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.converter;
-
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchResponse;
-import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.io.CLCNNB00001_I;
-import io.shinhanlife.dat.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);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/converter/MemoListRetrieverConverter.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/converter/MemoListRetrieverConverter.java
deleted file mode 100644
index 889e4a494..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/converter/MemoListRetrieverConverter.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.converter;
-
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverResponse;
-import io.shinhanlife.dat.mcc.infra.itrf.http.memo.io.MemoListRetrieverHttpRequest;
-import io.shinhanlife.dat.mcc.infra.itrf.http.memo.io.MemoListRetrieverHttpResponse;
-import org.mapstruct.Mapper;
-import org.mapstruct.Mapping;
-import org.mapstruct.ReportingPolicy;
-
-@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
-public interface MemoListRetrieverConverter {
- // Field names differ? Add mappings like this before the method.
- // @Mapping(source = "sourceField", target = "targetField")
- MemoListRetrieverHttpRequest toHttpRequest(MemoListRetrieverRequest request);
- MemoListRetrieverResponse toResponse(MemoListRetrieverHttpResponse httpResponse);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/ClaimSearchRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/ClaimSearchRequest.java
deleted file mode 100644
index 53c285d25..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/ClaimSearchRequest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.dto;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class ClaimSearchRequest {
- @Schema(description = "보험금 청구번호", example = "CLM202608100001", requiredMode = Schema.RequiredMode.REQUIRED)
- private String claimNo;
-
- @Schema(description = "보험 계약번호", example = "10023456789")
- private String contractNo;
-
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/ClaimSearchResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/ClaimSearchResponse.java
deleted file mode 100644
index 55fbfe6e8..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/ClaimSearchResponse.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.dto;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class ClaimSearchResponse {
- private String resultCode;
-
- private String resultMessage;
- @Schema(description = "청구 처리 상태 코드", example = "RECEIVED", requiredMode = Schema.RequiredMode.REQUIRED)
- private String status;
-
- @Schema(description = "청구 처리 상태명", example = "접수", requiredMode = Schema.RequiredMode.REQUIRED)
- private String statusLabel;
-
- @Schema(description = "승인 금액", example = "150000")
- private Long approvedAmount;
-
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/MemoListRetrieverRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/MemoListRetrieverRequest.java
deleted file mode 100644
index 4b39c29bf..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/MemoListRetrieverRequest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.dto;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class MemoListRetrieverRequest {
- @Schema(description = "조회할 의뢰서 상태", example = "OPEN", requiredMode = Schema.RequiredMode.REQUIRED)
- private String memoStatus;
-
- @Schema(description = "검색 키워드", example = "프로젝트", requiredMode = Schema.RequiredMode.REQUIRED)
- private String searchKeyword;
-
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/MemoListRetrieverResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/MemoListRetrieverResponse.java
deleted file mode 100644
index 1d3183a71..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/dto/MemoListRetrieverResponse.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.dto;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class MemoListRetrieverResponse {
- private String resultCode;
-
- private String resultMessage;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/ClaimSearchUseCase.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/ClaimSearchUseCase.java
deleted file mode 100644
index ce9968f68..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/ClaimSearchUseCase.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.usecase;
-
-import org.springaicommunity.mcp.annotation.McpTool;
-import io.shinhanlife.dat.lib.annotation.GrowToolHint;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchResponse;
-
-/**
- * @package io.shinhanlife.dat.mcc.biz.cmm.usecase
- * @className ClaimSearchUseCase
- * @description AX HUB 시스템 처리 클래스
- * @author jade
- * @create 2026.08.10
- *
- * ---------- 개정이력 ----------
- * 수정일 수정자 수정내용
- * ---------- -------- ---------------------------
- * 2026.08.10 jade 최초생성
- *
- *
- */
-public interface ClaimSearchUseCase {
-
- @McpTool(name = "cmm_claim_search", title = "청구번호 또는 계약번호로 보험금 청구 상태를 조회한다.", description = "청구번호 또는 계약번호로 보험금 청구 상태를 조회한다.")
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "cmm",
- mappingId = "DIRECT_CMM_CLAIM_SEARCH",
- functionDescription = "청구번호 또는 계약번호로 보험금 청구 상태와 심사 결과를 조회한다.",
- whenToUse = "사용자가 기존 보험금 청구의 진행 상태나 지급 결과를 확인하려는 경우 사용한다.",
- whenNotToUse = "보험금 청구를 새로 접수하거나 기존 청구 내용을 변경하려는 경우에는 사용하지 않는다.",
- ioLimits = "청구번호 또는 계약번호 중 하나 이상이 필요하며 조회 결과만 반환한다.",
- displayDescription = "보험금 청구 상태와 심사 결과를 조회합니다.",
- exampleQueries = {"내 보험금 청구가 어디까지 진행됐는지 알려줘", "계약번호로 최근 청구 상태를 확인해줘", "청구 심사 결과가 나왔는지 조회해줘"},
- destructive = false,
- idempotent = true,
- tags = {"보험금", "청구조회"},
- ownerOrg = "MCP_TOOL"
- )
- ClaimSearchResponse searchClaim(ClaimSearchRequest req);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/MemoListRetrieverUseCase.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/MemoListRetrieverUseCase.java
deleted file mode 100644
index d96225a27..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/MemoListRetrieverUseCase.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.usecase;
-
-import org.springaicommunity.mcp.annotation.McpTool;
-import io.shinhanlife.dat.lib.annotation.GrowToolHint;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverResponse;
-
-/**
- * @package io.shinhanlife.dat.mcc.biz.cmm.usecase
- * @className MemoListRetrieverUseCase
- * @description AX HUB 시스템 처리 클래스
- * @author Admin
- * @create 2026.08.11
- *
- * ---------- 개정이력 ----------
- * 수정일 수정자 수정내용
- * ---------- -------- ---------------------------
- * 2026.08.11 Admin 최초생성
- *
- *
- */
-public interface MemoListRetrieverUseCase {
-
- @McpTool(name = "cmm_memo_retriever", title = "의뢰서 목록 조회", description = "의뢰서 목록을 조회하여 의뢰 정보를 반환합니다.")
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "cmm",
- mappingId = "DIRECT_CMM_MEMO_RETRIEVER",
- functionDescription = "상태와 검색어 조건으로 의뢰서 목록을 조회한다.",
- whenToUse = "사용자가 등록된 의뢰서의 목록이나 처리 현황을 찾으려는 경우 사용한다.",
- whenNotToUse = "의뢰서를 신규 등록하거나 내용을 변경하려는 경우에는 사용하지 않는다.",
- ioLimits = "선택 조건에 해당하는 의뢰서 요약 목록만 반환한다.",
- displayDescription = "조건에 맞는 의뢰서 목록을 조회합니다.",
- exampleQueries = {"처리 중인 의뢰서를 보여줘", "지난번 계약 관련 의뢰서를 찾아줘", "완료된 의뢰서 목록을 조회해줘"},
- destructive = false,
- idempotent = true,
- tags = {"의뢰서", "목록조회"},
- ownerOrg = "MCP_TOOL"
- )
- MemoListRetrieverResponse retrieveMemoList(MemoListRetrieverRequest req);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImpl.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImpl.java
deleted file mode 100644
index 801b01255..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.usecase.impl;
-
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchResponse;
-import io.shinhanlife.dat.mcc.biz.cmm.usecase.ClaimSearchUseCase;
-import io.shinhanlife.glow.communication.dto.Transfer;
-import io.shinhanlife.glow.BizException;
-import org.springframework.stereotype.Service;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import io.shinhanlife.dat.mcc.biz.cmm.converter.ClaimSearchConverter;
-import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.io.CLCNNB00001_I;
-import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.io.CLCNNB00001_O;
-import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.MciNclaClient;
-
-
-/**
- * @package io.shinhanlife.dat.mcc.biz.cmm.usecase.impl
- * @className ClaimSearchUseCaseImpl
- * @description AX HUB 시스템 처리 클래스
- * @author jade
- * @create 2026.08.10
- *
- * ---------- 개정이력 ----------
- * 수정일 수정자 수정내용
- * ---------- -------- ---------------------------
- * 2026.08.10 jade 최초생성
- *
- *
- */
-@Slf4j
-@Service
-@RequiredArgsConstructor
-public class ClaimSearchUseCaseImpl implements ClaimSearchUseCase {
-
- private final MciNclaClient mci;
- private final ClaimSearchConverter converter;
-
- @Override
- public ClaimSearchResponse searchClaim(ClaimSearchRequest req) {
- log.info("[MCI Tool] {} 요청 수신.", "cmm_claim_search");
- try {
- // MapStruct를 이용한 자동 매핑 (AI DTO -> MCI DTO)
- CLCNNB00001_I mciReq = converter.toLegacyRequest(req);
-
- Transfer resTransfer = mci.callTo(
- "CLCNNB00001",
- null,
- mciReq,
- CLCNNB00001_O.class
- );
- ClaimSearchResponse response = new ClaimSearchResponse();
- if (resTransfer.getBody() != null) {
- response = converter.toResponse(resTransfer.getBody());
- }
- response.setResultCode("SUCCESS");
- response.setResultMessage(resTransfer.getBody() != null
- ? "MCI call completed."
- : "MCI call completed without a response body.");
- return response;
- } catch (BizException e) {
- log.error("[MCI Tool] 연동 중 오류 발생: {}", e.getMessage(), e);
- ClaimSearchResponse response = new ClaimSearchResponse();
- response.setResultCode("ERROR");
- response.setResultMessage(e.getMessage() != null ? e.getMessage() : "Unknown error");
- return response;
- }
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/MemoListRetrieverUseCaseImpl.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/MemoListRetrieverUseCaseImpl.java
deleted file mode 100644
index c3b4b1cd8..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/MemoListRetrieverUseCaseImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.usecase.impl;
-
-import io.shinhanlife.dat.mcc.biz.cmm.converter.MemoListRetrieverConverter;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverResponse;
-import io.shinhanlife.dat.mcc.infra.itrf.http.memo.MemoClient;
-import io.shinhanlife.dat.mcc.infra.itrf.http.memo.io.MemoListRetrieverHttpRequest;
-import io.shinhanlife.dat.mcc.infra.itrf.http.memo.io.MemoListRetrieverHttpResponse;
-import io.shinhanlife.dat.mcc.biz.cmm.usecase.MemoListRetrieverUseCase;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-@Service
-@RequiredArgsConstructor
-public class MemoListRetrieverUseCaseImpl implements MemoListRetrieverUseCase {
-
- private final MemoListRetrieverConverter converter;
- private final MemoClient memoClient;
-
- @Override
- public MemoListRetrieverResponse retrieveMemoList(MemoListRetrieverRequest req) {
- MemoListRetrieverHttpRequest httpRequest = converter.toHttpRequest(req);
- MemoListRetrieverHttpResponse httpResponse = memoClient.call(httpRequest, MemoListRetrieverHttpResponse.class);
-
- MemoListRetrieverResponse response = converter.toResponse(httpResponse);
-
- // Sparrow NULL_RETURN (널 역참조) 방어 로직
- if (response == null) {
- response = new MemoListRetrieverResponse();
- response.setResultCode("ERROR");
- response.setResultMessage("HTTP API 응답이 없거나 변환에 실패했습니다.");
- return response;
- }
-
- response.setResultCode("SUCCESS");
- response.setResultMessage("HTTP API call completed.");
- return response;
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/dto/LicToolRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/dto/LicToolRequest.java
deleted file mode 100644
index d4a09433f..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/dto/LicToolRequest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.lic.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springaicommunity.mcp.annotation.McpToolParam;
-
-@Data
-public class LicToolRequest {
- @McpToolParam(description = "상품코드", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String productCode;
-
- @McpToolParam(description = "계약심사번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String contractId;
-
- @McpToolParam(description = "조회 기준일(YYYY-MM-DD)", required = false)
- @Schema(pattern = "^\\d{4}-\\d{2}-\\d{2}$")
- private String queryDate;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/dto/LicToolResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/dto/LicToolResponse.java
deleted file mode 100644
index 695a46c8c..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/dto/LicToolResponse.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.lic.dto;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class LicToolResponse {
- private String toolName;
- private String category;
- private String referenceId;
- private String status;
- private String summary;
- private String asOfDate;
- private List details;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/usecase/LicUnderwritingUseCase.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/usecase/LicUnderwritingUseCase.java
deleted file mode 100644
index ef6a2ce57..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/usecase/LicUnderwritingUseCase.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.lic.usecase;
-
-import io.shinhanlife.dat.lib.annotation.GrowToolHint;
-import io.shinhanlife.dat.mcc.biz.lic.dto.LicToolRequest;
-import io.shinhanlife.dat.mcc.biz.lic.dto.LicToolResponse;
-import org.springaicommunity.mcp.annotation.McpTool;
-
-public interface LicUnderwritingUseCase {
- @McpTool(name = "lic_product_info", title = "상품 정보 조회", description = "상품 정보 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_PRODUCT_INFO",
- functionDescription = "상품 정보 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 상품 정보 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "상품 정보 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"상품 정보 조회 정보를 보여줘", "상품 정보 조회 결과를 확인해줘", "현재 상품 정보 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getProductInfo(LicToolRequest request);
-
- @McpTool(name = "lic_product_coverage", title = "상품 보장내용 조회", description = "상품 보장내용 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_PRODUCT_COVERAGE",
- functionDescription = "상품 보장내용 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 상품 보장내용 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "상품 보장내용 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"상품 보장내용 조회 정보를 보여줘", "상품 보장내용 조회 결과를 확인해줘", "현재 상품 보장내용 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getProductCoverage(LicToolRequest request);
-
- @McpTool(name = "lic_product_premium_table", title = "상품 보험료 요율표 조회", description = "상품 보험료 요율표 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_PRODUCT_PREMIUM_TABLE",
- functionDescription = "상품 보험료 요율표 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 상품 보험료 요율표 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "상품 보험료 요율표 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"상품 보험료 요율표 조회 정보를 보여줘", "상품 보험료 요율표 조회 결과를 확인해줘", "현재 상품 보험료 요율표 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getProductPremiumTable(LicToolRequest request);
-
- @McpTool(name = "lic_contract_review_status", title = "계약심사 진행상태 조회", description = "계약심사 진행상태 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_CONTRACT_REVIEW_STATUS",
- functionDescription = "계약심사 진행상태 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 계약심사 진행상태 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "계약심사 진행상태 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"계약심사 진행상태 조회 정보를 보여줘", "계약심사 진행상태 조회 결과를 확인해줘", "현재 계약심사 진행상태 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getContractReviewStatus(LicToolRequest request);
-
- @McpTool(name = "lic_contract_review_document", title = "계약심사 제출서류 현황 조회", description = "계약심사 제출서류 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_CONTRACT_REVIEW_DOCUMENT",
- functionDescription = "계약심사 제출서류 현황 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 계약심사 제출서류 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "계약심사 제출서류 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"계약심사 제출서류 현황 조회 정보를 보여줘", "계약심사 제출서류 현황 조회 결과를 확인해줘", "현재 계약심사 제출서류 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getContractReviewDocument(LicToolRequest request);
-
- @McpTool(name = "lic_contract_review_result", title = "계약심사 결과 조회", description = "계약심사 결과 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_CONTRACT_REVIEW_RESULT",
- functionDescription = "계약심사 결과 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 계약심사 결과 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "계약심사 결과 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"계약심사 결과 조회 정보를 보여줘", "계약심사 결과 조회 결과를 확인해줘", "현재 계약심사 결과 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getContractReviewResult(LicToolRequest request);
-
- @McpTool(name = "lic_contract_review_history", title = "계약심사 이력 조회", description = "계약심사 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_CONTRACT_REVIEW_HISTORY",
- functionDescription = "계약심사 이력 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 계약심사 이력 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "계약심사 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"계약심사 이력 조회 정보를 보여줘", "계약심사 이력 조회 결과를 확인해줘", "현재 계약심사 이력 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getContractReviewHistory(LicToolRequest request);
-
- @McpTool(name = "lic_underwriting_result", title = "언더라이팅 인수심사 결과 조회", description = "언더라이팅 인수심사 결과 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_UNDERWRITING_RESULT",
- functionDescription = "언더라이팅 인수심사 결과 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 언더라이팅 인수심사 결과 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "언더라이팅 인수심사 결과 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"언더라이팅 인수심사 결과 조회 정보를 보여줘", "언더라이팅 인수심사 결과 조회 결과를 확인해줘", "현재 언더라이팅 인수심사 결과 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getUnderwritingResult(LicToolRequest request);
-
- @McpTool(name = "lic_underwriting_risk_grade", title = "언더라이팅 위험등급 조회", description = "언더라이팅 위험등급 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_UNDERWRITING_RISK_GRADE",
- functionDescription = "언더라이팅 위험등급 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 언더라이팅 위험등급 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "언더라이팅 위험등급 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"언더라이팅 위험등급 조회 정보를 보여줘", "언더라이팅 위험등급 조회 결과를 확인해줘", "현재 언더라이팅 위험등급 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getUnderwritingRiskGrade(LicToolRequest request);
-
- @McpTool(name = "lic_underwriting_additional_request", title = "언더라이팅 추가자료 요청 현황 조회", description = "언더라이팅 추가자료 요청 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "lic",
- mappingId = "DIRECT_LIC_UNDERWRITING_ADDITIONAL_REQUEST",
- functionDescription = "언더라이팅 추가자료 요청 현황 조회 정보를 조회합니다.",
- whenToUse = "상품·계약심사 업무에서 언더라이팅 추가자료 요청 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "언더라이팅 추가자료 요청 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"언더라이팅 추가자료 요청 현황 조회 정보를 보여줘", "언더라이팅 추가자료 요청 현황 조회 결과를 확인해줘", "현재 언더라이팅 추가자료 요청 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"lic", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- LicToolResponse getUnderwritingAdditionalRequest(LicToolRequest request);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/usecase/impl/LicUnderwritingUseCaseImpl.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/usecase/impl/LicUnderwritingUseCaseImpl.java
deleted file mode 100644
index ec6811ab0..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/lic/usecase/impl/LicUnderwritingUseCaseImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.lic.usecase.impl;
-
-import io.shinhanlife.dat.mcc.biz.lic.dto.LicToolRequest;
-import io.shinhanlife.dat.mcc.biz.lic.dto.LicToolResponse;
-import io.shinhanlife.dat.mcc.biz.lic.usecase.LicUnderwritingUseCase;
-import java.util.List;
-import org.springframework.stereotype.Service;
-
-@Service
-public class LicUnderwritingUseCaseImpl implements LicUnderwritingUseCase {
- @Override
- public LicToolResponse getProductInfo(LicToolRequest request) {
- return mockResponse(request, "lic_product_info", "상품 정보 조회");
- }
-
- @Override
- public LicToolResponse getProductCoverage(LicToolRequest request) {
- return mockResponse(request, "lic_product_coverage", "상품 보장내용 조회");
- }
-
- @Override
- public LicToolResponse getProductPremiumTable(LicToolRequest request) {
- return mockResponse(request, "lic_product_premium_table", "상품 보험료 요율표 조회");
- }
-
- @Override
- public LicToolResponse getContractReviewStatus(LicToolRequest request) {
- return mockResponse(request, "lic_contract_review_status", "계약심사 진행상태 조회");
- }
-
- @Override
- public LicToolResponse getContractReviewDocument(LicToolRequest request) {
- return mockResponse(request, "lic_contract_review_document", "계약심사 제출서류 현황 조회");
- }
-
- @Override
- public LicToolResponse getContractReviewResult(LicToolRequest request) {
- return mockResponse(request, "lic_contract_review_result", "계약심사 결과 조회");
- }
-
- @Override
- public LicToolResponse getContractReviewHistory(LicToolRequest request) {
- return mockResponse(request, "lic_contract_review_history", "계약심사 이력 조회");
- }
-
- @Override
- public LicToolResponse getUnderwritingResult(LicToolRequest request) {
- return mockResponse(request, "lic_underwriting_result", "언더라이팅 인수심사 결과 조회");
- }
-
- @Override
- public LicToolResponse getUnderwritingRiskGrade(LicToolRequest request) {
- return mockResponse(request, "lic_underwriting_risk_grade", "언더라이팅 위험등급 조회");
- }
-
- @Override
- public LicToolResponse getUnderwritingAdditionalRequest(LicToolRequest request) {
- return mockResponse(request, "lic_underwriting_additional_request", "언더라이팅 추가자료 요청 현황 조회");
- }
-
- private LicToolResponse mockResponse(LicToolRequest request, String toolName, String title) {
- LicToolResponse response = new LicToolResponse();
- response.setToolName(toolName);
- response.setCategory("LIC");
- response.setReferenceId(request != null && hasText(request.getProductCode()) ? request.getProductCode()
- : request != null && hasText(request.getContractId()) ? request.getContractId() : "LIC-000001");
- response.setStatus("정상");
- response.setSummary(title + " 결과");
- response.setAsOfDate(request != null && hasText(request.getQueryDate()) ? request.getQueryDate() : "2026-08-14");
- response.setDetails(List.of(title + " 모의 상세정보", "외부 시스템을 변경하지 않는 조회 결과"));
- return response;
- }
-
- private boolean hasText(String value) {
- return value != null && !value.isBlank();
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/dto/SofToolRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/dto/SofToolRequest.java
deleted file mode 100644
index d704a3b38..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/dto/SofToolRequest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sof.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springaicommunity.mcp.annotation.McpToolParam;
-
-@Data
-public class SofToolRequest {
- @McpToolParam(description = "설계사번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String agentId;
-
- @McpToolParam(description = "GA 조직번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String organizationId;
-
- @McpToolParam(description = "조회 기준일(YYYY-MM-DD)", required = false)
- @Schema(pattern = "^\\d{4}-\\d{2}-\\d{2}$")
- private String queryDate;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/dto/SofToolResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/dto/SofToolResponse.java
deleted file mode 100644
index ff3bdc207..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/dto/SofToolResponse.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sof.dto;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class SofToolResponse {
- private String toolName;
- private String category;
- private String referenceId;
- private String status;
- private String summary;
- private String asOfDate;
- private List details;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/usecase/SofFieldActivityUseCase.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/usecase/SofFieldActivityUseCase.java
deleted file mode 100644
index f138c15ac..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/usecase/SofFieldActivityUseCase.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sof.usecase;
-
-import io.shinhanlife.dat.lib.annotation.GrowToolHint;
-import io.shinhanlife.dat.mcc.biz.sof.dto.SofToolRequest;
-import io.shinhanlife.dat.mcc.biz.sof.dto.SofToolResponse;
-import org.springaicommunity.mcp.annotation.McpTool;
-
-public interface SofFieldActivityUseCase {
- @McpTool(name = "sof_activity_daily", title = "GA 일별 활동 현황 조회", description = "GA 일별 활동 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_ACTIVITY_DAILY",
- functionDescription = "GA 일별 활동 현황 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 GA 일별 활동 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "GA 일별 활동 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"GA 일별 활동 현황 조회 정보를 보여줘", "GA 일별 활동 현황 조회 결과를 확인해줘", "현재 GA 일별 활동 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getActivityDaily(SofToolRequest request);
-
- @McpTool(name = "sof_visit_count", title = "고객 방문 건수 조회", description = "고객 방문 건수 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_VISIT_COUNT",
- functionDescription = "고객 방문 건수 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 고객 방문 건수 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "고객 방문 건수 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"고객 방문 건수 조회 정보를 보여줘", "고객 방문 건수 조회 결과를 확인해줘", "현재 고객 방문 건수 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getVisitCount(SofToolRequest request);
-
- @McpTool(name = "sof_call_activity", title = "콜 활동 현황 조회", description = "콜 활동 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_CALL_ACTIVITY",
- functionDescription = "콜 활동 현황 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 콜 활동 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "콜 활동 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"콜 활동 현황 조회 정보를 보여줘", "콜 활동 현황 조회 결과를 확인해줘", "현재 콜 활동 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getCallActivity(SofToolRequest request);
-
- @McpTool(name = "sof_customer_consulting", title = "고객 상담 현황 조회", description = "고객 상담 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_CUSTOMER_CONSULTING",
- functionDescription = "고객 상담 현황 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 고객 상담 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "고객 상담 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"고객 상담 현황 조회 정보를 보여줘", "고객 상담 현황 조회 결과를 확인해줘", "현재 고객 상담 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getCustomerConsulting(SofToolRequest request);
-
- @McpTool(name = "sof_prospect_list", title = "신규 발굴 고객 목록 조회", description = "신규 발굴 고객 목록 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_PROSPECT_LIST",
- functionDescription = "신규 발굴 고객 목록 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 신규 발굴 고객 목록 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "신규 발굴 고객 목록 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"신규 발굴 고객 목록 조회 정보를 보여줘", "신규 발굴 고객 목록 조회 결과를 확인해줘", "현재 신규 발굴 고객 목록 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getProspectList(SofToolRequest request);
-
- @McpTool(name = "sof_activity_calendar", title = "활동 일정 조회", description = "활동 일정 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_ACTIVITY_CALENDAR",
- functionDescription = "활동 일정 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 활동 일정 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "활동 일정 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"활동 일정 조회 정보를 보여줘", "활동 일정 조회 결과를 확인해줘", "현재 활동 일정 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getActivityCalendar(SofToolRequest request);
-
- @McpTool(name = "sof_activity_report_status", title = "활동일지 제출 현황 조회", description = "활동일지 제출 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_ACTIVITY_REPORT_STATUS",
- functionDescription = "활동일지 제출 현황 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 활동일지 제출 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "활동일지 제출 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"활동일지 제출 현황 조회 정보를 보여줘", "활동일지 제출 현황 조회 결과를 확인해줘", "현재 활동일지 제출 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getActivityReportStatus(SofToolRequest request);
-
- @McpTool(name = "sof_training_completion", title = "교육 이수 현황 조회", description = "교육 이수 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_TRAINING_COMPLETION",
- functionDescription = "교육 이수 현황 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 교육 이수 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "교육 이수 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"교육 이수 현황 조회 정보를 보여줘", "교육 이수 현황 조회 결과를 확인해줘", "현재 교육 이수 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getTrainingCompletion(SofToolRequest request);
-
- @McpTool(name = "sof_field_support_request", title = "현장 지원 요청 현황 조회", description = "현장 지원 요청 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_FIELD_SUPPORT_REQUEST",
- functionDescription = "현장 지원 요청 현황 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 현장 지원 요청 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "현장 지원 요청 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"현장 지원 요청 현황 조회 정보를 보여줘", "현장 지원 요청 현황 조회 결과를 확인해줘", "현재 현장 지원 요청 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getFieldSupportRequest(SofToolRequest request);
-
- @McpTool(name = "sof_activity_summary", title = "GA 활동 종합 현황 조회", description = "GA 활동 종합 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sof",
- mappingId = "DIRECT_SOF_ACTIVITY_SUMMARY",
- functionDescription = "GA 활동 종합 현황 조회 정보를 조회합니다.",
- whenToUse = "GA 활동 업무에서 GA 활동 종합 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "GA 활동 종합 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"GA 활동 종합 현황 조회 정보를 보여줘", "GA 활동 종합 현황 조회 결과를 확인해줘", "현재 GA 활동 종합 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sof", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SofToolResponse getActivitySummary(SofToolRequest request);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/usecase/impl/SofFieldActivityUseCaseImpl.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/usecase/impl/SofFieldActivityUseCaseImpl.java
deleted file mode 100644
index 8c8712819..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sof/usecase/impl/SofFieldActivityUseCaseImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sof.usecase.impl;
-
-import io.shinhanlife.dat.mcc.biz.sof.dto.SofToolRequest;
-import io.shinhanlife.dat.mcc.biz.sof.dto.SofToolResponse;
-import io.shinhanlife.dat.mcc.biz.sof.usecase.SofFieldActivityUseCase;
-import java.util.List;
-import org.springframework.stereotype.Service;
-
-@Service
-public class SofFieldActivityUseCaseImpl implements SofFieldActivityUseCase {
- @Override
- public SofToolResponse getActivityDaily(SofToolRequest request) {
- return mockResponse(request, "sof_activity_daily", "GA 일별 활동 현황 조회");
- }
-
- @Override
- public SofToolResponse getVisitCount(SofToolRequest request) {
- return mockResponse(request, "sof_visit_count", "고객 방문 건수 조회");
- }
-
- @Override
- public SofToolResponse getCallActivity(SofToolRequest request) {
- return mockResponse(request, "sof_call_activity", "콜 활동 현황 조회");
- }
-
- @Override
- public SofToolResponse getCustomerConsulting(SofToolRequest request) {
- return mockResponse(request, "sof_customer_consulting", "고객 상담 현황 조회");
- }
-
- @Override
- public SofToolResponse getProspectList(SofToolRequest request) {
- return mockResponse(request, "sof_prospect_list", "신규 발굴 고객 목록 조회");
- }
-
- @Override
- public SofToolResponse getActivityCalendar(SofToolRequest request) {
- return mockResponse(request, "sof_activity_calendar", "활동 일정 조회");
- }
-
- @Override
- public SofToolResponse getActivityReportStatus(SofToolRequest request) {
- return mockResponse(request, "sof_activity_report_status", "활동일지 제출 현황 조회");
- }
-
- @Override
- public SofToolResponse getTrainingCompletion(SofToolRequest request) {
- return mockResponse(request, "sof_training_completion", "교육 이수 현황 조회");
- }
-
- @Override
- public SofToolResponse getFieldSupportRequest(SofToolRequest request) {
- return mockResponse(request, "sof_field_support_request", "현장 지원 요청 현황 조회");
- }
-
- @Override
- public SofToolResponse getActivitySummary(SofToolRequest request) {
- return mockResponse(request, "sof_activity_summary", "GA 활동 종합 현황 조회");
- }
-
- private SofToolResponse mockResponse(SofToolRequest request, String toolName, String title) {
- SofToolResponse response = new SofToolResponse();
- response.setToolName(toolName);
- response.setCategory("SOF");
- response.setReferenceId(request != null && hasText(request.getAgentId()) ? request.getAgentId()
- : request != null && hasText(request.getOrganizationId()) ? request.getOrganizationId() : "SOF-000001");
- response.setStatus("정상");
- response.setSummary(title + " 결과");
- response.setAsOfDate(request != null && hasText(request.getQueryDate()) ? request.getQueryDate() : "2026-08-14");
- response.setDetails(List.of(title + " 모의 상세정보", "외부 시스템을 변경하지 않는 조회 결과"));
- return response;
- }
-
- private boolean hasText(String value) {
- return value != null && !value.isBlank();
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/dto/SogToolRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/dto/SogToolRequest.java
deleted file mode 100644
index a057e5e0b..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/dto/SogToolRequest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sog.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springaicommunity.mcp.annotation.McpToolParam;
-
-@Data
-public class SogToolRequest {
- @McpToolParam(description = "설계사번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String agentId;
-
- @McpToolParam(description = "GA 조직번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String organizationId;
-
- @McpToolParam(description = "조회 기준일(YYYY-MM-DD)", required = false)
- @Schema(pattern = "^\\d{4}-\\d{2}-\\d{2}$")
- private String queryDate;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/dto/SogToolResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/dto/SogToolResponse.java
deleted file mode 100644
index 7b3ac4a84..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/dto/SogToolResponse.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sog.dto;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class SogToolResponse {
- private String toolName;
- private String category;
- private String referenceId;
- private String status;
- private String summary;
- private String asOfDate;
- private List details;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/usecase/SogSalesPerformanceUseCase.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/usecase/SogSalesPerformanceUseCase.java
deleted file mode 100644
index fbf046023..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/usecase/SogSalesPerformanceUseCase.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sog.usecase;
-
-import io.shinhanlife.dat.lib.annotation.GrowToolHint;
-import io.shinhanlife.dat.mcc.biz.sog.dto.SogToolRequest;
-import io.shinhanlife.dat.mcc.biz.sog.dto.SogToolResponse;
-import org.springaicommunity.mcp.annotation.McpTool;
-
-public interface SogSalesPerformanceUseCase {
- @McpTool(name = "sog_target_summary", title = "GA 개인별 영업목표 요약 조회", description = "GA 개인별 영업목표 요약 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_TARGET_SUMMARY",
- functionDescription = "GA 개인별 영업목표 요약 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 GA 개인별 영업목표 요약 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "GA 개인별 영업목표 요약 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"GA 개인별 영업목표 요약 조회 정보를 보여줘", "GA 개인별 영업목표 요약 조회 결과를 확인해줘", "현재 GA 개인별 영업목표 요약 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getTargetSummary(SogToolRequest request);
-
- @McpTool(name = "sog_target_progress", title = "영업목표 달성률 조회", description = "영업목표 달성률 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_TARGET_PROGRESS",
- functionDescription = "영업목표 달성률 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 영업목표 달성률 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "영업목표 달성률 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"영업목표 달성률 조회 정보를 보여줘", "영업목표 달성률 조회 결과를 확인해줘", "현재 영업목표 달성률 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getTargetProgress(SogToolRequest request);
-
- @McpTool(name = "sog_monthly_performance", title = "GA 월별 실적 조회", description = "GA 월별 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_MONTHLY_PERFORMANCE",
- functionDescription = "GA 월별 실적 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 GA 월별 실적 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "GA 월별 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"GA 월별 실적 조회 정보를 보여줘", "GA 월별 실적 조회 결과를 확인해줘", "현재 GA 월별 실적 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getMonthlyPerformance(SogToolRequest request);
-
- @McpTool(name = "sog_product_performance", title = "상품별 실적 조회", description = "상품별 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_PRODUCT_PERFORMANCE",
- functionDescription = "상품별 실적 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 상품별 실적 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "상품별 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"상품별 실적 조회 정보를 보여줘", "상품별 실적 조회 결과를 확인해줘", "현재 상품별 실적 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getProductPerformance(SogToolRequest request);
-
- @McpTool(name = "sog_new_contract_count", title = "신계약 건수 실적 조회", description = "신계약 건수 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_NEW_CONTRACT_COUNT",
- functionDescription = "신계약 건수 실적 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 신계약 건수 실적 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "신계약 건수 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"신계약 건수 실적 조회 정보를 보여줘", "신계약 건수 실적 조회 결과를 확인해줘", "현재 신계약 건수 실적 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getNewContractCount(SogToolRequest request);
-
- @McpTool(name = "sog_premium_performance", title = "보험료 실적 조회", description = "보험료 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_PREMIUM_PERFORMANCE",
- functionDescription = "보험료 실적 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 보험료 실적 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "보험료 실적 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"보험료 실적 조회 정보를 보여줘", "보험료 실적 조회 결과를 확인해줘", "현재 보험료 실적 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getPremiumPerformance(SogToolRequest request);
-
- @McpTool(name = "sog_sales_ranking", title = "GA 영업 순위 조회", description = "GA 영업 순위 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_SALES_RANKING",
- functionDescription = "GA 영업 순위 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 GA 영업 순위 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "GA 영업 순위 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"GA 영업 순위 조회 정보를 보여줘", "GA 영업 순위 조회 결과를 확인해줘", "현재 GA 영업 순위 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getSalesRanking(SogToolRequest request);
-
- @McpTool(name = "sog_incentive_summary", title = "영업 인센티브 요약 조회", description = "영업 인센티브 요약 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_INCENTIVE_SUMMARY",
- functionDescription = "영업 인센티브 요약 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 영업 인센티브 요약 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "영업 인센티브 요약 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"영업 인센티브 요약 조회 정보를 보여줘", "영업 인센티브 요약 조회 결과를 확인해줘", "현재 영업 인센티브 요약 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getIncentiveSummary(SogToolRequest request);
-
- @McpTool(name = "sog_target_history", title = "영업목표 변경 이력 조회", description = "영업목표 변경 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_TARGET_HISTORY",
- functionDescription = "영업목표 변경 이력 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 영업목표 변경 이력 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "영업목표 변경 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"영업목표 변경 이력 조회 정보를 보여줘", "영업목표 변경 이력 조회 결과를 확인해줘", "현재 영업목표 변경 이력 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getTargetHistory(SogToolRequest request);
-
- @McpTool(name = "sog_performance_comparison", title = "전년 동기 대비 실적 비교 조회", description = "전년 동기 대비 실적 비교 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sog",
- mappingId = "DIRECT_SOG_PERFORMANCE_COMPARISON",
- functionDescription = "전년 동기 대비 실적 비교 조회 정보를 조회합니다.",
- whenToUse = "GA 영업 업무에서 전년 동기 대비 실적 비교 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "전년 동기 대비 실적 비교 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"전년 동기 대비 실적 비교 조회 정보를 보여줘", "전년 동기 대비 실적 비교 조회 결과를 확인해줘", "현재 전년 동기 대비 실적 비교 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sog", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SogToolResponse getPerformanceComparison(SogToolRequest request);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/usecase/impl/SogSalesPerformanceUseCaseImpl.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/usecase/impl/SogSalesPerformanceUseCaseImpl.java
deleted file mode 100644
index 5fc07cb9b..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sog/usecase/impl/SogSalesPerformanceUseCaseImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sog.usecase.impl;
-
-import io.shinhanlife.dat.mcc.biz.sog.dto.SogToolRequest;
-import io.shinhanlife.dat.mcc.biz.sog.dto.SogToolResponse;
-import io.shinhanlife.dat.mcc.biz.sog.usecase.SogSalesPerformanceUseCase;
-import java.util.List;
-import org.springframework.stereotype.Service;
-
-@Service
-public class SogSalesPerformanceUseCaseImpl implements SogSalesPerformanceUseCase {
- @Override
- public SogToolResponse getTargetSummary(SogToolRequest request) {
- return mockResponse(request, "sog_target_summary", "GA 개인별 영업목표 요약 조회");
- }
-
- @Override
- public SogToolResponse getTargetProgress(SogToolRequest request) {
- return mockResponse(request, "sog_target_progress", "영업목표 달성률 조회");
- }
-
- @Override
- public SogToolResponse getMonthlyPerformance(SogToolRequest request) {
- return mockResponse(request, "sog_monthly_performance", "GA 월별 실적 조회");
- }
-
- @Override
- public SogToolResponse getProductPerformance(SogToolRequest request) {
- return mockResponse(request, "sog_product_performance", "상품별 실적 조회");
- }
-
- @Override
- public SogToolResponse getNewContractCount(SogToolRequest request) {
- return mockResponse(request, "sog_new_contract_count", "신계약 건수 실적 조회");
- }
-
- @Override
- public SogToolResponse getPremiumPerformance(SogToolRequest request) {
- return mockResponse(request, "sog_premium_performance", "보험료 실적 조회");
- }
-
- @Override
- public SogToolResponse getSalesRanking(SogToolRequest request) {
- return mockResponse(request, "sog_sales_ranking", "GA 영업 순위 조회");
- }
-
- @Override
- public SogToolResponse getIncentiveSummary(SogToolRequest request) {
- return mockResponse(request, "sog_incentive_summary", "영업 인센티브 요약 조회");
- }
-
- @Override
- public SogToolResponse getTargetHistory(SogToolRequest request) {
- return mockResponse(request, "sog_target_history", "영업목표 변경 이력 조회");
- }
-
- @Override
- public SogToolResponse getPerformanceComparison(SogToolRequest request) {
- return mockResponse(request, "sog_performance_comparison", "전년 동기 대비 실적 비교 조회");
- }
-
- private SogToolResponse mockResponse(SogToolRequest request, String toolName, String title) {
- SogToolResponse response = new SogToolResponse();
- response.setToolName(toolName);
- response.setCategory("SOG");
- response.setReferenceId(request != null && hasText(request.getAgentId()) ? request.getAgentId()
- : request != null && hasText(request.getOrganizationId()) ? request.getOrganizationId() : "SOG-000001");
- response.setStatus("정상");
- response.setSummary(title + " 결과");
- response.setAsOfDate(request != null && hasText(request.getQueryDate()) ? request.getQueryDate() : "2026-08-14");
- response.setDetails(List.of(title + " 모의 상세정보", "외부 시스템을 변경하지 않는 조회 결과"));
- return response;
- }
-
- private boolean hasText(String value) {
- return value != null && !value.isBlank();
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/dto/SotToolRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/dto/SotToolRequest.java
deleted file mode 100644
index 5e0bc6983..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/dto/SotToolRequest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sot.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springaicommunity.mcp.annotation.McpToolParam;
-
-@Data
-public class SotToolRequest {
- @McpToolParam(description = "고객번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String customerId;
-
- @McpToolParam(description = "가입설계번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String contractId;
-
- @McpToolParam(description = "조회 기준일(YYYY-MM-DD)", required = false)
- @Schema(pattern = "^\\d{4}-\\d{2}-\\d{2}$")
- private String queryDate;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/dto/SotToolResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/dto/SotToolResponse.java
deleted file mode 100644
index e73159972..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/dto/SotToolResponse.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sot.dto;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class SotToolResponse {
- private String toolName;
- private String category;
- private String referenceId;
- private String status;
- private String summary;
- private String asOfDate;
- private List details;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/usecase/SotConsentUseCase.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/usecase/SotConsentUseCase.java
deleted file mode 100644
index 015620c08..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/usecase/SotConsentUseCase.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sot.usecase;
-
-import io.shinhanlife.dat.lib.annotation.GrowToolHint;
-import io.shinhanlife.dat.mcc.biz.sot.dto.SotToolRequest;
-import io.shinhanlife.dat.mcc.biz.sot.dto.SotToolResponse;
-import org.springaicommunity.mcp.annotation.McpTool;
-
-public interface SotConsentUseCase {
- @McpTool(name = "sot_marketing_consent_status", title = "마케팅 수신동의 현황 조회", description = "마케팅 수신동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_MARKETING_CONSENT_STATUS",
- functionDescription = "마케팅 수신동의 현황 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 마케팅 수신동의 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "마케팅 수신동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"마케팅 수신동의 현황 조회 정보를 보여줘", "마케팅 수신동의 현황 조회 결과를 확인해줘", "현재 마케팅 수신동의 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getMarketingConsentStatus(SotToolRequest request);
-
- @McpTool(name = "sot_marketing_consent_history", title = "마케팅 동의 이력 조회", description = "마케팅 동의 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_MARKETING_CONSENT_HISTORY",
- functionDescription = "마케팅 동의 이력 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 마케팅 동의 이력 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "마케팅 동의 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"마케팅 동의 이력 조회 정보를 보여줘", "마케팅 동의 이력 조회 결과를 확인해줘", "현재 마케팅 동의 이력 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getMarketingConsentHistory(SotToolRequest request);
-
- @McpTool(name = "sot_marketing_consent_channel", title = "채널별 마케팅 동의 현황 조회", description = "채널별 마케팅 동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_MARKETING_CONSENT_CHANNEL",
- functionDescription = "채널별 마케팅 동의 현황 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 채널별 마케팅 동의 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "채널별 마케팅 동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"채널별 마케팅 동의 현황 조회 정보를 보여줘", "채널별 마케팅 동의 현황 조회 결과를 확인해줘", "현재 채널별 마케팅 동의 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getMarketingConsentChannel(SotToolRequest request);
-
- @McpTool(name = "sot_subscription_design_consent", title = "가입설계 동의 현황 조회", description = "가입설계 동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_SUBSCRIPTION_DESIGN_CONSENT",
- functionDescription = "가입설계 동의 현황 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 가입설계 동의 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "가입설계 동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"가입설계 동의 현황 조회 정보를 보여줘", "가입설계 동의 현황 조회 결과를 확인해줘", "현재 가입설계 동의 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getSubscriptionDesignConsent(SotToolRequest request);
-
- @McpTool(name = "sot_subscription_design_detail", title = "가입설계 동의 상세 조회", description = "가입설계 동의 상세 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_SUBSCRIPTION_DESIGN_DETAIL",
- functionDescription = "가입설계 동의 상세 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 가입설계 동의 상세 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "가입설계 동의 상세 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"가입설계 동의 상세 조회 정보를 보여줘", "가입설계 동의 상세 조회 결과를 확인해줘", "현재 가입설계 동의 상세 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getSubscriptionDesignDetail(SotToolRequest request);
-
- @McpTool(name = "sot_customer_info_consent", title = "고객정보 수집·이용 동의 현황 조회", description = "고객정보 수집·이용 동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_CUSTOMER_INFO_CONSENT",
- functionDescription = "고객정보 수집·이용 동의 현황 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 고객정보 수집·이용 동의 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "고객정보 수집·이용 동의 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"고객정보 수집·이용 동의 현황 조회 정보를 보여줘", "고객정보 수집·이용 동의 현황 조회 결과를 확인해줘", "현재 고객정보 수집·이용 동의 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getCustomerInfoConsent(SotToolRequest request);
-
- @McpTool(name = "sot_customer_info_consent_scope", title = "고객정보 동의 범위 조회", description = "고객정보 동의 범위 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_CUSTOMER_INFO_CONSENT_SCOPE",
- functionDescription = "고객정보 동의 범위 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 고객정보 동의 범위 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "고객정보 동의 범위 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"고객정보 동의 범위 조회 정보를 보여줘", "고객정보 동의 범위 조회 결과를 확인해줘", "현재 고객정보 동의 범위 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getCustomerInfoConsentScope(SotToolRequest request);
-
- @McpTool(name = "sot_consent_expiry", title = "동의 유효기간 만료 현황 조회", description = "동의 유효기간 만료 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_CONSENT_EXPIRY",
- functionDescription = "동의 유효기간 만료 현황 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 동의 유효기간 만료 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "동의 유효기간 만료 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"동의 유효기간 만료 현황 조회 정보를 보여줘", "동의 유효기간 만료 현황 조회 결과를 확인해줘", "현재 동의 유효기간 만료 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getConsentExpiry(SotToolRequest request);
-
- @McpTool(name = "sot_consent_withdrawal", title = "동의 철회 이력 조회", description = "동의 철회 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_CONSENT_WITHDRAWAL",
- functionDescription = "동의 철회 이력 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 동의 철회 이력 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "동의 철회 이력 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"동의 철회 이력 조회 정보를 보여줘", "동의 철회 이력 조회 결과를 확인해줘", "현재 동의 철회 이력 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getConsentWithdrawal(SotToolRequest request);
-
- @McpTool(name = "sot_tm_call_eligibility", title = "텔레마케팅 콜 가능여부 종합 조회", description = "텔레마케팅 콜 가능여부 종합 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "sot",
- mappingId = "DIRECT_SOT_TM_CALL_ELIGIBILITY",
- functionDescription = "텔레마케팅 콜 가능여부 종합 조회 정보를 조회합니다.",
- whenToUse = "텔레마케팅 동의 업무에서 텔레마케팅 콜 가능여부 종합 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "텔레마케팅 콜 가능여부 종합 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"텔레마케팅 콜 가능여부 종합 조회 정보를 보여줘", "텔레마케팅 콜 가능여부 종합 조회 결과를 확인해줘", "현재 텔레마케팅 콜 가능여부 종합 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"sot", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SotToolResponse getTmCallEligibility(SotToolRequest request);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/usecase/impl/SotConsentUseCaseImpl.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/usecase/impl/SotConsentUseCaseImpl.java
deleted file mode 100644
index c9590436f..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/sot/usecase/impl/SotConsentUseCaseImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sot.usecase.impl;
-
-import io.shinhanlife.dat.mcc.biz.sot.dto.SotToolRequest;
-import io.shinhanlife.dat.mcc.biz.sot.dto.SotToolResponse;
-import io.shinhanlife.dat.mcc.biz.sot.usecase.SotConsentUseCase;
-import java.util.List;
-import org.springframework.stereotype.Service;
-
-@Service
-public class SotConsentUseCaseImpl implements SotConsentUseCase {
- @Override
- public SotToolResponse getMarketingConsentStatus(SotToolRequest request) {
- return mockResponse(request, "sot_marketing_consent_status", "마케팅 수신동의 현황 조회");
- }
-
- @Override
- public SotToolResponse getMarketingConsentHistory(SotToolRequest request) {
- return mockResponse(request, "sot_marketing_consent_history", "마케팅 동의 이력 조회");
- }
-
- @Override
- public SotToolResponse getMarketingConsentChannel(SotToolRequest request) {
- return mockResponse(request, "sot_marketing_consent_channel", "채널별 마케팅 동의 현황 조회");
- }
-
- @Override
- public SotToolResponse getSubscriptionDesignConsent(SotToolRequest request) {
- return mockResponse(request, "sot_subscription_design_consent", "가입설계 동의 현황 조회");
- }
-
- @Override
- public SotToolResponse getSubscriptionDesignDetail(SotToolRequest request) {
- return mockResponse(request, "sot_subscription_design_detail", "가입설계 동의 상세 조회");
- }
-
- @Override
- public SotToolResponse getCustomerInfoConsent(SotToolRequest request) {
- return mockResponse(request, "sot_customer_info_consent", "고객정보 수집·이용 동의 현황 조회");
- }
-
- @Override
- public SotToolResponse getCustomerInfoConsentScope(SotToolRequest request) {
- return mockResponse(request, "sot_customer_info_consent_scope", "고객정보 동의 범위 조회");
- }
-
- @Override
- public SotToolResponse getConsentExpiry(SotToolRequest request) {
- return mockResponse(request, "sot_consent_expiry", "동의 유효기간 만료 현황 조회");
- }
-
- @Override
- public SotToolResponse getConsentWithdrawal(SotToolRequest request) {
- return mockResponse(request, "sot_consent_withdrawal", "동의 철회 이력 조회");
- }
-
- @Override
- public SotToolResponse getTmCallEligibility(SotToolRequest request) {
- return mockResponse(request, "sot_tm_call_eligibility", "텔레마케팅 콜 가능여부 종합 조회");
- }
-
- private SotToolResponse mockResponse(SotToolRequest request, String toolName, String title) {
- SotToolResponse response = new SotToolResponse();
- response.setToolName(toolName);
- response.setCategory("SOT");
- response.setReferenceId(request != null && hasText(request.getCustomerId()) ? request.getCustomerId()
- : request != null && hasText(request.getContractId()) ? request.getContractId() : "SOT-000001");
- response.setStatus("정상");
- response.setSummary(title + " 결과");
- response.setAsOfDate(request != null && hasText(request.getQueryDate()) ? request.getQueryDate() : "2026-08-14");
- response.setDetails(List.of(title + " 모의 상세정보", "외부 시스템을 변경하지 않는 조회 결과"));
- return response;
- }
-
- private boolean hasText(String value) {
- return value != null && !value.isBlank();
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/dto/SprToolRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/dto/SprToolRequest.java
deleted file mode 100644
index f5fcd3828..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/dto/SprToolRequest.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.spr.dto;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-import org.springaicommunity.mcp.annotation.McpToolParam;
-
-@Data
-public class SprToolRequest {
- @McpToolParam(description = "현장문의번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String inquiryId;
-
- @McpToolParam(description = "설계사번호", required = false)
- @Schema(pattern = "^[A-Za-z0-9_-]{3,30}$")
- private String agentId;
-
- @McpToolParam(description = "조회 기준일(YYYY-MM-DD)", required = false)
- @Schema(pattern = "^\\d{4}-\\d{2}-\\d{2}$")
- private String queryDate;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/dto/SprToolResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/dto/SprToolResponse.java
deleted file mode 100644
index 7190eaf2f..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/dto/SprToolResponse.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.spr.dto;
-
-import java.util.List;
-import lombok.Data;
-
-@Data
-public class SprToolResponse {
- private String toolName;
- private String category;
- private String referenceId;
- private String status;
- private String summary;
- private String asOfDate;
- private List details;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/usecase/SprFieldInquiryUseCase.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/usecase/SprFieldInquiryUseCase.java
deleted file mode 100644
index bdab584be..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/usecase/SprFieldInquiryUseCase.java
+++ /dev/null
@@ -1,198 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.spr.usecase;
-
-import io.shinhanlife.dat.lib.annotation.GrowToolHint;
-import io.shinhanlife.dat.mcc.biz.spr.dto.SprToolRequest;
-import io.shinhanlife.dat.mcc.biz.spr.dto.SprToolResponse;
-import org.springaicommunity.mcp.annotation.McpTool;
-
-public interface SprFieldInquiryUseCase {
- @McpTool(name = "spr_field_inquiry_list", title = "GA현장문의 목록 조회", description = "GA현장문의 목록 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_LIST",
- functionDescription = "GA현장문의 목록 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 GA현장문의 목록 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "GA현장문의 목록 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"GA현장문의 목록 조회 정보를 보여줘", "GA현장문의 목록 조회 결과를 확인해줘", "현재 GA현장문의 목록 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryList(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_detail", title = "GA현장문의 상세 조회", description = "GA현장문의 상세 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_DETAIL",
- functionDescription = "GA현장문의 상세 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 GA현장문의 상세 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "GA현장문의 상세 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"GA현장문의 상세 조회 정보를 보여줘", "GA현장문의 상세 조회 결과를 확인해줘", "현재 GA현장문의 상세 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryDetail(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_status", title = "문의 처리상태 조회", description = "문의 처리상태 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_STATUS",
- functionDescription = "문의 처리상태 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 문의 처리상태 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "문의 처리상태 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"문의 처리상태 조회 정보를 보여줘", "문의 처리상태 조회 결과를 확인해줘", "현재 문의 처리상태 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryStatus(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_category", title = "문의 유형별 통계 조회", description = "문의 유형별 통계 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_CATEGORY",
- functionDescription = "문의 유형별 통계 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 문의 유형별 통계 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "문의 유형별 통계 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"문의 유형별 통계 조회 정보를 보여줘", "문의 유형별 통계 조회 결과를 확인해줘", "현재 문의 유형별 통계 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryCategory(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_answer", title = "문의 답변 조회", description = "문의 답변 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_ANSWER",
- functionDescription = "문의 답변 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 문의 답변 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "문의 답변 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"문의 답변 조회 정보를 보여줘", "문의 답변 조회 결과를 확인해줘", "현재 문의 답변 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryAnswer(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_escalation", title = "에스컬레이션 현황 조회", description = "에스컬레이션 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_ESCALATION",
- functionDescription = "에스컬레이션 현황 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 에스컬레이션 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "에스컬레이션 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"에스컬레이션 현황 조회 정보를 보여줘", "에스컬레이션 현황 조회 결과를 확인해줘", "현재 에스컬레이션 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryEscalation(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_faq", title = "자주묻는질문 FAQ 조회", description = "자주묻는질문 FAQ 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_FAQ",
- functionDescription = "자주묻는질문 FAQ 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 자주묻는질문 FAQ 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "자주묻는질문 FAQ 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"자주묻는질문 FAQ 조회 정보를 보여줘", "자주묻는질문 FAQ 조회 결과를 확인해줘", "현재 자주묻는질문 FAQ 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryFaq(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_manager", title = "담당자 배정 현황 조회", description = "담당자 배정 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_MANAGER",
- functionDescription = "담당자 배정 현황 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 담당자 배정 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "담당자 배정 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"담당자 배정 현황 조회 정보를 보여줘", "담당자 배정 현황 조회 결과를 확인해줘", "현재 담당자 배정 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquiryManager(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_sla", title = "처리기한 SLA 현황 조회", description = "처리기한 SLA 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_SLA",
- functionDescription = "처리기한 SLA 현황 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 처리기한 SLA 현황 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "처리기한 SLA 현황 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"처리기한 SLA 현황 조회 정보를 보여줘", "처리기한 SLA 현황 조회 결과를 확인해줘", "현재 처리기한 SLA 현황 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquirySla(SprToolRequest request);
-
- @McpTool(name = "spr_field_inquiry_satisfaction", title = "문의 만족도 조사 결과 조회", description = "문의 만족도 조사 결과 조회 정보를 안전한 모의 데이터로 제공합니다.",
- annotations = @McpTool.McpAnnotations(openWorldHint = false))
- @GrowToolHint(
- requiresApproval = false,
- categoryKey = "spr",
- mappingId = "DIRECT_SPR_FIELD_INQUIRY_SATISFACTION",
- functionDescription = "문의 만족도 조사 결과 조회 정보를 조회합니다.",
- whenToUse = "GA현장지원 업무에서 문의 만족도 조사 결과 조회 정보가 필요할 때 사용합니다.",
- whenNotToUse = "정보 변경, 승인 또는 실제 업무처리에는 사용하지 않습니다.",
- ioLimits = "입력 식별자에 대한 모의 조회 데이터만 반환하며 외부 시스템을 변경하지 않습니다.",
- displayDescription = "문의 만족도 조사 결과 조회 정보를 안전한 모의 데이터로 제공합니다.",
- exampleQueries = {"문의 만족도 조사 결과 조회 정보를 보여줘", "문의 만족도 조사 결과 조회 결과를 확인해줘", "현재 문의 만족도 조사 결과 조회 내용을 알려줘"},
- destructive = false,
- idempotent = true,
- tags = {"spr", "조회", "mock"},
- ownerOrg = "MCP_TOOL"
- )
- SprToolResponse getFieldInquirySatisfaction(SprToolRequest request);
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/usecase/impl/SprFieldInquiryUseCaseImpl.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/usecase/impl/SprFieldInquiryUseCaseImpl.java
deleted file mode 100644
index db5439d0e..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/biz/spr/usecase/impl/SprFieldInquiryUseCaseImpl.java
+++ /dev/null
@@ -1,77 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.spr.usecase.impl;
-
-import io.shinhanlife.dat.mcc.biz.spr.dto.SprToolRequest;
-import io.shinhanlife.dat.mcc.biz.spr.dto.SprToolResponse;
-import io.shinhanlife.dat.mcc.biz.spr.usecase.SprFieldInquiryUseCase;
-import java.util.List;
-import org.springframework.stereotype.Service;
-
-@Service
-public class SprFieldInquiryUseCaseImpl implements SprFieldInquiryUseCase {
- @Override
- public SprToolResponse getFieldInquiryList(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_list", "GA현장문의 목록 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquiryDetail(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_detail", "GA현장문의 상세 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquiryStatus(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_status", "문의 처리상태 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquiryCategory(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_category", "문의 유형별 통계 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquiryAnswer(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_answer", "문의 답변 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquiryEscalation(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_escalation", "에스컬레이션 현황 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquiryFaq(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_faq", "자주묻는질문 FAQ 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquiryManager(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_manager", "담당자 배정 현황 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquirySla(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_sla", "처리기한 SLA 현황 조회");
- }
-
- @Override
- public SprToolResponse getFieldInquirySatisfaction(SprToolRequest request) {
- return mockResponse(request, "spr_field_inquiry_satisfaction", "문의 만족도 조사 결과 조회");
- }
-
- private SprToolResponse mockResponse(SprToolRequest request, String toolName, String title) {
- SprToolResponse response = new SprToolResponse();
- response.setToolName(toolName);
- response.setCategory("SPR");
- response.setReferenceId(request != null && hasText(request.getInquiryId()) ? request.getInquiryId()
- : request != null && hasText(request.getAgentId()) ? request.getAgentId() : "SPR-000001");
- response.setStatus("정상");
- response.setSummary(title + " 결과");
- response.setAsOfDate(request != null && hasText(request.getQueryDate()) ? request.getQueryDate() : "2026-08-14");
- response.setDetails(List.of(title + " 모의 상세정보", "외부 시스템을 변경하지 않는 조회 결과"));
- return response;
- }
-
- private boolean hasText(String value) {
- return value != null && !value.isBlank();
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/MemoClient.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/MemoClient.java
deleted file mode 100644
index dfd0ac2d8..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/MemoClient.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.shinhanlife.dat.mcc.infra.itrf.http.memo;
-
-import io.shinhanlife.dat.lib.integration.http.component.AxhubHttpComponent;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Component;
-
-@Component
-@RequiredArgsConstructor
-public class MemoClient {
- private static final String API_NAME = "memo";
-
- private final AxhubHttpComponent http;
-
- public O call(I request, Class responseType) {
- return http.call(API_NAME, request, responseType);
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpRequest.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpRequest.java
deleted file mode 100644
index 475856124..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpRequest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package io.shinhanlife.dat.mcc.infra.itrf.http.memo.io;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class MemoListRetrieverHttpRequest {
- @Schema(description = "조회할 의뢰서 상태", example = "OPEN", requiredMode = Schema.RequiredMode.REQUIRED)
- private String memoStatus;
-
- @Schema(description = "검색 키워드", example = "프로젝트", requiredMode = Schema.RequiredMode.REQUIRED)
- private String searchKeyword;
-
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpResponse.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpResponse.java
deleted file mode 100644
index 983f7afbe..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/http/memo/io/MemoListRetrieverHttpResponse.java
+++ /dev/null
@@ -1,13 +0,0 @@
-package io.shinhanlife.dat.mcc.infra.itrf.http.memo.io;
-
-import com.fasterxml.jackson.annotation.JsonInclude;
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class MemoListRetrieverHttpResponse {
- private String resultCode;
-
- private String resultMessage;
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/MciNclaClient.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/MciNclaClient.java
deleted file mode 100644
index 6bac3b0c6..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/MciNclaClient.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package io.shinhanlife.dat.mcc.infra.itrf.mci.ncla;
-
-import org.springframework.stereotype.Component;
-import lombok.RequiredArgsConstructor;
-import io.shinhanlife.dat.lib.integration.mci.component.AxhubMciComponent;
-import io.shinhanlife.glow.communication.dto.Transfer;
-
-/**
- * @package io.shinhanlife.dat.mcc.infra.itrf.mci.ncla
- * @className MciNclaClient
- * @description AX HUB 시스템 처리 클래스
- * @author jade
- * @create 2026.08.10
- *
- * ---------- 개정이력 ----------
- * 수정일 수정자 수정내용
- * ---------- -------- ---------------------------
- * 2026.08.10 jade 최초생성
- *
- *
- */
-@Component
-@RequiredArgsConstructor
-public class MciNclaClient {
- private final AxhubMciComponent mci;
-
- public Transfer callTo(String interfaceId, String dummy, Object mciReq, Class resType) {
- return mci.callTo(interfaceId, dummy, mciReq, resType);
- }
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_I.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_I.java
deleted file mode 100644
index ef6b436d9..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_I.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.io;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-public class CLCNNB00001_I {
- @Schema(description = "보험금 청구번호", example = "CLM202608100001", requiredMode = Schema.RequiredMode.REQUIRED)
- private String claimNo;
-
- @Schema(description = "보험 계약번호", example = "10023456789")
- private String contractNo;
-
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_O.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_O.java
deleted file mode 100644
index e81ba4aca..000000000
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/infra/itrf/mci/ncla/io/CLCNNB00001_O.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.io;
-
-import io.swagger.v3.oas.annotations.media.Schema;
-import lombok.Data;
-
-@Data
-public class CLCNNB00001_O {
- @Schema(description = "청구 처리 상태 코드", example = "RECEIVED", requiredMode = Schema.RequiredMode.REQUIRED)
- private String status;
-
- @Schema(description = "청구 처리 상태명", example = "접수", requiredMode = Schema.RequiredMode.REQUIRED)
- private String statusLabel;
-
- @Schema(description = "승인 금액", example = "150000")
- private Long approvedAmount;
-
-}
diff --git a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/sal/DatWasSalApplication.java b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/sal/DatWasSalApplication.java
index 00d40003e..8730bf839 100644
--- a/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/sal/DatWasSalApplication.java
+++ b/dat-was-sal/src/main/java/io/shinhanlife/dat/mcc/sal/DatWasSalApplication.java
@@ -1,31 +1,27 @@
package io.shinhanlife.dat.mcc.sal;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
+import org.springframework.cache.annotation.EnableCaching;
/**
* @package io.shinhanlife.dat.mcc.sal
* @className DatWasSalApplication
* @description AX HUB 시스템 처리 클래스
- * @author 0986406
- * @create 2026.09.01
+ * @author jade
+ * @create 2026.09.08
*
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
- * 2026.09.01 0986406 최초생성
- *
+ * 2026.09.08 jade 최초생성
+ *
*
*/
-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.dat.lib.mcp.ToolMcpServerConfiguration;
-
@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 DatWasSalApplication {
public static void main(String[] args) {
SpringApplication.run(DatWasSalApplication.class, args);
diff --git a/dat-was-sal/src/main/resources/application-dev.yml b/dat-was-sal/src/main/resources/application-dev.yml
index 6aed956e9..7fd673f5b 100644
--- a/dat-was-sal/src/main/resources/application-dev.yml
+++ b/dat-was-sal/src/main/resources/application-dev.yml
@@ -1,15 +1,11 @@
-# OCI 클라우드 개발 환경 전용 설정
server:
- port: ${PORT:8082}
-
-axhub:
- gateway:
- url: https://axhubmcp.devjun.net
+ port: ${PORT:8083}
spring:
config:
activate:
on-profile: dev
import:
+ - classpath:application-core-dev.yml
- classpath:glow/application-glow.yml
- classpath:glow/application-glow-dev.yml
diff --git a/dat-was-sal/src/main/resources/application-local.yml b/dat-was-sal/src/main/resources/application-local.yml
index 6f71fa089..d985a21ec 100644
--- a/dat-was-sal/src/main/resources/application-local.yml
+++ b/dat-was-sal/src/main/resources/application-local.yml
@@ -1,4 +1,3 @@
-# Local 환경 전용 설정 (H2 메모리 DB 등)
spring:
config:
activate:
@@ -6,7 +5,3 @@ spring:
import:
- classpath:glow/application-glow.yml
- classpath:glow/application-glow-local.yml
-
-axhub:
- tool:
- url: ${AXHUB_TOOL_URL:http://localhost:${server.port}}
diff --git a/dat-was-sal/src/main/resources/application-prod.yml b/dat-was-sal/src/main/resources/application-prod.yml
index 8d6f1ab04..31306c3fe 100644
--- a/dat-was-sal/src/main/resources/application-prod.yml
+++ b/dat-was-sal/src/main/resources/application-prod.yml
@@ -1,16 +1,11 @@
server:
- port: ${PORT:8082}
+ port: ${PORT:8083}
spring:
config:
activate:
on-profile: prod
import:
+ - classpath:application-core-prod.yml
- classpath:glow/application-glow.yml
- classpath:glow/application-glow-prod.yml
-
-axhub:
- gateway:
- url: ${AXHUB_GATEWAY_URL}
- tool:
- url: ${AXHUB_TOOL_URL}
\ No newline at end of file
diff --git a/dat-was-sal/src/main/resources/application-test.yml b/dat-was-sal/src/main/resources/application-test.yml
index a394e88df..1ce9d5ad4 100644
--- a/dat-was-sal/src/main/resources/application-test.yml
+++ b/dat-was-sal/src/main/resources/application-test.yml
@@ -1,16 +1,11 @@
server:
- port: ${PORT:8082}
+ port: ${PORT:8083}
spring:
config:
activate:
on-profile: test
import:
+ - classpath:application-core-test.yml
- classpath:glow/application-glow.yml
- classpath:glow/application-glow-test.yml
-
-axhub:
- gateway:
- url: ${AXHUB_GATEWAY_URL}
- tool:
- url: ${AXHUB_TOOL_URL}
\ No newline at end of file
diff --git a/dat-was-sal/src/main/resources/application.yml b/dat-was-sal/src/main/resources/application.yml
index 5b53d9746..d0cedef0a 100644
--- a/dat-was-sal/src/main/resources/application.yml
+++ b/dat-was-sal/src/main/resources/application.yml
@@ -1,5 +1,5 @@
server:
- port: 8082
+ port: 8083
spring:
application:
name: dat-was-sal
@@ -13,8 +13,7 @@ logging:
mcp:
namespace: ""
manifest:
- bundle-id: was-sal
- # Set the AA-assigned prefix before MCP pull activation (for example: sal.).
+ bundle-id: dat-was-sal
name-prefix: ""
security:
api-key: ${TOOL_SERVER_API_KEY:tool-server-key}
diff --git a/dat-was-sal/src/main/resources/logback-spring.xml b/dat-was-sal/src/main/resources/logback-spring.xml
index eda389e1a..46a102842 100644
--- a/dat-was-sal/src/main/resources/logback-spring.xml
+++ b/dat-was-sal/src/main/resources/logback-spring.xml
@@ -1,41 +1,24 @@
-
-
-
-
${LOG_PATTERN}
-
-
-
-
-
- /swlog/dat-was-sal/A01/${HOSTNAME}_A01.log
-
-
- /swlog/dat-was-sal/A01/${HOSTNAME}_A01_%d{yyyyMMdd}.%i.log
-
- 100MB
+ logs/dat-was-sal.log
+
+ logs/dat-was-sal-%d{yyyy-MM-dd}.log
30
- 1GB
${LOG_PATTERN}
-
-
-
-
diff --git a/dat-was-sal/src/main/resources/mock-responses/cmm_memo_retriever.json b/dat-was-sal/src/main/resources/mock-responses/cmm_memo_retriever.json
deleted file mode 100644
index a949502b1..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/cmm_memo_retriever.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
- "resultCode": "SUCCESS"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_document.json b/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_document.json
deleted file mode 100644
index 99650ca3a..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_document.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_contract_review_document\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"계약심사 제출서류 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"계약심사 제출서류 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_history.json b/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_history.json
deleted file mode 100644
index bf49c60e4..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_history.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_contract_review_history\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"계약심사 이력 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"계약심사 이력 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_result.json b/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_result.json
deleted file mode 100644
index 2020e2bd6..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_result.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_contract_review_result\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"계약심사 결과 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"계약심사 결과 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_status.json b/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_status.json
deleted file mode 100644
index f813199df..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_contract_review_status.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_contract_review_status\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"계약심사 진행상태 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"계약심사 진행상태 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_product_coverage.json b/dat-was-sal/src/main/resources/mock-responses/lic_product_coverage.json
deleted file mode 100644
index 9e1d63c64..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_product_coverage.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_product_coverage\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"상품 보장내용 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"상품 보장내용 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_product_info.json b/dat-was-sal/src/main/resources/mock-responses/lic_product_info.json
deleted file mode 100644
index fbb220f73..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_product_info.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_product_info\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"상품 정보 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"상품 정보 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_product_premium_table.json b/dat-was-sal/src/main/resources/mock-responses/lic_product_premium_table.json
deleted file mode 100644
index ea30062ec..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_product_premium_table.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_product_premium_table\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"상품 보험료 요율표 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"상품 보험료 요율표 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_additional_request.json b/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_additional_request.json
deleted file mode 100644
index 3bf048d43..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_additional_request.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_underwriting_additional_request\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"언더라이팅 추가자료 요청 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"언더라이팅 추가자료 요청 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_result.json b/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_result.json
deleted file mode 100644
index 13d7d7b6c..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_result.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_underwriting_result\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"언더라이팅 인수심사 결과 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"언더라이팅 인수심사 결과 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_risk_grade.json b/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_risk_grade.json
deleted file mode 100644
index 24d54cf58..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/lic_underwriting_risk_grade.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"lic_underwriting_risk_grade\",\"category\":\"LIC\",\"referenceId\":\"LIC-000001\",\"status\":\"정상\",\"summary\":\"언더라이팅 위험등급 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"언더라이팅 위험등급 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sms_cmm_claim_search.json b/dat-was-sal/src/main/resources/mock-responses/sms_cmm_claim_search.json
deleted file mode 100644
index 9c4f9c037..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sms_cmm_claim_search.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "status" : "RECEIVED",
- "statusLabel" : "접수",
- "approvedAmount" : 150000
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_activity_calendar.json b/dat-was-sal/src/main/resources/mock-responses/sof_activity_calendar.json
deleted file mode 100644
index 8aa12eb8d..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_activity_calendar.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_activity_calendar\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"활동 일정 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"활동 일정 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_activity_daily.json b/dat-was-sal/src/main/resources/mock-responses/sof_activity_daily.json
deleted file mode 100644
index e10f8dc3d..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_activity_daily.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_activity_daily\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"GA 일별 활동 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"GA 일별 활동 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_activity_report_status.json b/dat-was-sal/src/main/resources/mock-responses/sof_activity_report_status.json
deleted file mode 100644
index 533993ac1..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_activity_report_status.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_activity_report_status\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"활동일지 제출 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"활동일지 제출 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_activity_summary.json b/dat-was-sal/src/main/resources/mock-responses/sof_activity_summary.json
deleted file mode 100644
index 1f46cc369..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_activity_summary.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_activity_summary\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"GA 활동 종합 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"GA 활동 종합 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_call_activity.json b/dat-was-sal/src/main/resources/mock-responses/sof_call_activity.json
deleted file mode 100644
index 78d5a136f..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_call_activity.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_call_activity\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"콜 활동 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"콜 활동 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_customer_consulting.json b/dat-was-sal/src/main/resources/mock-responses/sof_customer_consulting.json
deleted file mode 100644
index 2fa0e9a55..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_customer_consulting.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_customer_consulting\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"고객 상담 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"고객 상담 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_field_support_request.json b/dat-was-sal/src/main/resources/mock-responses/sof_field_support_request.json
deleted file mode 100644
index 3bec29c52..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_field_support_request.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_field_support_request\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"현장 지원 요청 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"현장 지원 요청 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_prospect_list.json b/dat-was-sal/src/main/resources/mock-responses/sof_prospect_list.json
deleted file mode 100644
index 205d8dc9a..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_prospect_list.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_prospect_list\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"신규 발굴 고객 목록 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"신규 발굴 고객 목록 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_training_completion.json b/dat-was-sal/src/main/resources/mock-responses/sof_training_completion.json
deleted file mode 100644
index f2cabec6a..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_training_completion.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_training_completion\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"교육 이수 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"교육 이수 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sof_visit_count.json b/dat-was-sal/src/main/resources/mock-responses/sof_visit_count.json
deleted file mode 100644
index f43017c74..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sof_visit_count.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sof_visit_count\",\"category\":\"SOF\",\"referenceId\":\"SOF-000001\",\"status\":\"정상\",\"summary\":\"고객 방문 건수 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"고객 방문 건수 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_incentive_summary.json b/dat-was-sal/src/main/resources/mock-responses/sog_incentive_summary.json
deleted file mode 100644
index 2ab905bbf..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_incentive_summary.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_incentive_summary\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"영업 인센티브 요약 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"영업 인센티브 요약 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_monthly_performance.json b/dat-was-sal/src/main/resources/mock-responses/sog_monthly_performance.json
deleted file mode 100644
index 79fdc1b78..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_monthly_performance.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_monthly_performance\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"GA 월별 실적 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"GA 월별 실적 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_new_contract_count.json b/dat-was-sal/src/main/resources/mock-responses/sog_new_contract_count.json
deleted file mode 100644
index 3d8bd3945..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_new_contract_count.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_new_contract_count\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"신계약 건수 실적 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"신계약 건수 실적 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_performance_comparison.json b/dat-was-sal/src/main/resources/mock-responses/sog_performance_comparison.json
deleted file mode 100644
index 0fa8fd9bb..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_performance_comparison.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_performance_comparison\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"전년 동기 대비 실적 비교 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"전년 동기 대비 실적 비교 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_premium_performance.json b/dat-was-sal/src/main/resources/mock-responses/sog_premium_performance.json
deleted file mode 100644
index 2b3e876e3..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_premium_performance.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_premium_performance\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"보험료 실적 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"보험료 실적 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_product_performance.json b/dat-was-sal/src/main/resources/mock-responses/sog_product_performance.json
deleted file mode 100644
index 1d1ba6cbf..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_product_performance.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_product_performance\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"상품별 실적 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"상품별 실적 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_sales_ranking.json b/dat-was-sal/src/main/resources/mock-responses/sog_sales_ranking.json
deleted file mode 100644
index c02ed4a18..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_sales_ranking.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_sales_ranking\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"GA 영업 순위 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"GA 영업 순위 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_target_history.json b/dat-was-sal/src/main/resources/mock-responses/sog_target_history.json
deleted file mode 100644
index 6e1aab445..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_target_history.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_target_history\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"영업목표 변경 이력 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"영업목표 변경 이력 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_target_progress.json b/dat-was-sal/src/main/resources/mock-responses/sog_target_progress.json
deleted file mode 100644
index ee5adc78a..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_target_progress.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_target_progress\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"영업목표 달성률 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"영업목표 달성률 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sog_target_summary.json b/dat-was-sal/src/main/resources/mock-responses/sog_target_summary.json
deleted file mode 100644
index 70053ed32..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sog_target_summary.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sog_target_summary\",\"category\":\"SOG\",\"referenceId\":\"SOG-000001\",\"status\":\"정상\",\"summary\":\"GA 개인별 영업목표 요약 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"GA 개인별 영업목표 요약 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_consent_expiry.json b/dat-was-sal/src/main/resources/mock-responses/sot_consent_expiry.json
deleted file mode 100644
index 9683c2002..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_consent_expiry.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_consent_expiry\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"동의 유효기간 만료 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"동의 유효기간 만료 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_consent_withdrawal.json b/dat-was-sal/src/main/resources/mock-responses/sot_consent_withdrawal.json
deleted file mode 100644
index 1b83f6920..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_consent_withdrawal.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_consent_withdrawal\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"동의 철회 이력 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"동의 철회 이력 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_customer_info_consent.json b/dat-was-sal/src/main/resources/mock-responses/sot_customer_info_consent.json
deleted file mode 100644
index d000e4977..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_customer_info_consent.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_customer_info_consent\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"고객정보 수집·이용 동의 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"고객정보 수집·이용 동의 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_customer_info_consent_scope.json b/dat-was-sal/src/main/resources/mock-responses/sot_customer_info_consent_scope.json
deleted file mode 100644
index bce43d9b7..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_customer_info_consent_scope.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_customer_info_consent_scope\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"고객정보 동의 범위 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"고객정보 동의 범위 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_channel.json b/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_channel.json
deleted file mode 100644
index 2120afb03..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_channel.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_marketing_consent_channel\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"채널별 마케팅 동의 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"채널별 마케팅 동의 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_history.json b/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_history.json
deleted file mode 100644
index 5697fff0d..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_history.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_marketing_consent_history\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"마케팅 동의 이력 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"마케팅 동의 이력 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_status.json b/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_status.json
deleted file mode 100644
index e6d4e0fb0..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_marketing_consent_status.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_marketing_consent_status\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"마케팅 수신동의 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"마케팅 수신동의 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_subscription_design_consent.json b/dat-was-sal/src/main/resources/mock-responses/sot_subscription_design_consent.json
deleted file mode 100644
index ae8ee1bbc..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_subscription_design_consent.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_subscription_design_consent\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"가입설계 동의 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"가입설계 동의 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_subscription_design_detail.json b/dat-was-sal/src/main/resources/mock-responses/sot_subscription_design_detail.json
deleted file mode 100644
index 6c2847774..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_subscription_design_detail.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_subscription_design_detail\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"가입설계 동의 상세 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"가입설계 동의 상세 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/sot_tm_call_eligibility.json b/dat-was-sal/src/main/resources/mock-responses/sot_tm_call_eligibility.json
deleted file mode 100644
index 3c7d45a59..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/sot_tm_call_eligibility.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"sot_tm_call_eligibility\",\"category\":\"SOT\",\"referenceId\":\"SOT-000001\",\"status\":\"정상\",\"summary\":\"텔레마케팅 콜 가능여부 종합 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"텔레마케팅 콜 가능여부 종합 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_answer.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_answer.json
deleted file mode 100644
index d861b08a4..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_answer.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_answer\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"문의 답변 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"문의 답변 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_category.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_category.json
deleted file mode 100644
index c1b03bbd8..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_category.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_category\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"문의 유형별 통계 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"문의 유형별 통계 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_detail.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_detail.json
deleted file mode 100644
index 7a8f3b7a2..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_detail.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_detail\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"GA현장문의 상세 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"GA현장문의 상세 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_escalation.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_escalation.json
deleted file mode 100644
index 8b6eaebd5..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_escalation.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_escalation\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"에스컬레이션 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"에스컬레이션 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_faq.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_faq.json
deleted file mode 100644
index cd43237ec..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_faq.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_faq\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"자주묻는질문 FAQ 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"자주묻는질문 FAQ 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_list.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_list.json
deleted file mode 100644
index f7daea8dc..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_list.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_list\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"GA현장문의 목록 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"GA현장문의 목록 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_manager.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_manager.json
deleted file mode 100644
index 5c2811280..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_manager.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_manager\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"담당자 배정 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"담당자 배정 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_satisfaction.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_satisfaction.json
deleted file mode 100644
index 2c03b22e1..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_satisfaction.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_satisfaction\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"문의 만족도 조사 결과 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"문의 만족도 조사 결과 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_sla.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_sla.json
deleted file mode 100644
index 5fe9a343f..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_sla.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_sla\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"처리기한 SLA 현황 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"처리기한 SLA 현황 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_status.json b/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_status.json
deleted file mode 100644
index b89d0d9a2..000000000
--- a/dat-was-sal/src/main/resources/mock-responses/spr_field_inquiry_status.json
+++ /dev/null
@@ -1,4 +0,0 @@
-{
- "resultCode": "SUCCESS",
- "data": "{\"toolName\":\"spr_field_inquiry_status\",\"category\":\"SPR\",\"referenceId\":\"SPR-000001\",\"status\":\"정상\",\"summary\":\"문의 처리상태 조회 결과\",\"asOfDate\":\"2026-08-14\",\"details\":[\"문의 처리상태 조회 모의 상세정보\",\"외부 시스템을 변경하지 않는 조회 결과\"]}"
-}
diff --git a/dat-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-input-schema.json b/dat-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-input-schema.json
deleted file mode 100644
index e6f63087e..000000000
--- a/dat-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-input-schema.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "TODO_FIELD": {
- "type": "string",
- "description": "TODO: 파라미터 설명을 입력하세요."
- }
- },
- "required": []
-}
diff --git a/dat-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-output-schema.json b/dat-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-output-schema.json
deleted file mode 100644
index 9c280db87..000000000
--- a/dat-was-sal/src/main/resources/tool-schemas/cmm/claim-search-resource-output-schema.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "type": "object",
- "additionalProperties": false,
- "properties": {
- "status": {
- "type": "string",
- "description": "처리 결과 상태 (SUCCESS / FAILURE)",
- "enum": ["SUCCESS", "FAILURE"]
- },
- "message": {
- "type": "string",
- "description": "처리 결과 메시지"
- }
- },
- "required": ["status"]
-}
diff --git a/dat-was-sal/src/main/resources/tool-service-manifest.yml b/dat-was-sal/src/main/resources/tool-service-manifest.yml
index d37a7ff13..4002085ab 100644
--- a/dat-was-sal/src/main/resources/tool-service-manifest.yml
+++ b/dat-was-sal/src/main/resources/tool-service-manifest.yml
@@ -1,16 +1,22 @@
+---
mcp:
manifest:
routing-functions:
- - name: route_to_dat-was-sal
- description-serialization: 영업 업무 서버로 요청을 라우팅합니다. 영업 조직과 설계사 업무를 처리합니다. 요청의 주요 엔티티와 업무 영역을 기준으로 영업 서버를 선택합니다.
- server-id: dat-was-sal
- category-key: sal
- product-boundary: insurance
- business-domain: 영업 관리
- business-outcome: 영업 조직과 설계사 업무를 처리합니다.
- primary-entities: [설계사, 영업조직, 실적]
- capabilities: [설계사 조회, 영업조직 조회, 실적 조회]
- select-if: 설계사, 영업조직 또는 영업실적 관련 요청인 경우
- reject-if: 고객, 계약, 상품, 시스템 운영 업무가 주된 요청인 경우
- confusable-servers: [dat-was-cus, dat-was-pro, dat-was-sys]
- decision-policy: 요청의 주요 엔티티와 업무 영역을 기준으로 영업 서버를 선택합니다.
+ - name: "route_to_dat-was-sal"
+ server-id: "dat-was-sal"
+ category-key: "sal"
+ product-boundary: "영업 업무 서버를 위한 제품 범위 정의입니다."
+ business-domain: "영업 조직 및 설계사 관리 도메인입니다."
+ business-outcome: "영업 요청의 효율적인 처리와 설계사 업무 지원을 보장합니다."
+ primary-entities: "영업 조직, 설계사, 고객"
+ capabilities: "요청 라우팅, 업무 할당, 상태 조회"
+ select-if: "요청의 주요 엔티티가 영업 조직 또는 설계사일 경우 선택합니다."
+ reject-if: "요청이 다른 도메인에 속하거나 유효하지 않은 엔티티를 포함할 경우 거부합니다."
+ confusable-servers:
+ - "dat-was-cus"
+ - "dat-was-ehr"
+ - "dat-was-pro"
+ - "dat-was-sys"
+ decision-policy: "가장 가까운 영업 서버를 선택하고, 부하를 고려하여 결정합니다."
+ description_serialization: "이 도구는 영업 요청을 처리하며, 영업 조직과 설계사 업무를 효율적으로 라우팅하고, 부\
+ 하를 고려한 결정 정책을 적용하여 적절한 서버로 분배합니다."
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/ClaimSearchUseCaseTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/ClaimSearchUseCaseTest.java
deleted file mode 100644
index d588a5943..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/ClaimSearchUseCaseTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.usecase;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchResponse;
-import org.junit.jupiter.api.Test;
-
-class ClaimSearchUseCaseTest {
-
- @Test
- void createsToolRequestAndResponseDtos() {
- assertNotNull(new ClaimSearchRequest());
- assertNotNull(new ClaimSearchResponse());
- }
-}
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/MemoListRetrieverUseCaseTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/MemoListRetrieverUseCaseTest.java
deleted file mode 100644
index 68164eeac..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/MemoListRetrieverUseCaseTest.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.usecase;
-
-import static org.junit.jupiter.api.Assertions.assertNotNull;
-
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.MemoListRetrieverResponse;
-import org.junit.jupiter.api.Test;
-
-class MemoListRetrieverUseCaseTest {
-
- @Test
- void createsToolRequestAndResponseDtos() {
- assertNotNull(new MemoListRetrieverRequest());
- assertNotNull(new MemoListRetrieverResponse());
- }
-}
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImplTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImplTest.java
deleted file mode 100644
index cdccd7d6b..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/cmm/usecase/impl/ClaimSearchUseCaseImplTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.cmm.usecase.impl;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertThrows;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import io.shinhanlife.dat.mcc.biz.cmm.converter.ClaimSearchConverter;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchRequest;
-import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchResponse;
-import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.MciNclaClient;
-import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.io.CLCNNB00001_O;
-import io.shinhanlife.glow.BizException;
-import org.junit.jupiter.api.Test;
-
-class ClaimSearchUseCaseImplTest {
-
- @Test
- void returnsErrorResponseWhenMciReportsABusinessCommunicationFailure() {
- MciNclaClient mci = mock(MciNclaClient.class);
- when(mci.callTo(eq("CLCNNB00001"), any(), any(), eq(CLCNNB00001_O.class)))
- .thenThrow(bizException());
- ClaimSearchUseCaseImpl useCase = new ClaimSearchUseCaseImpl(mci, mock(ClaimSearchConverter.class));
-
- ClaimSearchResponse response = useCase.searchClaim(mock(ClaimSearchRequest.class));
-
- assertEquals("ERROR", response.getResultCode());
- }
-
- @Test
- void doesNotHideUnexpectedRuntimeFailures() {
- MciNclaClient mci = mock(MciNclaClient.class);
- when(mci.callTo(eq("CLCNNB00001"), any(), any(), eq(CLCNNB00001_O.class)))
- .thenThrow(new IllegalStateException("unexpected defect"));
- ClaimSearchUseCaseImpl useCase = new ClaimSearchUseCaseImpl(mci, mock(ClaimSearchConverter.class));
-
- assertThrows(IllegalStateException.class,
- () -> useCase.searchClaim(mock(ClaimSearchRequest.class)));
- }
-
- private BizException bizException() {
- return new BizException("CST00477", new String[]{"MCI communication failure"},
- new RuntimeException("connection closed"));
- }
-}
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/lic/usecase/impl/LicUnderwritingUseCaseImplTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/lic/usecase/impl/LicUnderwritingUseCaseImplTest.java
deleted file mode 100644
index b11e28076..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/lic/usecase/impl/LicUnderwritingUseCaseImplTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.lic.usecase.impl;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
-import io.shinhanlife.dat.mcc.biz.lic.dto.LicToolRequest;
-import org.junit.jupiter.api.Test;
-
-class LicUnderwritingUseCaseImplTest {
-
- @Test
- void returnsProductInfoForRequestedProductCode() {
- LicToolRequest request = new LicToolRequest();
- request.setProductCode("LIC-PRD-000123");
- request.setQueryDate("2026-08-14");
-
- var response = new LicUnderwritingUseCaseImpl().getProductInfo(request);
-
- assertEquals("lic_product_info", response.getToolName());
- assertEquals("LIC-PRD-000123", response.getReferenceId());
- assertEquals("정상", response.getStatus());
- assertFalse(response.getDetails().isEmpty());
- }
-}
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sof/usecase/impl/SofFieldActivityUseCaseImplTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sof/usecase/impl/SofFieldActivityUseCaseImplTest.java
deleted file mode 100644
index 8d3b531c1..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sof/usecase/impl/SofFieldActivityUseCaseImplTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sof.usecase.impl;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
-import io.shinhanlife.dat.mcc.biz.sof.dto.SofToolRequest;
-import org.junit.jupiter.api.Test;
-
-class SofFieldActivityUseCaseImplTest {
-
- @Test
- void returnsActivityDailyForRequestedAgentId() {
- SofToolRequest request = new SofToolRequest();
- request.setAgentId("SOF-AGT-000123");
- request.setQueryDate("2026-08-14");
-
- var response = new SofFieldActivityUseCaseImpl().getActivityDaily(request);
-
- assertEquals("sof_activity_daily", response.getToolName());
- assertEquals("SOF-AGT-000123", response.getReferenceId());
- assertEquals("정상", response.getStatus());
- assertFalse(response.getDetails().isEmpty());
- }
-}
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sog/usecase/impl/SogSalesPerformanceUseCaseImplTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sog/usecase/impl/SogSalesPerformanceUseCaseImplTest.java
deleted file mode 100644
index 5026656bf..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sog/usecase/impl/SogSalesPerformanceUseCaseImplTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sog.usecase.impl;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
-import io.shinhanlife.dat.mcc.biz.sog.dto.SogToolRequest;
-import org.junit.jupiter.api.Test;
-
-class SogSalesPerformanceUseCaseImplTest {
-
- @Test
- void returnsTargetSummaryForRequestedAgentId() {
- SogToolRequest request = new SogToolRequest();
- request.setAgentId("SOG-AGT-000123");
- request.setQueryDate("2026-08-14");
-
- var response = new SogSalesPerformanceUseCaseImpl().getTargetSummary(request);
-
- assertEquals("sog_target_summary", response.getToolName());
- assertEquals("SOG-AGT-000123", response.getReferenceId());
- assertEquals("정상", response.getStatus());
- assertFalse(response.getDetails().isEmpty());
- }
-}
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sot/usecase/impl/SotConsentUseCaseImplTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sot/usecase/impl/SotConsentUseCaseImplTest.java
deleted file mode 100644
index c3ad2f259..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/sot/usecase/impl/SotConsentUseCaseImplTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.sot.usecase.impl;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
-import io.shinhanlife.dat.mcc.biz.sot.dto.SotToolRequest;
-import org.junit.jupiter.api.Test;
-
-class SotConsentUseCaseImplTest {
-
- @Test
- void returnsMarketingConsentStatusForRequestedCustomerId() {
- SotToolRequest request = new SotToolRequest();
- request.setCustomerId("SOT-CUS-000123");
- request.setQueryDate("2026-08-14");
-
- var response = new SotConsentUseCaseImpl().getMarketingConsentStatus(request);
-
- assertEquals("sot_marketing_consent_status", response.getToolName());
- assertEquals("SOT-CUS-000123", response.getReferenceId());
- assertEquals("정상", response.getStatus());
- assertFalse(response.getDetails().isEmpty());
- }
-}
diff --git a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/spr/usecase/impl/SprFieldInquiryUseCaseImplTest.java b/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/spr/usecase/impl/SprFieldInquiryUseCaseImplTest.java
deleted file mode 100644
index 9a1a29835..000000000
--- a/dat-was-sal/src/test/java/io/shinhanlife/dat/mcc/biz/spr/usecase/impl/SprFieldInquiryUseCaseImplTest.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package io.shinhanlife.dat.mcc.biz.spr.usecase.impl;
-
-import static org.junit.jupiter.api.Assertions.assertEquals;
-import static org.junit.jupiter.api.Assertions.assertFalse;
-
-import io.shinhanlife.dat.mcc.biz.spr.dto.SprToolRequest;
-import org.junit.jupiter.api.Test;
-
-class SprFieldInquiryUseCaseImplTest {
-
- @Test
- void returnsFieldInquiryListForRequestedInquiryId() {
- SprToolRequest request = new SprToolRequest();
- request.setInquiryId("SPR-INQ-000123");
- request.setQueryDate("2026-08-14");
-
- var response = new SprFieldInquiryUseCaseImpl().getFieldInquiryList(request);
-
- assertEquals("spr_field_inquiry_list", response.getToolName());
- assertEquals("SPR-INQ-000123", response.getReferenceId());
- assertEquals("정상", response.getStatus());
- assertFalse(response.getDetails().isEmpty());
- }
-}