refactor: restructure MCP tools without Controller layer, using UseCase pattern per Glow standards
Some checks failed
Deploy to OCIWP / deploy (push) Has been cancelled

This commit is contained in:
jade
2026-07-25 01:13:25 +09:00
parent 994f5b4348
commit 4dcc5a2978
71 changed files with 199 additions and 199 deletions

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
/** /**

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
/** /**

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.glow.GlowMciFieldInfo; import io.shinhanlife.glow.GlowMciFieldInfo;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import io.shinhanlife.glow.GlowMciFieldInfo; import io.shinhanlife.glow.GlowMciFieldInfo;
import lombok.Data; import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import lombok.Data; import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import io.shinhanlife.glow.GlowTrgmField; import io.shinhanlife.glow.GlowTrgmField;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.AccessLevel; import lombok.AccessLevel;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.common.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io; package io.shinhanlife.dap.mcc.biz.common.io;
import lombok.Data; import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io; package io.shinhanlife.dap.mcc.biz.common.io;
import lombok.Data; import lombok.Data;

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface BalanceUseCase {
Object execute(BalanceRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface BillingProcessUseCase {
Object getStatus(BillingStatusRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface BondIssueUseCase {
Object check(BondCheckRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface CommonUtilityUseCase {
Object registerVacation(VacationRegisterRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface ContractInquiryUseCase {
Object getStatus(ContractStatusRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface CustomerInfoUseCase {
Object getGrade(CustomerGradeRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface SampleMciToolUseCase {
Object inquiryCustomerInfo(io.shinhanlife.dap.mcc.biz.common.usecase.impl.SampleMciToolUseCaseImpl.SampleMciRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface SampleStringToolUseCase {
Object execute(SampleStringRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.common.usecase;
import io.shinhanlife.dap.mcc.biz.common.dto.*;
public interface TemplateUtilityUseCase {
java.util.Map<String, Object> getTemplateFileUrl(TemplateDownloadRequest req);
}

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
/** /**
@@ -17,9 +17,9 @@ package io.shinhanlife.dap.mcc.service.impl;
*/ */
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.BalanceService; import io.shinhanlife.dap.mcc.biz.common.usecase.BalanceUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.BalanceRequest; import io.shinhanlife.dap.mcc.biz.common.dto.BalanceRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -28,7 +28,7 @@ import java.util.Map;
@Slf4j @Slf4j
@Service @Service
@McpTool(routingType = "MCI", categoryKey = "common") @McpTool(routingType = "MCI", categoryKey = "common")
public class BalanceServiceImpl extends AbstractMcpToolService implements BalanceService { public class BalanceUseCaseImpl extends AbstractMcpToolService implements BalanceUseCase {
@McpFunction(register = false, displayName = "balance 툴", name = "balance", @McpFunction(register = false, displayName = "balance 툴", name = "balance",
description = "고객의 계좌 잔액을 조회합니다.", description = "고객의 계좌 잔액을 조회합니다.",

View File

@@ -1,13 +1,13 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.BillingProcessService; import io.shinhanlife.dap.mcc.biz.common.usecase.BillingProcessUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.BillingProcessRequest; import io.shinhanlife.dap.mcc.biz.common.dto.BillingProcessRequest;
import io.shinhanlife.dap.mcc.dto.BillingStatusRequest; import io.shinhanlife.dap.mcc.biz.common.dto.BillingStatusRequest;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@@ -31,7 +31,7 @@ import java.util.Map;
* </pre> * </pre>
*/ */
@lombok.extern.slf4j.Slf4j @lombok.extern.slf4j.Slf4j
public class BillingProcessServiceImpl extends AbstractMcpToolService implements BillingProcessService { public class BillingProcessUseCaseImpl extends AbstractMcpToolService implements BillingProcessUseCase {
@McpFunction(register = false, displayName = "status 툴", name = "status", description = "청구심사 상태 조회", prompt = "현재 접수된 청구건 상태를 알려줘.", mappingId = "BILL_001") @McpFunction(register = false, displayName = "status 툴", name = "status", description = "청구심사 상태 조회", prompt = "현재 접수된 청구건 상태를 알려줘.", mappingId = "BILL_001")
@Override @Override

View File

@@ -1,11 +1,11 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.BondIssueService; import io.shinhanlife.dap.mcc.biz.common.usecase.BondIssueUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.BondCheckRequest; import io.shinhanlife.dap.mcc.biz.common.dto.BondCheckRequest;
import io.shinhanlife.dap.mcc.dto.BondIssueRequest; import io.shinhanlife.dap.mcc.biz.common.dto.BondIssueRequest;
@McpTool( @McpTool(
routingType = "EAI", routingType = "EAI",
@@ -25,7 +25,7 @@ import io.shinhanlife.dap.mcc.dto.BondIssueRequest;
* *
* </pre> * </pre>
*/ */
public class BondIssueServiceImpl extends AbstractMcpToolService implements BondIssueService { public class BondIssueUseCaseImpl extends AbstractMcpToolService implements BondIssueUseCase {
@McpFunction(displayName = "check 툴", name = "check", register = false, description = "발행 가능 여부 조회 테스트", prompt = "디지털 증권 발행 한도가 충분한지 확인해줘.", mappingId = "BOND_001") @McpFunction(displayName = "check 툴", name = "check", register = false, description = "발행 가능 여부 조회 테스트", prompt = "디지털 증권 발행 한도가 충분한지 확인해줘.", mappingId = "BOND_001")
@Override @Override

View File

@@ -1,11 +1,11 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.CommonUtilityService; import io.shinhanlife.dap.mcc.biz.common.usecase.CommonUtilityUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.LeaveCountRequest; import io.shinhanlife.dap.mcc.biz.common.dto.LeaveCountRequest;
import io.shinhanlife.dap.mcc.dto.VacationRegisterRequest; import io.shinhanlife.dap.mcc.biz.common.dto.VacationRegisterRequest;
@McpTool( @McpTool(
routingType = "HTTP", routingType = "HTTP",
@@ -25,7 +25,7 @@ import io.shinhanlife.dap.mcc.dto.VacationRegisterRequest;
* *
* </pre> * </pre>
*/ */
public class CommonUtilityServiceImpl extends AbstractMcpToolService implements CommonUtilityService { public class CommonUtilityUseCaseImpl extends AbstractMcpToolService implements CommonUtilityUseCase {
@McpFunction(register = false, displayName = "register_vacation 툴", name = "register_vacation", description = "휴가 등록", prompt = "내일 하루 연차 휴가를 등록해줘.", mappingId = "HR_VAC_01") @McpFunction(register = false, displayName = "register_vacation 툴", name = "register_vacation", description = "휴가 등록", prompt = "내일 하루 연차 휴가를 등록해줘.", mappingId = "HR_VAC_01")
@Override @Override

View File

@@ -1,11 +1,11 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.ContractInquiryService; import io.shinhanlife.dap.mcc.biz.common.usecase.ContractInquiryUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.ContractDetailRequest; import io.shinhanlife.dap.mcc.biz.common.dto.ContractDetailRequest;
import io.shinhanlife.dap.mcc.dto.ContractStatusRequest; import io.shinhanlife.dap.mcc.biz.common.dto.ContractStatusRequest;
@McpTool( @McpTool(
routingType = "HTTP", routingType = "HTTP",
@@ -25,7 +25,7 @@ import io.shinhanlife.dap.mcc.dto.ContractStatusRequest;
* *
* </pre> * </pre>
*/ */
public class ContractInquiryServiceImpl extends AbstractMcpToolService implements ContractInquiryService { public class ContractInquiryUseCaseImpl extends AbstractMcpToolService implements ContractInquiryUseCase {
@McpFunction(register = false, displayName = "contract_status 툴", name = "contract_status", description = "계약상태 조회", prompt = "김신한 고객의 현재 계약 상태를 조회해줘.", mappingId = "CNTR_001") @McpFunction(register = false, displayName = "contract_status 툴", name = "contract_status", description = "계약상태 조회", prompt = "김신한 고객의 현재 계약 상태를 조회해줘.", mappingId = "CNTR_001")
@Override @Override

View File

@@ -1,11 +1,11 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.CustomerInfoService; import io.shinhanlife.dap.mcc.biz.common.usecase.CustomerInfoUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.CustomerDetailRequest; import io.shinhanlife.dap.mcc.biz.common.dto.CustomerDetailRequest;
import io.shinhanlife.dap.mcc.dto.CustomerGradeRequest; import io.shinhanlife.dap.mcc.biz.common.dto.CustomerGradeRequest;
@McpTool( @McpTool(
routingType = "TCP", routingType = "TCP",
@@ -25,7 +25,7 @@ import io.shinhanlife.dap.mcc.dto.CustomerGradeRequest;
* *
* </pre> * </pre>
*/ */
public class CustomerInfoServiceImpl extends AbstractMcpToolService implements CustomerInfoService { public class CustomerInfoUseCaseImpl extends AbstractMcpToolService implements CustomerInfoUseCase {
@McpFunction(register = false, displayName = "grade 툴", name = "grade", description = "고객등급 조회", prompt = "이 고객의 VIP 등급을 조회해줘.", mappingId = "CRM_001") @McpFunction(register = false, displayName = "grade 툴", name = "grade", description = "고객등급 조회", prompt = "이 고객의 VIP 등급을 조회해줘.", mappingId = "CRM_001")
@Override @Override

View File

@@ -1,12 +1,12 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io.CUST_INQ_001_I; import io.shinhanlife.dap.mcc.biz.common.io.CUST_INQ_001_I;
import io.shinhanlife.dap.lib.adapter.sender.ShinhanMciSender; import io.shinhanlife.dap.lib.adapter.sender.ShinhanMciSender;
import io.shinhanlife.dap.lib.integration.mci.dto.MciRequestWrapper; import io.shinhanlife.dap.lib.integration.mci.dto.MciRequestWrapper;
import io.shinhanlife.dap.lib.integration.mci.dto.ShinhanCommonHeaderDto; import io.shinhanlife.dap.lib.integration.mci.dto.ShinhanCommonHeaderDto;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.SampleMciToolService; import io.shinhanlife.dap.mcc.biz.common.usecase.SampleMciToolUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import lombok.Data; import lombok.Data;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
@@ -30,7 +30,7 @@ import org.springframework.beans.factory.annotation.Value;
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@McpTool(routingType = "MCI", categoryKey = "other") // MCP Tool 등록 어노테이션 @McpTool(routingType = "MCI", categoryKey = "other") // MCP Tool 등록 어노테이션
public class SampleMciToolServiceImpl implements SampleMciToolService { public class SampleMciToolUseCaseImpl implements SampleMciToolUseCase {
// EIMS/MCI 발송을 담당하는 Sender 주입 // EIMS/MCI 발송을 담당하는 Sender 주입
private final ShinhanMciSender shinhanMciSender; private final ShinhanMciSender shinhanMciSender;

View File

@@ -1,11 +1,11 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.SampleStringToolService; import io.shinhanlife.dap.mcc.biz.common.usecase.SampleStringToolUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.MciSampleStringResponse; import io.shinhanlife.dap.mcc.biz.common.dto.MciSampleStringResponse;
import io.shinhanlife.dap.mcc.dto.SampleStringRequest; import io.shinhanlife.dap.mcc.biz.common.dto.SampleStringRequest;
import io.shinhanlife.glow.util.GlowMciParser; import io.shinhanlife.glow.util.GlowMciParser;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -31,7 +31,7 @@ import java.util.Map;
routingType = "MCI", routingType = "MCI",
categoryKey = "common" categoryKey = "common"
) )
public class SampleStringToolServiceImpl extends AbstractMcpToolService implements SampleStringToolService { public class SampleStringToolUseCaseImpl extends AbstractMcpToolService implements SampleStringToolUseCase {
@McpFunction(register = false, displayName = "get_sample_string 툴", name = "get_sample_string", @McpFunction(register = false, displayName = "get_sample_string 툴", name = "get_sample_string",
description = "MCI String 버전과 GlowTrgmField 파싱을 테스트하는 샘플 툴입니다.", description = "MCI String 버전과 GlowTrgmField 파싱을 테스트하는 샘플 툴입니다.",

View File

@@ -1,10 +1,10 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.common.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.TemplateUtilityService; import io.shinhanlife.dap.mcc.biz.common.usecase.TemplateUtilityUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.TemplateDownloadRequest; import io.shinhanlife.dap.mcc.biz.common.dto.TemplateDownloadRequest;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -32,7 +32,7 @@ import java.util.Map;
* *
* </pre> * </pre>
*/ */
public class TemplateUtilityServiceImpl extends AbstractMcpToolService implements TemplateUtilityService { public class TemplateUtilityUseCaseImpl extends AbstractMcpToolService implements TemplateUtilityUseCase {
@Override @Override
@McpFunction(register = false, displayName = "get_template_file_url 툴", name = "get_template_file_url", @McpFunction(register = false, displayName = "get_template_file_url 툴", name = "get_template_file_url",

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.other.dto;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyDescription;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io; package io.shinhanlife.dap.mcc.biz.other.io;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data; import lombok.Data;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io; package io.shinhanlife.dap.mcc.biz.other.io;
import lombok.Data; import lombok.Data;

View File

@@ -1,9 +1,9 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a; package io.shinhanlife.dap.mcc.biz.other.io;
import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; import io.shinhanlife.dap.mcc.biz.other.io.CLCNNB00001_I;
import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_O; import io.shinhanlife.dap.mcc.biz.other.io.CLCNNB00001_O;
import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent; import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent;
import io.shinhanlife.dap.mcc.dto.Onnba3011Request; import io.shinhanlife.dap.mcc.biz.other.dto.Onnba3011Request;
import io.shinhanlife.glow.communication.dto.Transfer; import io.shinhanlife.glow.communication.dto.Transfer;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.other.usecase;
import io.shinhanlife.dap.mcc.biz.other.dto.*;
public interface OnnbaMciToolUseCase {
Object callOnnba3011(Onnba3011Request req);
}

View File

@@ -1,11 +1,11 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.other.usecase.impl;
import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.MciCfpaClient; import io.shinhanlife.dap.mcc.biz.other.io.MciCfpaClient;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.OnnbaMciToolService; import io.shinhanlife.dap.mcc.biz.other.usecase.OnnbaMciToolUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.Onnba3011Request; import io.shinhanlife.dap.mcc.biz.other.dto.Onnba3011Request;
import io.shinhanlife.glow.communication.dto.Transfer; import io.shinhanlife.glow.communication.dto.Transfer;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -29,7 +29,7 @@ import org.springframework.stereotype.Service;
@Service @Service
@RequiredArgsConstructor @RequiredArgsConstructor
@McpTool(routingType = "MCI", categoryKey = "other") @McpTool(routingType = "MCI", categoryKey = "other")
public class OnnbaMciToolServiceImpl implements OnnbaMciToolService { public class OnnbaMciToolUseCaseImpl implements OnnbaMciToolUseCase {
private static final String INTERFACE_CODE_3011 = "CLCNNB00001"; private static final String INTERFACE_CODE_3011 = "CLCNNB00001";

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.sample.dto;
import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription; import com.fasterxml.jackson.annotation.JsonPropertyDescription;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.sample.dto;
/** /**
* @package io.shinhanlife.dap.mcc.dto * @package io.shinhanlife.dap.mcc.dto

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.sample.usecase;
import io.shinhanlife.dap.mcc.biz.sample.dto.*;
public interface DailyQuoteToolUseCase {
io.shinhanlife.dap.mcc.biz.sample.usecase.impl.DailyQuoteToolUseCaseImpl.DailyQuoteResponse execute(io.shinhanlife.dap.mcc.biz.sample.usecase.impl.DailyQuoteToolUseCaseImpl.DailyQuoteRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.sample.usecase;
import io.shinhanlife.dap.mcc.biz.sample.dto.*;
public interface ExchangeRateToolUseCase {
io.shinhanlife.dap.mcc.biz.sample.usecase.impl.ExchangeRateToolUseCaseImpl.ExchangeRateResponse execute(io.shinhanlife.dap.mcc.biz.sample.usecase.impl.ExchangeRateToolUseCaseImpl.ExchangeRateRequest req);
}

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.sample.usecase;
import io.shinhanlife.dap.mcc.biz.sample.dto.*;
public interface WeatherToolUseCase {
WeatherResponse execute(WeatherRequest req);
}

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.sample.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.DailyQuoteToolService; import io.shinhanlife.dap.mcc.biz.sample.usecase.DailyQuoteToolUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -30,7 +30,7 @@ import java.util.Random;
routingType = "DIRECT", routingType = "DIRECT",
categoryKey = "sample" categoryKey = "sample"
) )
public class DailyQuoteToolServiceImpl extends AbstractMcpToolService implements DailyQuoteToolService { public class DailyQuoteToolUseCaseImpl extends AbstractMcpToolService implements DailyQuoteToolUseCase {
public record DailyQuoteRequest(String category) {} public record DailyQuoteRequest(String category) {}
public record DailyQuoteResponse(String quote, String author) {} public record DailyQuoteResponse(String quote, String author) {}

View File

@@ -1,8 +1,8 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.sample.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.ExchangeRateToolService; import io.shinhanlife.dap.mcc.biz.sample.usecase.ExchangeRateToolUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@@ -28,14 +28,14 @@ import org.springframework.web.client.RestClient;
routingType = "DIRECT", routingType = "DIRECT",
categoryKey = "sample" categoryKey = "sample"
) )
public class ExchangeRateToolServiceImpl extends AbstractMcpToolService implements ExchangeRateToolService { public class ExchangeRateToolUseCaseImpl extends AbstractMcpToolService implements ExchangeRateToolUseCase {
public record ExchangeRateRequest(String currencyCode) {} public record ExchangeRateRequest(String currencyCode) {}
public record ExchangeRateResponse(String baseCurrency, String targetCurrency, double rate) {} public record ExchangeRateResponse(String baseCurrency, String targetCurrency, double rate) {}
private final RestClient restClient; private final RestClient restClient;
public ExchangeRateToolServiceImpl() { public ExchangeRateToolUseCaseImpl() {
this.restClient = RestClient.create(); this.restClient = RestClient.create();
} }

View File

@@ -1,13 +1,13 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.sample.usecase.impl;
import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.WeatherToolService; import io.shinhanlife.dap.mcc.biz.sample.usecase.WeatherToolUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.dto.WeatherRequest; import io.shinhanlife.dap.mcc.biz.sample.dto.WeatherRequest;
import io.shinhanlife.dap.mcc.dto.WeatherResponse; import io.shinhanlife.dap.mcc.biz.sample.dto.WeatherResponse;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient;
@@ -35,11 +35,11 @@ import java.time.format.DateTimeFormatter;
routingType = "DIRECT", routingType = "DIRECT",
categoryKey = "sample" categoryKey = "sample"
) )
public class WeatherToolServiceImpl extends AbstractMcpToolService implements WeatherToolService { public class WeatherToolUseCaseImpl extends AbstractMcpToolService implements WeatherToolUseCase {
private final RestClient restClient; private final RestClient restClient;
public WeatherToolServiceImpl() { public WeatherToolUseCaseImpl() {
this.restClient = RestClient.create(); this.restClient = RestClient.create();
} }

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface BalanceService {
Object execute(BalanceRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface BillingProcessService {
Object getStatus(BillingStatusRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface BondIssueService {
Object check(BondCheckRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface CommonUtilityService {
Object registerVacation(VacationRegisterRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface ContractInquiryService {
Object getStatus(ContractStatusRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface CustomerInfoService {
Object getGrade(CustomerGradeRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface DailyQuoteToolService {
io.shinhanlife.dap.mcc.service.impl.DailyQuoteToolServiceImpl.DailyQuoteResponse execute(io.shinhanlife.dap.mcc.service.impl.DailyQuoteToolServiceImpl.DailyQuoteRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface ExchangeRateToolService {
io.shinhanlife.dap.mcc.service.impl.ExchangeRateToolServiceImpl.ExchangeRateResponse execute(io.shinhanlife.dap.mcc.service.impl.ExchangeRateToolServiceImpl.ExchangeRateRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface OnnbaMciToolService {
Object callOnnba3011(Onnba3011Request req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface SampleMciToolService {
Object inquiryCustomerInfo(io.shinhanlife.dap.mcc.service.impl.SampleMciToolServiceImpl.SampleMciRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface SampleStringToolService {
Object execute(SampleStringRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface TemplateUtilityService {
java.util.Map<String, Object> getTemplateFileUrl(TemplateDownloadRequest req);
}

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface WeatherToolService {
WeatherResponse execute(WeatherRequest req);
}

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.converter; package io.shinhanlife.dap.mcc.biz.sms.converter;
/** /**
@@ -15,8 +15,8 @@ package io.shinhanlife.dap.mcc.converter;
* *
* </pre> * </pre>
*/ */
import io.shinhanlife.dap.mcc.dto.SmsSendRequest; import io.shinhanlife.dap.mcc.biz.sms.dto.SmsSendRequest;
import io.shinhanlife.dap.mcc.legacy.SmsLegacyRequest; import io.shinhanlife.dap.mcc.biz.sms.legacy.SmsLegacyRequest;
import org.mapstruct.Mapper; import org.mapstruct.Mapper;
import org.mapstruct.Mapping; import org.mapstruct.Mapping;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.dto; package io.shinhanlife.dap.mcc.biz.sms.dto;
import lombok.Builder; import lombok.Builder;
import lombok.NoArgsConstructor; import lombok.NoArgsConstructor;

View File

@@ -1,4 +1,4 @@
package io.shinhanlife.dap.mcc.legacy; package io.shinhanlife.dap.mcc.biz.sms.legacy;
/** /**

View File

@@ -0,0 +1,7 @@
package io.shinhanlife.dap.mcc.biz.sms.usecase;
import io.shinhanlife.dap.mcc.biz.sms.dto.*;
public interface SmsToolUseCase {
Object sendSms(SmsSendRequest req);
}

View File

@@ -1,12 +1,12 @@
package io.shinhanlife.dap.mcc.service.impl; package io.shinhanlife.dap.mcc.biz.sms.usecase.impl;
import io.shinhanlife.dap.lib.annotation.McpFunction; import io.shinhanlife.dap.lib.annotation.McpFunction;
import io.shinhanlife.dap.lib.annotation.McpTool; import io.shinhanlife.dap.lib.annotation.McpTool;
import io.shinhanlife.dap.mcc.service.SmsToolService; import io.shinhanlife.dap.mcc.biz.sms.usecase.SmsToolUseCase;
import io.shinhanlife.dap.mcc.service.AbstractMcpToolService; import io.shinhanlife.dap.mcc.service.AbstractMcpToolService;
import io.shinhanlife.dap.mcc.converter.SmsLegacyConverter; import io.shinhanlife.dap.mcc.biz.sms.converter.SmsLegacyConverter;
import io.shinhanlife.dap.mcc.dto.SmsSendRequest; import io.shinhanlife.dap.mcc.biz.sms.dto.SmsSendRequest;
import io.shinhanlife.dap.mcc.legacy.SmsLegacyRequest; import io.shinhanlife.dap.mcc.biz.sms.legacy.SmsLegacyRequest;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -29,7 +29,7 @@ import java.util.Map;
@Slf4j @Slf4j
@RequiredArgsConstructor @RequiredArgsConstructor
@McpTool(routingType = "EAI", categoryKey = "notification") @McpTool(routingType = "EAI", categoryKey = "notification")
public class SmsToolServiceImpl extends AbstractMcpToolService implements SmsToolService { public class SmsToolUseCaseImpl extends AbstractMcpToolService implements SmsToolUseCase {
private final SmsLegacyConverter converter; private final SmsLegacyConverter converter;

View File

@@ -1,7 +0,0 @@
package io.shinhanlife.dap.mcc.service;
import io.shinhanlife.dap.mcc.dto.*;
public interface SmsToolService {
Object sendSms(SmsSendRequest req);
}

View File

@@ -20,8 +20,8 @@ import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.ConfigurationPropertiesScan; import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
@SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib.adapter", "io.shinhanlife.dap.lib.mcp", "io.shinhanlife.dap.lib.config", "io.shinhanlife.dap.lib.integration"}) @SpringBootApplication(scanBasePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.common.adapter", "io.shinhanlife.dap.common.mcp", "io.shinhanlife.dap.common.config", "io.shinhanlife.dap.common.integration"})
@ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.lib.adapter", "io.shinhanlife.dap.lib.mcp", "io.shinhanlife.dap.lib.config", "io.shinhanlife.dap.lib.integration"}) @ConfigurationPropertiesScan(basePackages = {"io.shinhanlife.dap.mcc", "io.shinhanlife.dap.common.adapter", "io.shinhanlife.dap.common.mcp", "io.shinhanlife.dap.common.config", "io.shinhanlife.dap.common.integration"})
@EnableCaching @EnableCaching
public class DapToolSmsApplication { public class DapToolSmsApplication {
public static void main(String[] args) { public static void main(String[] args) {