refactor: apply naming convention for MCI interface IO objects (CLCNNB00001_I, CUST_INQ_001_I) and separate layers
Some checks failed
Deploy to OCIWP / deploy (push) Failing after 24s

This commit is contained in:
jade
2026-07-24 10:24:00 +09:00
parent d562e35ad8
commit 74ea89bf1c
7 changed files with 183 additions and 9 deletions

View File

@@ -0,0 +1,91 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
/**
* @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io
* @className CLCNNB00001_I
* @description 보장분석결과조회 MCI 요청 전문
* @author 0986406
* @create 2026.09.01
*/
@Data
public class CLCNNB00001_I {
@JsonProperty("unfcPrbuIrcoAddu")
private UnfcPrbuIrcoAdduDto unfcPrbuIrcoAddu;
@JsonProperty("dalScCd")
private String dalScCd;
@JsonProperty("cstSucoRltyCd")
private String cstSucoRltyCd;
@JsonProperty("csNo")
private String csNo;
@JsonProperty("rdreNo")
private String rdreNo;
@JsonProperty("unfcPvsCalReqYn")
private String unfcPvsCalReqYn;
@JsonProperty("kcisPymmTnnrRequest")
private String kcisPymmTnnrRequest;
@JsonProperty("lmovYn")
private String lmovYn;
@JsonProperty("genPsthApvTrgtYn")
private String genPsthApvTrgtYn;
@JsonProperty("ircoLmovEcpbTrgtYn")
private String ircoLmovEcpbTrgtYn;
@JsonProperty("digCalYn")
private String digCalYn;
@JsonProperty("prbuIciDigCalYn")
private String prbuIciDigCalYn;
@JsonProperty("sucoIspaBasDto")
private SucoIspaBasDto sucoIspaBasDto;
@Data
public static class UnfcPrbuIrcoAdduDto {
}
@Data
public static class SucoIspaBasDto {
@JsonProperty("ccnDalTypCd")
private String ccnDalTypCd;
@JsonProperty("nwcnptCursCd")
private String nwcnptCursCd;
@JsonProperty("induAsctScCd")
private String induAsctScCd;
@JsonProperty("cepeOgnzNo")
private String cepeOgnzNo;
@JsonProperty("cepePrafNo")
private String cepePrafNo;
@JsonProperty("clmoOgnzNo")
private String clmoOgnzNo;
@JsonProperty("clmoPrafNo")
private String clmoPrafNo;
@JsonProperty("sucoYmd")
private String sucoYmd;
@JsonProperty("ispDt")
private String ispDt;
@JsonProperty("contYmd")
private String contYmd;
}
}

View File

@@ -0,0 +1,16 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io;
import lombok.Data;
/**
* @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io
* @className CLCNNB00001_O
* @description 보장분석결과조회 MCI 응답 전문
* @author 0986406
* @create 2026.09.01
*/
@Data
public class CLCNNB00001_O {
// 응답 전문 필드 정의 (필요에 따라 추가)
private Object resultData;
}

View File

