diff --git a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/CustomWebMvcSseServerTransportProvider.java b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/CustomWebMvcSseServerTransportProvider.java index 8469d5f9..f4264145 100644 --- a/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/CustomWebMvcSseServerTransportProvider.java +++ b/dap-gateway/src/main/java/io/shinhanlife/dap/mcg/sync/CustomWebMvcSseServerTransportProvider.java @@ -223,9 +223,19 @@ public class CustomWebMvcSseServerTransportProvider implements McpServerTranspor // this.emitter.complete(); // MCP 표준 클라이언트 지원을 위해 스트림 강제 종료 제거 } } catch (Exception e) { - log.error("Error sending message to SSE emitter", e); + if (e.getClass().getSimpleName().contains("AsyncRequestNotUsableException") || + (e.getCause() != null && e.getCause() instanceof java.io.IOException)) { + log.debug("SSE emitter is disconnected (expected in Warm Pool): {}", e.getMessage()); + } else { + log.error("Error sending message to SSE emitter", e); + } + if (this.emitter != null) { - this.emitter.completeWithError(e); + try { + this.emitter.completeWithError(e); + } catch (Exception ignored) { + // ignore already completed + } } } }); diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/InsuranceClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/InsuranceClient.java deleted file mode 100644 index b67a95ed..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/InsuranceClient.java +++ /dev/null @@ -1,17 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.http.insurance; - -import io.shinhanlife.dap.lib.integration.http.component.AxhubHttpComponent; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Component; - -@Component -@RequiredArgsConstructor -public class InsuranceClient { - private static final String API_NAME = "insurance"; - - private final AxhubHttpComponent http; - - public O call(I request, Class responseType) { - return http.call(API_NAME, request, responseType); - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpRequest.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpRequest.java deleted file mode 100644 index 96ee6ef2..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpRequest.java +++ /dev/null @@ -1,19 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.http.insurance.io; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class InsuranceClaimProcessorHttpRequest { - @Schema(description = "보험 청구 번호", example = "CLM20230001", requiredMode = Schema.RequiredMode.REQUIRED) - private String claimNumber; - - @Schema(description = "청구 금액", example = "1500000.00", requiredMode = Schema.RequiredMode.REQUIRED) - private Double claimAmount; - - @Schema(description = "청구 일자 (YYYY-MM-DD)", example = "2023-09-15", requiredMode = Schema.RequiredMode.REQUIRED) - private String claimDate; - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpResponse.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpResponse.java deleted file mode 100644 index a2b05e99..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/http/insurance/io/InsuranceClaimProcessorHttpResponse.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.http.insurance.io; - -import com.fasterxml.jackson.annotation.JsonInclude; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -@Data -@JsonInclude(JsonInclude.Include.NON_NULL) -public class InsuranceClaimProcessorHttpResponse { - private String resultCode; - - private String resultMessage; - @Schema(description = "청구 처리 고유 식별자", example = "CLM20230001", requiredMode = Schema.RequiredMode.REQUIRED) - private String claimId; - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/MciCfpaClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/MciCfpaClient.java deleted file mode 100644 index f952241d..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/MciCfpaClient.java +++ /dev/null @@ -1,72 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a; - -import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_I; -import io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io.CLCNNB00001_O; -import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent; -import io.shinhanlife.glow.communication.dto.Transfer; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.cfp.a.io - * @className MciCfpaClient - * @description 보장분석결과조회 MCI 호출 클라이언트 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- * 
- * 
- */ -@Slf4j -@Component -@RequiredArgsConstructor -public class MciCfpaClient { - - private final AxhubMciComponent mci; - - // 인터페이스 코드 상수 - private static final String INTERFACE_CODE = "CLCNNB00001"; // CLCCFP00001 (Onnba용 코드 유지) - - // 정상 응답 코드 상수 - private static final String SUCCESS_CODE_COM = "COM00139"; - private static final String SUCCESS_CODE_CFP = "CFP00000"; - private static final String NO_DATA_CODE = "COM00150"; - - // 예외 코드 상수 - private static final String ERROR_CODE_PROCESS = "CLC00007"; - private static final String ERROR_CODE_MESSAGE = "CLC00043"; - - /** - * 보장분석결과조회 - * - * @param inDto 입력 DTO - * @return 출력 객체 - */ - public Object callCfpa0001(CLCNNB00001_I mciReq) throws Exception { - // 인터페이스 IO 객체 생성 및 매핑 - - // 인터페이스 호출 - Transfer resTransfer = mci.callTo(INTERFACE_CODE, mciReq, CLCNNB00001_O.class); - - // 응답 검증 - validateResponse(resTransfer); - - // 메시지 검증 - validateMessage(String.valueOf(resTransfer.getMessage())); - - return resTransfer.getBody(); - } - - private void validateResponse(Transfer resTransfer) { - log.info("응답 검증 로직 수행"); - } - - private void validateMessage(String message) { - log.info("메시지 검증 로직 수행: {}", message); - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_I.java deleted file mode 100644 index 7de87b33..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_I.java +++ /dev/null @@ -1,91 +0,0 @@ -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; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_O.java deleted file mode 100644 index fcb0f3fc..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/cfp/a/io/CLCNNB00001_O.java +++ /dev/null @@ -1,16 +0,0 @@ -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; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java deleted file mode 100644 index 6ca133b0..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/MciNclgClient.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g; - -import org.springframework.stereotype.Component; -import lombok.RequiredArgsConstructor; -import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent; -import io.shinhanlife.glow.communication.dto.Transfer; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g - * @className MciNclgClient - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Component -@RequiredArgsConstructor -public class MciNclgClient { - private final AxhubMciComponent mci; - - public Transfer callTo(String interfaceId, String dummy, Object mciReq, Class resType) throws Exception { - return mci.callTo(interfaceId, dummy, mciReq, resType); - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java deleted file mode 100644 index cc976137..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_I.java +++ /dev/null @@ -1,24 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io; - -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io - * @className SOLG00000001_I - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Data -public class SOLG00000001_I { - private String reqStatus; - private String reqPeriod; - private String reqTarget; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java deleted file mode 100644 index 7c1e4959..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000001_O.java +++ /dev/null @@ -1,34 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io; - -import lombok.Data; - -import java.util.List; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io - * @className SOLG00000001_O - * @description AX HUB 시스템 처리 클래스 - * @author jade - * @create 2026.07.29 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.07.29  jade    최초생성
- *
- * 
- */ -@Data -public class SOLG00000001_O { - private List reqList; - - @Data - public static class SOLG00000001_O_Item { - private String srId; - private String srName; - private String process; - private String devStage; - private String appName; - private String requester; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_I.java deleted file mode 100644 index 3b8b2cb1..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_I.java +++ /dev/null @@ -1,23 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io; - -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io - * @className SOLG00000002_I - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -@Data -public class SOLG00000002_I { - - private String srId; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_O.java deleted file mode 100644 index 1aa61472..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncl/g/io/SOLG00000002_O.java +++ /dev/null @@ -1,31 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io; - -import lombok.Data; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.ncl.g.io - * @className SOLG00000002_O - * @description AX HUB 시스템 처리 클래스 - * @author 0986406 - * @create 2026.09.01 - *
- * ---------- 개정이력 ----------
- * 수정일      수정자    수정내용
- * ---------- -------- ---------------------------
- * 2026.09.01  0986406    최초생성
- *
- * 
- */ -@Data -public class SOLG00000002_O { - - private String srId; - private String srName; - private String process; - private String devStage; - private String appName; - private String requester; - private String requestDate; - private String dueDate; - private String description; -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncm/d/io/ONCMD0030_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncm/d/io/ONCMD0030_O.java deleted file mode 100644 index 82bf8f95..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/ncm/d/io/ONCMD0030_O.java +++ /dev/null @@ -1,68 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.ncm.d.io; - -import java.util.List; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; - -import io.shinhanlife.glow.communication.annotation.GlowTrgmField; - -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -/** - * ONCMD0030_O 매핑 DTO - */ -@NoArgsConstructor -@Getter -@Setter -public class ONCMD0030_O { - - @GlowTrgmField(order = 1, description = "고객스마트정보조회OutDto", type = "gm") - private List cstSmartIfinOutDto; - - @GlowTrgmField(order = 1, description = "고객스마트정보조회OutDto2", type = "gm") - private List cstSmartIfinOutDto2; - - @JsonIgnoreProperties(ignoreUnknown = true) - @NoArgsConstructor - @Getter - @Setter - public static class CstSmartIfinOutDto { - - @GlowTrgmField(order = 1, length = 1, description = "동의여부") - private String agrYn; - - @GlowTrgmField(order = 2, length = 12, description = "고객번호") - private String csNo; - - @GlowTrgmField(order = 3, length = 50, description = "주민등록번호") - private String rdreNo; - - @GlowTrgmField(order = 4, length = 20, description = "등록일시") - private String rgiDt; - - } - - - @JsonIgnoreProperties(ignoreUnknown = true) - @NoArgsConstructor - @Getter - @Setter - public static class CstSmartIfinOutDto2 { - - @GlowTrgmField(order = 1, length = 1, description = "동의여부") - private String agrYnaa; - - @GlowTrgmField(order = 2, length = 12, description = "고객번호") - private String csNoaa; - - @GlowTrgmField(order = 3, length = 50, description = "주민등록번호") - private String rdreNoaa; - - @GlowTrgmField(order = 4, length = 20, description = "등록일시") - private String rgiDtaa; - - } - -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java deleted file mode 100644 index a68aaaa2..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/MciNildClient.java +++ /dev/null @@ -1,48 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d; - -import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_I; -import io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io.ONILD0320_O; -import io.shinhanlife.glow.BizException; -import io.shinhanlife.glow.GlowLogger; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Component; -import lombok.RequiredArgsConstructor; -import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent; -import io.shinhanlife.glow.communication.dto.Transfer; - -/** - * @package io.shinhanlife.dap.mcc.infra.itrf.mci.nild - * @className MciNildClient - * @description AX HUB ?쒖뒪??泥섎━ ?대옒?? - * @author Boram - * @create 2026.08.12 - *
- * ---------- 媛쒖젙?대젰 ----------
- * ?섏젙??     ?섏젙??   ?섏젙?댁슜
- * ---------- -------- ---------------------------
- * 2026.08.12  Boram    理쒖큹?앹꽦
- *
- * 
- */ -@Component -@RequiredArgsConstructor -public class MciNildClient { - private final AxhubMciComponent mci; - - public ONILD0320_O callOnild0320(ONILD0320_I onild0320_i){ - try { - Transfer resTransfer = mci.callTo( - "CTMNILO00007", - null, - onild0320_i, - ONILD0320_O.class - ); - - ONILD0320_O onild0320_o = resTransfer.getBody(); - - return onild0320_o; - } catch (Exception e) { - throw new RuntimeException(e); - } - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_I.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_I.java deleted file mode 100644 index c6c5cbee..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_I.java +++ /dev/null @@ -1,41 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import io.shinhanlife.glow.GlowMciFieldInfo; -import io.shinhanlife.glow.communication.annotation.GlowTrgmField; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; -import lombok.Getter; -import lombok.NoArgsConstructor; -import lombok.Setter; - -@Data -@Getter -@Setter -@NoArgsConstructor -public class ONILD0320_I { - - @GlowTrgmField(order = 1, description = "고객 통합 안내이력 조회", type="gs") - private CstUnfcNotiCarhInqrInDto cstUnfcNotiCarhInqrInDto; - - @NoArgsConstructor - @Getter - @Setter - public static class CstUnfcNotiCarhInqrInDto { - - @GlowMciFieldInfo(order = 1, length = 5, description = "고객번호") - private String csNo; - - @GlowMciFieldInfo(order = 2, length = 5, description = "안내장코드") - private String ntleCd; - - @GlowMciFieldInfo(order = 3, length = 5, description = "안내발송방법코드") - private String notiPmlMdCd; - - @GlowMciFieldInfo(order = 4, length = 5, description = "조회시작일자") - private String inqrStrtYmd; - - @GlowMciFieldInfo(order = 5, length = 5, description = "조회종료일자") - private String inqrEndYmd; - } -} diff --git a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_O.java b/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_O.java deleted file mode 100644 index 8f4c7cfe..00000000 --- a/dap-was-cus/src/main/java/io/shinhanlife/dap/mcc/infra/itrf/mci/nil/d/io/ONILD0320_O.java +++ /dev/null @@ -1,109 +0,0 @@ -package io.shinhanlife.dap.mcc.infra.itrf.mci.nil.d.io; - -import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import io.shinhanlife.glow.GlowMciFieldInfo; -import io.shinhanlife.glow.communication.annotation.GlowTrgmField; -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.*; - -import java.util.List; - -@NoArgsConstructor -@Getter -@Setter -public class ONILD0320_O { - - @GlowTrgmField(order = 1, description = "고객 통합 안내이력 조회out", type="gm") - private List cstUnfcNotiCarhInqrOutDto; - - - @NoArgsConstructor - @Getter - @Setter - public static class CstUnfcNotiCarhInqrOutDto { - - @GlowMciFieldInfo(order = 1, length = 5, description = "고객번호") - private String csNo; - - @GlowMciFieldInfo(order = 2, length = 5, description = "안내일시") - private String notiDt; - - @GlowMciFieldInfo(order = 3, length = 5, description = "발송일련번호") - private int pmlSriaNo; - - @GlowMciFieldInfo(order = 4, length = 5, description = "안내신청상세일시") - private String notiPetDtptDt; - - @GlowMciFieldInfo(order = 5, length = 5, description = "안내장코드") - private String ntleCd; - - @GlowMciFieldInfo(order = 6, length = 5, description = "안내장명") - private String ntleNm; - - @GlowMciFieldInfo(order = 7, length = 5, description = "안내발송일련번호") - private int notiPmlSriaNo; - - @GlowMciFieldInfo(order = 8, length = 5, description = "안내발송방법코드") - private String notiPmlMdCd; - - @GlowMciFieldInfo(order = 9, length = 5, description = "안내수신정보암호화내용") - private String notiRcvInfoEncrCt; - - @GlowMciFieldInfo(order = 10, length = 5, description = "메시지ID") - private String msgId; - - @GlowMciFieldInfo(order = 11, length = 5, description = "안내내용") - private String notiCt; - - @GlowMciFieldInfo(order = 12, length = 5, description = "통합안내발송결과코드") - private String unfcNotiPmlRsltCd; - - @GlowMciFieldInfo(order = 13, length = 5, description = "통합안내발송결과상세코드") - private String unfcNotiPmlRsltDtptCd; - - @GlowMciFieldInfo(order = 14, length = 5, description = "발송시스템코드") - private String pmlSystCd; - - @GlowMciFieldInfo(order = 15, length = 5, description = "발송조직번호") - private String pmlOgnzNo; - - @GlowMciFieldInfo(order = 16, length = 5, description = "발송조직명") - private String pmlOgnzNm; - - @GlowMciFieldInfo(order = 17, length = 5, description = "발신기관조직명") - private String msdilttOgnzNm; - - @GlowMciFieldInfo(order = 18, length = 5, description = "조회구분명") - private String inqrDvsnNm; - - @GlowMciFieldInfo(order = 19, length = 5, description = "등록일시") - private String rgiDt; - - @GlowMciFieldInfo(order = 20, length = 5, description = "등록자명") - private String rgstNm; - - @GlowMciFieldInfo(order = 21, length = 5, description = "등록자조직명") - private String rgstOgnzNm; - - @GlowMciFieldInfo(order = 22, length = 5, description = "최종변경자명") - private String lstPrwpNm; - - @GlowMciFieldInfo(order = 23, length = 5, description = "최종변경일시") - private String lstChgDt; - - @GlowMciFieldInfo(order = 24, length = 5, description = "최종변경자조직명") - private String lstPrwpOgnzNm; - - @GlowMciFieldInfo(order = 25, length = 5, description = "원천회사구분코드") - private String oriCpnyDvsnCd; - - @GlowMciFieldInfo(order = 26, length = 5, description = "고객한글명") - private String cstHanNm; - - @GlowMciFieldInfo(order = 27, length = 5, description = "시스템등록인사번호") - private String systRgiPrafNo; - - @GlowMciFieldInfo(order = 28, length = 5, description = "시스템변경인사번호") - private String systChgPrafNo; - } -} diff --git a/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolAnnotationSyncRunner.java b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolAnnotationSyncRunner.java new file mode 100644 index 00000000..7f1e6f01 --- /dev/null +++ b/dap-was-lib/src/main/java/io/shinhanlife/dap/lib/util/ToolAnnotationSyncRunner.java @@ -0,0 +1,66 @@ +package io.shinhanlife.dap.lib.util; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.dataformat.yaml.YAMLFactory; +import io.shinhanlife.dap.lib.metadata.ToolDefinition; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.stream.Stream; +import java.util.List; + +/** + * CI/CD 및 로컬 개발 환경에서 V17 Tool YAML 정의 파일을 읽어 Java @McpTool 어노테이션을 동기화합니다. + */ +public final class ToolAnnotationSyncRunner { + + private ToolAnnotationSyncRunner() { + } + + public static void main(String[] args) { + if (args.length != 1) { + throw new IllegalArgumentException("Usage: ToolAnnotationSyncRunner "); + } + sync(Path.of(args[0])); + } + + static void sync(Path projectRoot) { + ObjectMapper yamlMapper = new ObjectMapper(new YAMLFactory()); + int syncCount = 0; + try (Stream files = Files.walk(projectRoot)) { + List yamlFiles = files.filter(Files::isRegularFile) + .filter(path -> path.toString().replace('\\', '/').contains("/src/main/resources/tool-definitions/")) + .filter(path -> path.toString().endsWith(".yml") || path.toString().endsWith(".yaml")) + .toList(); + + for (Path file : yamlFiles) { + ToolDefinition definition = yamlMapper.readValue(file.toFile(), ToolDefinition.class); + + String toolName = definition.name(); + String title = definition.displayName(); + String description = definition.displayDescription(); + boolean readOnlyHint = Boolean.TRUE.equals(definition.readOnly()); + boolean destructiveHint = Boolean.TRUE.equals(definition.destructive()); + boolean idempotentHint = Boolean.TRUE.equals(definition.idempotent()); + String categoryKey = definition.categoryKey(); + + try { + boolean updated = ToolSourceUpdater.syncToolSource(projectRoot, toolName, title, description, + readOnlyHint, destructiveHint, idempotentHint, categoryKey); + if (updated) { + syncCount++; + System.out.println("Synced (Updated): " + toolName); + } else { + System.out.println("Synced (Unchanged): " + toolName); + } + } catch (IllegalArgumentException e) { + System.err.println("Skipped (Not Found): " + toolName); + } + } + } catch (IOException exception) { + throw new IllegalStateException("Failed to run tool annotation sync", exception); + } + System.out.println("Tool annotation sync completed: " + syncCount + " tools updated."); + } +}