feat: update MCP contracts and integrations
All checks were successful
Deploy Tools / deploy (push) Successful in 1m34s

This commit is contained in:
jade
2026-08-25 16:37:08 +09:00
parent 53bc1487c8
commit d3cc1f7f33
47 changed files with 1377 additions and 252 deletions

View File

@@ -4,6 +4,7 @@ import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchRequest;
import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchResponse;
import io.shinhanlife.dat.mcc.biz.cmm.usecase.ClaimSearchUseCase;
import io.shinhanlife.glow.communication.dto.Transfer;
import io.shinhanlife.glow.BizException;
import org.springframework.stereotype.Service;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -57,7 +58,7 @@ public class ClaimSearchUseCaseImpl implements ClaimSearchUseCase {
? "MCI call completed."
: "MCI call completed without a response body.");
return response;
} catch (Exception e) {
} catch (BizException e) {
log.error("[MCI Tool] 연동 중 오류 발생: {}", e.getMessage(), e);
ClaimSearchResponse response = new ClaimSearchResponse();
response.setResultCode("ERROR");

View File

@@ -24,7 +24,7 @@ import io.shinhanlife.glow.communication.dto.Transfer;
public class MciNclaClient {
private final AxhubMciComponent mci;
public <O> Transfer<O> callTo(String interfaceId, String dummy, Object mciReq, Class<O> resType) throws Exception {
public <O> Transfer<O> callTo(String interfaceId, String dummy, Object mciReq, Class<O> resType) {
return mci.callTo(interfaceId, dummy, mciReq, resType);
}
}

View File

@@ -0,0 +1,47 @@
package io.shinhanlife.dat.mcc.biz.cmm.usecase.impl;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import io.shinhanlife.dat.mcc.biz.cmm.converter.ClaimSearchConverter;
import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchRequest;
import io.shinhanlife.dat.mcc.biz.cmm.dto.ClaimSearchResponse;
import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.MciNclaClient;
import io.shinhanlife.dat.mcc.infra.itrf.mci.ncla.io.CLCNNB00001_O;
import io.shinhanlife.glow.BizException;
import org.junit.jupiter.api.Test;
class ClaimSearchUseCaseImplTest {
@Test
void returnsErrorResponseWhenMciReportsABusinessCommunicationFailure() {
MciNclaClient mci = mock(MciNclaClient.class);
when(mci.callTo(eq("CLCNNB00001"), any(), any(), eq(CLCNNB00001_O.class)))
.thenThrow(bizException());
ClaimSearchUseCaseImpl useCase = new ClaimSearchUseCaseImpl(mci, mock(ClaimSearchConverter.class));
ClaimSearchResponse response = useCase.searchClaim(mock(ClaimSearchRequest.class));
assertEquals("ERROR", response.getResultCode());
}
@Test
void doesNotHideUnexpectedRuntimeFailures() {
MciNclaClient mci = mock(MciNclaClient.class);
when(mci.callTo(eq("CLCNNB00001"), any(), any(), eq(CLCNNB00001_O.class)))
.thenThrow(new IllegalStateException("unexpected defect"));
ClaimSearchUseCaseImpl useCase = new ClaimSearchUseCaseImpl(mci, mock(ClaimSearchConverter.class));
assertThrows(IllegalStateException.class,
() -> useCase.searchClaim(mock(ClaimSearchRequest.class)));
}
private BizException bizException() {
return new BizException("CST00477", new String[]{"MCI communication failure"},
new RuntimeException("connection closed"));
}
}