@@ -47,8 +47,41 @@ public class MciCfpaClient {
* @return 출력 객체
*/
public Object callCfpa0001(Onnba3011Request inDto) throws Exception {
// 인터페이스 IO 객체 생성 및 매핑
CLCNNB00001_I mciReq = new CLCNNB00001_I();
mciReq.setDalScCd(inDto.getDalScCd());
mciReq.setCstSucoRltyCd(inDto.getCstSucoRltyCd());
mciReq.setCsNo(inDto.getCsNo());
mciReq.setRdreNo(inDto.getRdreNo());
mciReq.setUnfcPvsCalReqYn(inDto.getUnfcPvsCalReqYn());
mciReq.setKcisPymmTnnrRequest(inDto.getKcisPymmTnnrRequest());
mciReq.setLmovYn(inDto.getLmovYn());
mciReq.setGenPsthApvTrgtYn(inDto.getGenPsthApvTrgtYn());
mciReq.setIrcoLmovEcpbTrgtYn(inDto.getIrcoLmovEcpbTrgtYn());
mciReq.setDigCalYn(inDto.getDigCalYn());
mciReq.setPrbuIciDigCalYn(inDto.getPrbuIciDigCalYn());
if (inDto.getUnfcPrbuIrcoAddu() != null) {
mciReq.setUnfcPrbuIrcoAddu(new CLCNNB00001_I.UnfcPrbuIrcoAdduDto());
}
if (inDto.getSucoIspaBasDto() != null) {
CLCNNB00001_I.SucoIspaBasDto sucoIspa = new CLCNNB00001_I.SucoIspaBasDto();
sucoIspa.setCcnDalTypCd(inDto.getSucoIspaBasDto().getCcnDalTypCd());
sucoIspa.setNwcnptCursCd(inDto.getSucoIspaBasDto().getNwcnptCursCd());
sucoIspa.setInduAsctScCd(inDto.getSucoIspaBasDto().getInduAsctScCd());
sucoIspa.setCepeOgnzNo(inDto.getSucoIspaBasDto().getCepeOgnzNo());
sucoIspa.setCepePrafNo(inDto.getSucoIspaBasDto().getCepePrafNo());
sucoIspa.setClmoOgnzNo(inDto.getSucoIspaBasDto().getClmoOgnzNo());
sucoIspa.setClmoPrafNo(inDto.getSucoIspaBasDto().getClmoPrafNo());
sucoIspa.setSucoYmd(inDto.getSucoIspaBasDto().getSucoYmd());
sucoIspa.setIspDt(inDto.getSucoIspaBasDto().getIspDt());
sucoIspa.setContYmd(inDto.getSucoIspaBasDto().getContYmd());
mciReq.setSucoIspaBasDto(sucoIspa);
}
// 인터페이스 호출
Transfer<Object> resTransfer = mci.callTo(INTERFACE_CODE, inDto, Object.class);
Transfer<CLCNNB00001_O> resTransfer = mci.callTo(INTERFACE_CODE, mciReq, CLCNNB00001_O.class);
// 응답 검증
validateResponse(resTransfer);
@@ -59,7 +92,7 @@ public class MciCfpaClient {
return resTransfer.getBody();
}
private void validateResponse(Transfer<Object> resTransfer) {
private void validateResponse(Transfer<?> resTransfer) {
log.info("응답 검증 로직 수행");
}

View File

@@ -0,0 +1,16 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io;
import lombok.Data;
/**
* @package io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io
* @className CUST_INQ_001_I
* @description 고객 정보 조회 샘플 MCI 요청 전문
* @author 0986406
* @create 2026.09.01
*/
@Data
public class CUST_INQ_001_I {
private String customerId;
private String inquiryType;
}

View File

@@ -0,0 +1,15 @@
package io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io;
import lombok.Data;
/**
* @package io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io
* @className CUST_INQ_001_O
* @description 고객 정보 조회 샘플 MCI 응답 전문
* @author 0986406
* @create 2026.09.01
*/
@Data
public class CUST_INQ_001_O {
private Object resultData;
}

View File

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

View File

@@ -1,5 +1,6 @@
package io.shinhanlife.dap.mcc.service.impl;
import io.shinhanlife.dap.mcc.infra.itrf.mci.sample.io.CUST_INQ_001_I;
import io.shinhanlife.dap.common.adapter.sender.ShinhanMciSender;
import io.shinhanlife.dap.common.integration.mci.dto.MciRequestWrapper;
import io.shinhanlife.dap.common.integration.mci.dto.ShinhanCommonHeaderDto;
@@ -39,7 +40,7 @@ public class SampleMciToolServiceImpl implements SampleMciToolService {
// AI가 인식할 파라미터 DTO
@Data
public static class SampleMciReqDto {
public static class SampleMciRequest {
private String customerId;
private String inquiryType;
}
@@ -53,13 +54,12 @@ public class SampleMciToolServiceImpl implements SampleMciToolService {
prompt = "고객 정보를 조회해줘.",
mappingId = "CUST_INQ_001"
)
@Override
public Object inquiryCustomerInfo(SampleMciReqDto req) {
public Object inquiryCustomerInfo(SampleMciRequest req) {
log.info("[MCI Tool] 고객 정보 조회 요청 수신. 고객ID: {}", req.getCustomerId());
try {
// 1. MCI 전문 통신을 위한 Wrapper 객체 생성
MciRequestWrapper<SampleMciReqDto> wrapper = new MciRequestWrapper<>();
MciRequestWrapper<CUST_INQ_001_I> wrapper = new MciRequestWrapper<>();
// 2. 공통 헤더 세팅 (인터페이스 ID, 서비스 ID 등 업무에 맞게 설정)
ShinhanCommonHeaderDto header = new ShinhanCommonHeaderDto();
@@ -67,8 +67,11 @@ public class SampleMciToolServiceImpl implements SampleMciToolService {
header.setRcvSvcId("INQ9040");
wrapper.setTgrmCmnnhddValu(header);
// 3. 비즈니스 데이터(Body) 세팅
wrapper.setBody(req);
// 3. 비즈니스 데이터(Body) 세팅 (인터페이스 IO 매핑)
CUST_INQ_001_I mciReq = new CUST_INQ_001_I();
mciReq.setCustomerId(req.getCustomerId());
mciReq.setInquiryType(req.getInquiryType());
wrapper.setBody(mciReq);
// 4. ShinhanMciSender를 통해 실제 연동 수행 및 응답 수신
log.info("[MCI Tool] ShinhanMciSender 연동 시작... (URL: {})", mciTargetUrl);