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()); - } -}