forked from kimhyungsik/ax_hub_mcp_tool
refactor: massive rename dap -> dat and dapmt -> datmt preserving encoding
All checks were successful
Deploy Tools / deploy (push) Successful in 1m21s
All checks were successful
Deploy Tools / deploy (push) Successful in 1m21s
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
package io.shinhanlife.dat.mcc.biz.crm.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springaicommunity.mcp.annotation.McpToolParam;
|
||||
|
||||
@Data
|
||||
public class CrmToolRequest {
|
||||
@McpToolParam(description = "업무 대상 식별자", required = false)
|
||||
private String subjectId;
|
||||
|
||||
@McpToolParam(description = "고객 식별자", required = false)
|
||||
private String customerId;
|
||||
|
||||
@McpToolParam(description = "검색어 또는 처리 내용", required = false)
|
||||
private String content;
|
||||
|
||||
@McpToolParam(description = "상태, 유형, 등급 또는 처리 값", required = false)
|
||||
private String value;
|
||||
|
||||
@McpToolParam(description = "담당자 식별자", required = false)
|
||||
private String assigneeId;
|
||||
|
||||
@McpToolParam(description = "조회 시작일(YYYY-MM-DD)", required = false)
|
||||
private String startDate;
|
||||
|
||||
@McpToolParam(description = "조회 종료일 또는 처리 예정일(YYYY-MM-DD)", required = false)
|
||||
private String endDate;
|
||||
|
||||
@McpToolParam(description = "페이지 번호", required = false)
|
||||
private Integer page;
|
||||
|
||||
@McpToolParam(description = "페이지 크기", required = false)
|
||||
private Integer size;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package io.shinhanlife.dat.mcc.biz.crm.dto;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CrmToolResponse {
|
||||
private String toolName;
|
||||
private String category;
|
||||
private String referenceId;
|
||||
private String status;
|
||||
private String summary;
|
||||
private String processedAt;
|
||||
private List<String> details;
|
||||
}
|
||||
@@ -0,0 +1,298 @@
|
||||
package io.shinhanlife.dat.mcc.biz.crm.usecase;
|
||||
|
||||
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
|
||||
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolRequest;
|
||||
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolResponse;
|
||||
import org.springaicommunity.mcp.annotation.McpTool;
|
||||
|
||||
public interface CrmToolUseCase {
|
||||
@McpTool(name = "crm_customer_search", title = "고객 통합 조회", description = "고객 통합 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CUSTOMER_SEARCH",
|
||||
functionDescription = "고객 통합 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 통합 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 통합 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 통합 조회 해줘", "고객 통합 조회 결과를 알려줘", "고객 통합 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse searchCustomers(CrmToolRequest request);
|
||||
@McpTool(name = "crm_customer_detail", title = "고객 상세 정보 조회", description = "고객 상세 정보 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CUSTOMER_DETAIL",
|
||||
functionDescription = "고객 상세 정보 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 상세 정보 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 상세 정보 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 상세 정보 조회 해줘", "고객 상세 정보 조회 결과를 알려줘", "고객 상세 정보 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse getCustomerDetail(CrmToolRequest request);
|
||||
@McpTool(name = "crm_customer_create", title = "고객 정보 등록", description = "고객 정보 등록 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CUSTOMER_CREATE",
|
||||
functionDescription = "고객 정보 등록 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 정보 등록 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 정보 등록 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 정보 등록 해줘", "고객 정보 등록 결과를 알려줘", "고객 정보 등록 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = false,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse createCustomer(CrmToolRequest request);
|
||||
@McpTool(name = "crm_customer_update", title = "고객 정보 수정", description = "고객 정보 수정 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CUSTOMER_UPDATE",
|
||||
functionDescription = "고객 정보 수정 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 정보 수정 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 정보 수정 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 정보 수정 해줘", "고객 정보 수정 결과를 알려줘", "고객 정보 수정 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse updateCustomer(CrmToolRequest request);
|
||||
@McpTool(name = "crm_customer_duplicate_check", title = "고객 중복 여부 확인", description = "고객 중복 여부 확인 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CUSTOMER_DUPLICATE_CHECK",
|
||||
functionDescription = "고객 중복 여부 확인 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 중복 여부 확인 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 중복 여부 확인 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 중복 여부 확인 해줘", "고객 중복 여부 확인 결과를 알려줘", "고객 중복 여부 확인 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse checkDuplicateCustomer(CrmToolRequest request);
|
||||
@McpTool(name = "crm_consultation_history", title = "고객 상담 이력 조회", description = "고객 상담 이력 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CONSULTATION_HISTORY",
|
||||
functionDescription = "고객 상담 이력 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 상담 이력 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 상담 이력 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 상담 이력 조회 해줘", "고객 상담 이력 조회 결과를 알려줘", "고객 상담 이력 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse getConsultationHistory(CrmToolRequest request);
|
||||
@McpTool(name = "crm_consultation_register", title = "고객 상담 이력 등록", description = "고객 상담 이력 등록 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CONSULTATION_REGISTER",
|
||||
functionDescription = "고객 상담 이력 등록 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 상담 이력 등록 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 상담 이력 등록 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 상담 이력 등록 해줘", "고객 상담 이력 등록 결과를 알려줘", "고객 상담 이력 등록 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = false,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse registerConsultation(CrmToolRequest request);
|
||||
@McpTool(name = "crm_contact_history", title = "고객 접촉 이력 조회", description = "고객 접촉 이력 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CONTACT_HISTORY",
|
||||
functionDescription = "고객 접촉 이력 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 접촉 이력 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 접촉 이력 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 접촉 이력 조회 해줘", "고객 접촉 이력 조회 결과를 알려줘", "고객 접촉 이력 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse getContactHistory(CrmToolRequest request);
|
||||
@McpTool(name = "crm_contact_register", title = "고객 접촉 이력 등록", description = "고객 접촉 이력 등록 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CONTACT_REGISTER",
|
||||
functionDescription = "고객 접촉 이력 등록 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 접촉 이력 등록 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 접촉 이력 등록 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 접촉 이력 등록 해줘", "고객 접촉 이력 등록 결과를 알려줘", "고객 접촉 이력 등록 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = false,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse registerContact(CrmToolRequest request);
|
||||
@McpTool(name = "crm_grade_detail", title = "고객 등급 조회", description = "고객 등급 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_GRADE_DETAIL",
|
||||
functionDescription = "고객 등급 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 등급 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 등급 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 등급 조회 해줘", "고객 등급 조회 결과를 알려줘", "고객 등급 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse getCustomerGrade(CrmToolRequest request);
|
||||
@McpTool(name = "crm_grade_change", title = "고객 등급 변경", description = "고객 등급 변경 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_GRADE_CHANGE",
|
||||
functionDescription = "고객 등급 변경 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 등급 변경 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 등급 변경 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 등급 변경 해줘", "고객 등급 변경 결과를 알려줘", "고객 등급 변경 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse changeCustomerGrade(CrmToolRequest request);
|
||||
@McpTool(name = "crm_segment_detail", title = "고객 세그먼트 조회", description = "고객 세그먼트 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_SEGMENT_DETAIL",
|
||||
functionDescription = "고객 세그먼트 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 세그먼트 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 세그먼트 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 세그먼트 조회 해줘", "고객 세그먼트 조회 결과를 알려줘", "고객 세그먼트 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse getCustomerSegment(CrmToolRequest request);
|
||||
@McpTool(name = "crm_tag_manage", title = "고객 태그 관리", description = "고객 태그 관리 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_TAG_MANAGE",
|
||||
functionDescription = "고객 태그 관리 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 태그 관리 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 태그 관리 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 태그 관리 해줘", "고객 태그 관리 결과를 알려줘", "고객 태그 관리 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse manageCustomerTags(CrmToolRequest request);
|
||||
@McpTool(name = "crm_consent_detail", title = "고객 동의 정보 조회", description = "고객 동의 정보 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CONSENT_DETAIL",
|
||||
functionDescription = "고객 동의 정보 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 동의 정보 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 동의 정보 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 동의 정보 조회 해줘", "고객 동의 정보 조회 결과를 알려줘", "고객 동의 정보 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse getCustomerConsent(CrmToolRequest request);
|
||||
@McpTool(name = "crm_consent_change", title = "고객 동의 정보 변경", description = "고객 동의 정보 변경 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_CONSENT_CHANGE",
|
||||
functionDescription = "고객 동의 정보 변경 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 동의 정보 변경 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 동의 정보 변경 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 동의 정보 변경 해줘", "고객 동의 정보 변경 결과를 알려줘", "고객 동의 정보 변경 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse changeCustomerConsent(CrmToolRequest request);
|
||||
@McpTool(name = "crm_owner_assign", title = "고객 담당자 배정", description = "고객 담당자 배정 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_OWNER_ASSIGN",
|
||||
functionDescription = "고객 담당자 배정 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 담당자 배정 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 담당자 배정 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 담당자 배정 해줘", "고객 담당자 배정 결과를 알려줘", "고객 담당자 배정 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse assignCustomerOwner(CrmToolRequest request);
|
||||
@McpTool(name = "crm_activity_status", title = "고객 활동 현황 조회", description = "고객 활동 현황 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "crm",
|
||||
mappingId = "DIRECT_CRM_ACTIVITY_STATUS",
|
||||
functionDescription = "고객 활동 현황 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객 활동 현황 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객 활동 현황 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객 활동 현황 조회 해줘", "고객 활동 현황 조회 결과를 알려줘", "고객 활동 현황 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"crm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
CrmToolResponse getCustomerActivityStatus(CrmToolRequest request);
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package io.shinhanlife.dat.mcc.biz.crm.usecase.impl;
|
||||
|
||||
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolRequest;
|
||||
import io.shinhanlife.dat.mcc.biz.crm.dto.CrmToolResponse;
|
||||
import io.shinhanlife.dat.mcc.biz.crm.usecase.CrmToolUseCase;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class CrmToolUseCaseImpl implements CrmToolUseCase {
|
||||
@Override
|
||||
public CrmToolResponse searchCustomers(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_customer_search", "고객 통합 조회");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse getCustomerDetail(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_customer_detail", "고객 상세 정보 조회");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse createCustomer(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_customer_create", "고객 정보 등록");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse updateCustomer(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_customer_update", "고객 정보 수정");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse checkDuplicateCustomer(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_customer_duplicate_check", "고객 중복 여부 확인");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse getConsultationHistory(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_consultation_history", "고객 상담 이력 조회");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse registerConsultation(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_consultation_register", "고객 상담 이력 등록");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse getContactHistory(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_contact_history", "고객 접촉 이력 조회");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse registerContact(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_contact_register", "고객 접촉 이력 등록");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse getCustomerGrade(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_grade_detail", "고객 등급 조회");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse changeCustomerGrade(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_grade_change", "고객 등급 변경");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse getCustomerSegment(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_segment_detail", "고객 세그먼트 조회");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse manageCustomerTags(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_tag_manage", "고객 태그 관리");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse getCustomerConsent(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_consent_detail", "고객 동의 정보 조회");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse changeCustomerConsent(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_consent_change", "고객 동의 정보 변경");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse assignCustomerOwner(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_owner_assign", "고객 담당자 배정");
|
||||
}
|
||||
@Override
|
||||
public CrmToolResponse getCustomerActivityStatus(CrmToolRequest request) {
|
||||
return mockResponse(request, "crm_activity_status", "고객 활동 현황 조회");
|
||||
}
|
||||
private CrmToolResponse mockResponse(CrmToolRequest request, String toolName, String title) {
|
||||
CrmToolResponse response = new CrmToolResponse();
|
||||
response.setToolName(toolName);
|
||||
response.setCategory("CRM");
|
||||
response.setReferenceId(request != null && hasText(request.getSubjectId()) ? request.getSubjectId() : "CRM-000001");
|
||||
response.setStatus("정상");
|
||||
response.setSummary(title + " 처리 결과");
|
||||
response.setProcessedAt(LocalDateTime.now().toString());
|
||||
response.setDetails(List.of(title + " 모의 상세 정보", "외부 시스템을 변경하지 않는 샘플 응답"));
|
||||
return response;
|
||||
}
|
||||
|
||||
private boolean hasText(String value) {
|
||||
return value != null && !value.isBlank();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package io.shinhanlife.dat.mcc.biz.voc.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springaicommunity.mcp.annotation.McpToolParam;
|
||||
|
||||
@Data
|
||||
public class VocToolRequest {
|
||||
@McpToolParam(description = "업무 대상 식별자", required = false)
|
||||
private String subjectId;
|
||||
|
||||
@McpToolParam(description = "고객 식별자", required = false)
|
||||
private String customerId;
|
||||
|
||||
@McpToolParam(description = "검색어 또는 처리 내용", required = false)
|
||||
private String content;
|
||||
|
||||
@McpToolParam(description = "상태, 유형, 등급 또는 처리 값", required = false)
|
||||
private String value;
|
||||
|
||||
@McpToolParam(description = "담당자 식별자", required = false)
|
||||
private String assigneeId;
|
||||
|
||||
@McpToolParam(description = "조회 시작일(YYYY-MM-DD)", required = false)
|
||||
private String startDate;
|
||||
|
||||
@McpToolParam(description = "조회 종료일 또는 처리 예정일(YYYY-MM-DD)", required = false)
|
||||
private String endDate;
|
||||
|
||||
@McpToolParam(description = "페이지 번호", required = false)
|
||||
private Integer page;
|
||||
|
||||
@McpToolParam(description = "페이지 크기", required = false)
|
||||
private Integer size;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package io.shinhanlife.dat.mcc.biz.voc.dto;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class VocToolResponse {
|
||||
private String toolName;
|
||||
private String category;
|
||||
private String referenceId;
|
||||
private String status;
|
||||
private String summary;
|
||||
private String processedAt;
|
||||
private List<String> details;
|
||||
}
|
||||
@@ -0,0 +1,298 @@
|
||||
package io.shinhanlife.dat.mcc.biz.voc.usecase;
|
||||
|
||||
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
|
||||
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolRequest;
|
||||
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolResponse;
|
||||
import org.springaicommunity.mcp.annotation.McpTool;
|
||||
|
||||
public interface VocToolUseCase {
|
||||
@McpTool(name = "voc_register", title = "VOC 접수 등록", description = "VOC 접수 등록 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_REGISTER",
|
||||
functionDescription = "VOC 접수 등록 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 접수 등록 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 접수 등록 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 접수 등록 해줘", "VOC 접수 등록 결과를 알려줘", "VOC 접수 등록 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = false,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse registerVoc(VocToolRequest request);
|
||||
@McpTool(name = "voc_detail", title = "VOC 상세 조회", description = "VOC 상세 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_DETAIL",
|
||||
functionDescription = "VOC 상세 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 상세 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 상세 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 상세 조회 해줘", "VOC 상세 조회 결과를 알려줘", "VOC 상세 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse getVocDetail(VocToolRequest request);
|
||||
@McpTool(name = "voc_search", title = "VOC 목록 검색", description = "VOC 목록 검색 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_SEARCH",
|
||||
functionDescription = "VOC 목록 검색 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 목록 검색 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 목록 검색 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 목록 검색 해줘", "VOC 목록 검색 결과를 알려줘", "VOC 목록 검색 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse searchVocs(VocToolRequest request);
|
||||
@McpTool(name = "voc_update", title = "VOC 내용 수정", description = "VOC 내용 수정 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_UPDATE",
|
||||
functionDescription = "VOC 내용 수정 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 내용 수정 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 내용 수정 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 내용 수정 해줘", "VOC 내용 수정 결과를 알려줘", "VOC 내용 수정 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse updateVoc(VocToolRequest request);
|
||||
@McpTool(name = "voc_assign", title = "VOC 담당자 배정", description = "VOC 담당자 배정 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_ASSIGN",
|
||||
functionDescription = "VOC 담당자 배정 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 담당자 배정 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 담당자 배정 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 담당자 배정 해줘", "VOC 담당자 배정 결과를 알려줘", "VOC 담당자 배정 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse assignVocOwner(VocToolRequest request);
|
||||
@McpTool(name = "voc_change_status", title = "VOC 처리 상태 변경", description = "VOC 처리 상태 변경 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_CHANGE_STATUS",
|
||||
functionDescription = "VOC 처리 상태 변경 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 처리 상태 변경 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 처리 상태 변경 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 처리 상태 변경 해줘", "VOC 처리 상태 변경 결과를 알려줘", "VOC 처리 상태 변경 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse changeVocStatus(VocToolRequest request);
|
||||
@McpTool(name = "voc_register_result", title = "VOC 처리 결과 등록", description = "VOC 처리 결과 등록 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_REGISTER_RESULT",
|
||||
functionDescription = "VOC 처리 결과 등록 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 처리 결과 등록 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 처리 결과 등록 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 처리 결과 등록 해줘", "VOC 처리 결과 등록 결과를 알려줘", "VOC 처리 결과 등록 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse registerVocResult(VocToolRequest request);
|
||||
@McpTool(name = "voc_send_reply", title = "VOC 답변 발송", description = "VOC 답변 발송 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_SEND_REPLY",
|
||||
functionDescription = "VOC 답변 발송 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 답변 발송 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 답변 발송 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 답변 발송 해줘", "VOC 답변 발송 결과를 알려줘", "VOC 답변 발송 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = false,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse sendVocReply(VocToolRequest request);
|
||||
@McpTool(name = "voc_transfer", title = "VOC 이관 처리", description = "VOC 이관 처리 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_TRANSFER",
|
||||
functionDescription = "VOC 이관 처리 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 이관 처리 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 이관 처리 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 이관 처리 해줘", "VOC 이관 처리 결과를 알려줘", "VOC 이관 처리 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse transferVoc(VocToolRequest request);
|
||||
@McpTool(name = "voc_set_priority", title = "VOC 우선순위 설정", description = "VOC 우선순위 설정 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_SET_PRIORITY",
|
||||
functionDescription = "VOC 우선순위 설정 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 우선순위 설정 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 우선순위 설정 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 우선순위 설정 해줘", "VOC 우선순위 설정 결과를 알려줘", "VOC 우선순위 설정 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse setVocPriority(VocToolRequest request);
|
||||
@McpTool(name = "voc_classify_type", title = "VOC 유형 분류", description = "VOC 유형 분류 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_CLASSIFY_TYPE",
|
||||
functionDescription = "VOC 유형 분류 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 유형 분류 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 유형 분류 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 유형 분류 해줘", "VOC 유형 분류 결과를 알려줘", "VOC 유형 분류 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse classifyVocType(VocToolRequest request);
|
||||
@McpTool(name = "voc_attachments", title = "VOC 첨부파일 조회", description = "VOC 첨부파일 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_ATTACHMENTS",
|
||||
functionDescription = "VOC 첨부파일 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 첨부파일 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 첨부파일 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 첨부파일 조회 해줘", "VOC 첨부파일 조회 결과를 알려줘", "VOC 첨부파일 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse getVocAttachments(VocToolRequest request);
|
||||
@McpTool(name = "voc_customer_history", title = "고객별 VOC 이력 조회", description = "고객별 VOC 이력 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_CUSTOMER_HISTORY",
|
||||
functionDescription = "고객별 VOC 이력 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 고객별 VOC 이력 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "고객별 VOC 이력 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"고객별 VOC 이력 조회 해줘", "고객별 VOC 이력 조회 결과를 알려줘", "고객별 VOC 이력 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse getCustomerVocHistory(VocToolRequest request);
|
||||
@McpTool(name = "voc_detect_duplicate", title = "중복 VOC 탐지", description = "중복 VOC 탐지 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_DETECT_DUPLICATE",
|
||||
functionDescription = "중복 VOC 탐지 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 중복 VOC 탐지 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "중복 VOC 탐지 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"중복 VOC 탐지 해줘", "중복 VOC 탐지 결과를 알려줘", "중복 VOC 탐지 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse detectDuplicateVoc(VocToolRequest request);
|
||||
@McpTool(name = "voc_urgent_list", title = "긴급 VOC 목록 조회", description = "긴급 VOC 목록 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_URGENT_LIST",
|
||||
functionDescription = "긴급 VOC 목록 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 긴급 VOC 목록 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "긴급 VOC 목록 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"긴급 VOC 목록 조회 해줘", "긴급 VOC 목록 조회 결과를 알려줘", "긴급 VOC 목록 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse getUrgentVocs(VocToolRequest request);
|
||||
@McpTool(name = "voc_extend_due_date", title = "VOC 처리 기한 연장", description = "VOC 처리 기한 연장 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_EXTEND_DUE_DATE",
|
||||
functionDescription = "VOC 처리 기한 연장 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 처리 기한 연장 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 처리 기한 연장 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 처리 기한 연장 해줘", "VOC 처리 기한 연장 결과를 알려줘", "VOC 처리 기한 연장 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse extendVocDueDate(VocToolRequest request);
|
||||
@McpTool(name = "voc_statistics", title = "VOC 통계 조회", description = "VOC 통계 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "voc",
|
||||
mappingId = "DIRECT_VOC_STATISTICS",
|
||||
functionDescription = "VOC 통계 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 VOC 통계 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "VOC 통계 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"VOC 통계 조회 해줘", "VOC 통계 조회 결과를 알려줘", "VOC 통계 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"voc", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
VocToolResponse getVocStatistics(VocToolRequest request);
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package io.shinhanlife.dat.mcc.biz.voc.usecase.impl;
|
||||
|
||||
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolRequest;
|
||||
import io.shinhanlife.dat.mcc.biz.voc.dto.VocToolResponse;
|
||||
import io.shinhanlife.dat.mcc.biz.voc.usecase.VocToolUseCase;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class VocToolUseCaseImpl implements VocToolUseCase {
|
||||
@Override
|
||||
public VocToolResponse registerVoc(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_register", "VOC 접수 등록");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse getVocDetail(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_detail", "VOC 상세 조회");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse searchVocs(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_search", "VOC 목록 검색");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse updateVoc(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_update", "VOC 내용 수정");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse assignVocOwner(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_assign", "VOC 담당자 배정");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse changeVocStatus(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_change_status", "VOC 처리 상태 변경");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse registerVocResult(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_register_result", "VOC 처리 결과 등록");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse sendVocReply(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_send_reply", "VOC 답변 발송");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse transferVoc(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_transfer", "VOC 이관 처리");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse setVocPriority(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_set_priority", "VOC 우선순위 설정");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse classifyVocType(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_classify_type", "VOC 유형 분류");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse getVocAttachments(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_attachments", "VOC 첨부파일 조회");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse getCustomerVocHistory(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_customer_history", "고객별 VOC 이력 조회");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse detectDuplicateVoc(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_detect_duplicate", "중복 VOC 탐지");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse getUrgentVocs(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_urgent_list", "긴급 VOC 목록 조회");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse extendVocDueDate(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_extend_due_date", "VOC 처리 기한 연장");
|
||||
}
|
||||
@Override
|
||||
public VocToolResponse getVocStatistics(VocToolRequest request) {
|
||||
return mockResponse(request, "voc_statistics", "VOC 통계 조회");
|
||||
}
|
||||
private VocToolResponse mockResponse(VocToolRequest request, String toolName, String title) {
|
||||
VocToolResponse response = new VocToolResponse();
|
||||
response.setToolName(toolName);
|
||||
response.setCategory("VOC");
|
||||
response.setReferenceId(request != null && hasText(request.getSubjectId()) ? request.getSubjectId() : "VOC-000001");
|
||||
response.setStatus("정상");
|
||||
response.setSummary(title + " 처리 결과");
|
||||
response.setProcessedAt(LocalDateTime.now().toString());
|
||||
response.setDetails(List.of(title + " 모의 상세 정보", "외부 시스템을 변경하지 않는 샘플 응답"));
|
||||
return response;
|
||||
}
|
||||
|
||||
private boolean hasText(String value) {
|
||||
return value != null && !value.isBlank();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package io.shinhanlife.dat.mcc.biz.wcm.dto;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springaicommunity.mcp.annotation.McpToolParam;
|
||||
|
||||
@Data
|
||||
public class WcmToolRequest {
|
||||
@McpToolParam(description = "업무 대상 식별자", required = false)
|
||||
private String subjectId;
|
||||
|
||||
@McpToolParam(description = "고객 식별자", required = false)
|
||||
private String customerId;
|
||||
|
||||
@McpToolParam(description = "검색어 또는 처리 내용", required = false)
|
||||
private String content;
|
||||
|
||||
@McpToolParam(description = "상태, 유형, 등급 또는 처리 값", required = false)
|
||||
private String value;
|
||||
|
||||
@McpToolParam(description = "담당자 식별자", required = false)
|
||||
private String assigneeId;
|
||||
|
||||
@McpToolParam(description = "조회 시작일(YYYY-MM-DD)", required = false)
|
||||
private String startDate;
|
||||
|
||||
@McpToolParam(description = "조회 종료일 또는 처리 예정일(YYYY-MM-DD)", required = false)
|
||||
private String endDate;
|
||||
|
||||
@McpToolParam(description = "페이지 번호", required = false)
|
||||
private Integer page;
|
||||
|
||||
@McpToolParam(description = "페이지 크기", required = false)
|
||||
private Integer size;
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
package io.shinhanlife.dat.mcc.biz.wcm.dto;
|
||||
|
||||
import java.util.List;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class WcmToolResponse {
|
||||
private String toolName;
|
||||
private String category;
|
||||
private String referenceId;
|
||||
private String status;
|
||||
private String summary;
|
||||
private String processedAt;
|
||||
private List<String> details;
|
||||
}
|
||||
@@ -0,0 +1,298 @@
|
||||
package io.shinhanlife.dat.mcc.biz.wcm.usecase;
|
||||
|
||||
import io.shinhanlife.dat.lib.annotation.GrowToolHint;
|
||||
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolRequest;
|
||||
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolResponse;
|
||||
import org.springaicommunity.mcp.annotation.McpTool;
|
||||
|
||||
public interface WcmToolUseCase {
|
||||
@McpTool(name = "wcm_content_list", title = "웹 콘텐츠 목록 조회", description = "웹 콘텐츠 목록 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_LIST",
|
||||
functionDescription = "웹 콘텐츠 목록 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 목록 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 목록 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 목록 조회 해줘", "웹 콘텐츠 목록 조회 결과를 알려줘", "웹 콘텐츠 목록 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse getContentList(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_detail", title = "웹 콘텐츠 상세 조회", description = "웹 콘텐츠 상세 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_DETAIL",
|
||||
functionDescription = "웹 콘텐츠 상세 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 상세 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 상세 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 상세 조회 해줘", "웹 콘텐츠 상세 조회 결과를 알려줘", "웹 콘텐츠 상세 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse getContentDetail(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_create", title = "웹 콘텐츠 등록", description = "웹 콘텐츠 등록 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_CREATE",
|
||||
functionDescription = "웹 콘텐츠 등록 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 등록 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 등록 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 등록 해줘", "웹 콘텐츠 등록 결과를 알려줘", "웹 콘텐츠 등록 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = false,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse createContent(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_update", title = "웹 콘텐츠 수정", description = "웹 콘텐츠 수정 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_UPDATE",
|
||||
functionDescription = "웹 콘텐츠 수정 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 수정 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 수정 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 수정 해줘", "웹 콘텐츠 수정 결과를 알려줘", "웹 콘텐츠 수정 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse updateContent(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_delete", title = "웹 콘텐츠 삭제", description = "웹 콘텐츠 삭제 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_DELETE",
|
||||
functionDescription = "웹 콘텐츠 삭제 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 삭제 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 삭제 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 삭제 해줘", "웹 콘텐츠 삭제 결과를 알려줘", "웹 콘텐츠 삭제 기능을 실행해줘"},
|
||||
destructive = true,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse deleteContent(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_copy", title = "웹 콘텐츠 복사", description = "웹 콘텐츠 복사 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_COPY",
|
||||
functionDescription = "웹 콘텐츠 복사 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 복사 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 복사 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 복사 해줘", "웹 콘텐츠 복사 결과를 알려줘", "웹 콘텐츠 복사 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = false,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse copyContent(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_preview", title = "웹 콘텐츠 미리보기", description = "웹 콘텐츠 미리보기 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_PREVIEW",
|
||||
functionDescription = "웹 콘텐츠 미리보기 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 미리보기 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 미리보기 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 미리보기 해줘", "웹 콘텐츠 미리보기 결과를 알려줘", "웹 콘텐츠 미리보기 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse previewContent(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_publish", title = "웹 콘텐츠 게시", description = "웹 콘텐츠 게시 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_PUBLISH",
|
||||
functionDescription = "웹 콘텐츠 게시 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 게시 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 게시 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 게시 해줘", "웹 콘텐츠 게시 결과를 알려줘", "웹 콘텐츠 게시 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse publishContent(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_unpublish", title = "웹 콘텐츠 게시 중지", description = "웹 콘텐츠 게시 중지 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_UNPUBLISH",
|
||||
functionDescription = "웹 콘텐츠 게시 중지 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 게시 중지 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 게시 중지 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 게시 중지 해줘", "웹 콘텐츠 게시 중지 결과를 알려줘", "웹 콘텐츠 게시 중지 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse unpublishContent(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_schedule_publish", title = "웹 콘텐츠 예약 게시", description = "웹 콘텐츠 예약 게시 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_SCHEDULE_PUBLISH",
|
||||
functionDescription = "웹 콘텐츠 예약 게시 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 예약 게시 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 예약 게시 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 예약 게시 해줘", "웹 콘텐츠 예약 게시 결과를 알려줘", "웹 콘텐츠 예약 게시 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse scheduleContentPublish(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_request_approval", title = "웹 콘텐츠 승인 요청", description = "웹 콘텐츠 승인 요청 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_REQUEST_APPROVAL",
|
||||
functionDescription = "웹 콘텐츠 승인 요청 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 승인 요청 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 승인 요청 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 승인 요청 해줘", "웹 콘텐츠 승인 요청 결과를 알려줘", "웹 콘텐츠 승인 요청 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse requestContentApproval(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_review_approval", title = "웹 콘텐츠 승인·반려", description = "웹 콘텐츠 승인·반려 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_REVIEW_APPROVAL",
|
||||
functionDescription = "웹 콘텐츠 승인·반려 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 승인·반려 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 승인·반려 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 승인·반려 해줘", "웹 콘텐츠 승인·반려 결과를 알려줘", "웹 콘텐츠 승인·반려 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse reviewContentApproval(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_version_history", title = "웹 콘텐츠 버전 이력 조회", description = "웹 콘텐츠 버전 이력 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_VERSION_HISTORY",
|
||||
functionDescription = "웹 콘텐츠 버전 이력 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 버전 이력 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 버전 이력 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 버전 이력 조회 해줘", "웹 콘텐츠 버전 이력 조회 결과를 알려줘", "웹 콘텐츠 버전 이력 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse getContentVersionHistory(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_content_restore_version", title = "웹 콘텐츠 이전 버전 복원", description = "웹 콘텐츠 이전 버전 복원 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_CONTENT_RESTORE_VERSION",
|
||||
functionDescription = "웹 콘텐츠 이전 버전 복원 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 웹 콘텐츠 이전 버전 복원 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "웹 콘텐츠 이전 버전 복원 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"웹 콘텐츠 이전 버전 복원 해줘", "웹 콘텐츠 이전 버전 복원 결과를 알려줘", "웹 콘텐츠 이전 버전 복원 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse restoreContentVersion(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_metadata_detail", title = "콘텐츠 메타데이터 조회", description = "콘텐츠 메타데이터 조회 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_METADATA_DETAIL",
|
||||
functionDescription = "콘텐츠 메타데이터 조회 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 콘텐츠 메타데이터 조회 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "정보 변경이나 승인 처리가 필요한 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 조회 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "콘텐츠 메타데이터 조회 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"콘텐츠 메타데이터 조회 해줘", "콘텐츠 메타데이터 조회 결과를 알려줘", "콘텐츠 메타데이터 조회 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "조회", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse getContentMetadata(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_metadata_upsert", title = "콘텐츠 메타데이터 등록·수정", description = "콘텐츠 메타데이터 등록·수정 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_METADATA_UPSERT",
|
||||
functionDescription = "콘텐츠 메타데이터 등록·수정 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 콘텐츠 메타데이터 등록·수정 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "콘텐츠 메타데이터 등록·수정 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"콘텐츠 메타데이터 등록·수정 해줘", "콘텐츠 메타데이터 등록·수정 결과를 알려줘", "콘텐츠 메타데이터 등록·수정 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse upsertContentMetadata(WcmToolRequest request);
|
||||
@McpTool(name = "wcm_taxonomy_manage", title = "콘텐츠 카테고리·태그 관리", description = "콘텐츠 카테고리·태그 관리 기능을 안전한 모의 데이터로 제공합니다.")
|
||||
@GrowToolHint(
|
||||
requiresApproval = false,
|
||||
categoryKey = "wcm",
|
||||
mappingId = "DIRECT_WCM_TAXONOMY_MANAGE",
|
||||
functionDescription = "콘텐츠 카테고리·태그 관리 기능을 수행합니다.",
|
||||
whenToUse = "고객채널 업무에서 콘텐츠 카테고리·태그 관리 기능이 필요할 때 사용합니다.",
|
||||
whenNotToUse = "필수 식별자와 변경 내용이 확인되지 않은 경우에는 사용하지 않습니다.",
|
||||
ioLimits = "입력 범위에 대한 모의 처리 결과만 반환하며 외부 시스템을 직접 변경하지 않습니다.",
|
||||
displayDescription = "콘텐츠 카테고리·태그 관리 기능을 안전한 모의 데이터로 제공합니다.",
|
||||
exampleQueries = {"콘텐츠 카테고리·태그 관리 해줘", "콘텐츠 카테고리·태그 관리 결과를 알려줘", "콘텐츠 카테고리·태그 관리 기능을 실행해줘"},
|
||||
destructive = false,
|
||||
idempotent = true,
|
||||
tags = {"wcm", "고객채널", "처리", "mock"},
|
||||
ownerOrg = "MCP_TOOL"
|
||||
)
|
||||
WcmToolResponse manageContentTaxonomy(WcmToolRequest request);
|
||||
}
|
||||
@@ -0,0 +1,95 @@
|
||||
package io.shinhanlife.dat.mcc.biz.wcm.usecase.impl;
|
||||
|
||||
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolRequest;
|
||||
import io.shinhanlife.dat.mcc.biz.wcm.dto.WcmToolResponse;
|
||||
import io.shinhanlife.dat.mcc.biz.wcm.usecase.WcmToolUseCase;
|
||||
import java.time.LocalDateTime;
|
||||
import java.util.List;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@Service
|
||||
public class WcmToolUseCaseImpl implements WcmToolUseCase {
|
||||
@Override
|
||||
public WcmToolResponse getContentList(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_list", "웹 콘텐츠 목록 조회");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse getContentDetail(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_detail", "웹 콘텐츠 상세 조회");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse createContent(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_create", "웹 콘텐츠 등록");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse updateContent(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_update", "웹 콘텐츠 수정");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse deleteContent(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_delete", "웹 콘텐츠 삭제");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse copyContent(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_copy", "웹 콘텐츠 복사");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse previewContent(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_preview", "웹 콘텐츠 미리보기");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse publishContent(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_publish", "웹 콘텐츠 게시");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse unpublishContent(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_unpublish", "웹 콘텐츠 게시 중지");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse scheduleContentPublish(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_schedule_publish", "웹 콘텐츠 예약 게시");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse requestContentApproval(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_request_approval", "웹 콘텐츠 승인 요청");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse reviewContentApproval(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_review_approval", "웹 콘텐츠 승인·반려");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse getContentVersionHistory(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_version_history", "웹 콘텐츠 버전 이력 조회");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse restoreContentVersion(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_content_restore_version", "웹 콘텐츠 이전 버전 복원");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse getContentMetadata(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_metadata_detail", "콘텐츠 메타데이터 조회");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse upsertContentMetadata(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_metadata_upsert", "콘텐츠 메타데이터 등록·수정");
|
||||
}
|
||||
@Override
|
||||
public WcmToolResponse manageContentTaxonomy(WcmToolRequest request) {
|
||||
return mockResponse(request, "wcm_taxonomy_manage", "콘텐츠 카테고리·태그 관리");
|
||||
}
|
||||
private WcmToolResponse mockResponse(WcmToolRequest request, String toolName, String title) {
|
||||
WcmToolResponse response = new WcmToolResponse();
|
||||
response.setToolName(toolName);
|
||||
response.setCategory("WCMS");
|
||||
response.setReferenceId(request != null && hasText(request.getSubjectId()) ? request.getSubjectId() : "WCMS-000001");
|
||||
response.setStatus("정상");
|
||||
response.setSummary(title + " 처리 결과");
|
||||
response.setProcessedAt(LocalDateTime.now().toString());
|
||||
response.setDetails(List.of(title + " 모의 상세 정보", "외부 시스템을 변경하지 않는 샘플 응답"));
|
||||
return response;
|
||||
}
|
||||
|
||||
private boolean hasText(String value) {
|
||||
return value != null && !value.isBlank();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package io.shinhanlife.dat.mcc.cus;
|
||||
|
||||
|
||||
/**
|
||||
* @package io.shinhanlife.dat.mcc.cus
|
||||
* @className DatWasCusApplication
|
||||
* @description AX HUB 시스템 처리 클래스
|
||||
* @author 0986406
|
||||
* @create 2026.09.01
|
||||
* <pre>
|
||||
* ---------- 개정이력 ----------
|
||||
* 수정일 수정자 수정내용
|
||||
* ---------- -------- ---------------------------
|
||||
* 2026.09.01 0986406 최초생성
|
||||
*
|
||||
* </pre>
|
||||
*/
|
||||
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 DatWasCusApplication {
|
||||
public static void main(String[] args) {
|
||||
SpringApplication.run(DatWasCusApplication.class, args);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user