fix: resolve MCI sample tool execution errors and improve parameter definitions in UI

This commit is contained in:
jade
2026-07-21 10:29:30 +09:00
parent e02a4e24e8
commit 821b249d50
12 changed files with 234 additions and 7 deletions

View File

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

View File

@@ -0,0 +1,30 @@
package io.shinhanlife.dap.other.dto;
import io.shinhanlife.dap.mcc.annotation.McpParameter;
import lombok.Data;
/**
* @package io.shinhanlife.dap.other.dto
* @className MciSampleRequestDto
* @description AX HUB 시스템 처리 클래스
* @author 김형식
* @create 2026.09.01
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2026.09.01 김형식 최초생성
*
* </pre>
*/
@Data
public class MciSampleRequestDto {
@McpParameter(description = "인터페이스 ID (입력 예시: S001)")
private String interfaceId;
@McpParameter(description = "메시지 전송 유형 (입력 예시: T001)")
private String messageType;
@McpParameter(description = "조회 대상 고객명 (입력 예시: 홍길동)")
private String customerName;
}

View File

@@ -0,0 +1,40 @@
package io.shinhanlife.dap.other.dto;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyDescription;
import io.shinhanlife.dap.mcc.annotation.McpParameter;
/**
* @package io.shinhanlife.dap.other.dto
* @className MyBizDataDto
* @description AX HUB 시스템 처리 클래스 - 샘플 비즈니스 데이터 DTO
* @author 김형식
* @create 2026.09.01
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2026.09.01 김형식 최초생성
*
* </pre>
*/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MyBizDataDto {
@McpParameter(description = "고객 이름", required = true)
private String customerName;
@McpParameter(description = "조회 대상 일자 (YYYYMMDD)", required = true)
private String targetDate;
@McpParameter(description = "비고 내용")
private String remarks;
}

View File

@@ -0,0 +1,65 @@
package io.shinhanlife.dap.other.tool;
import io.shinhanlife.dap.mcc.annotation.McpFunction;
import io.shinhanlife.dap.mcc.annotation.McpTool;
import io.shinhanlife.dap.common.integration.mci.dto.ShinhanTelegramWrapper;
import io.shinhanlife.dap.common.integration.mci.dto.ShinhanCommonHeaderDto;
import io.shinhanlife.dap.common.integration.mci.dto.ShinhanMessageDto;
import io.shinhanlife.dap.common.integration.mci.dto.ShinhanMessageDto.MsgHddvValu;
import io.shinhanlife.dap.other.dto.MyBizDataDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.Map;
import java.util.UUID;
import io.shinhanlife.dap.other.dto.MciSampleRequestDto;
/**
* @package io.shinhanlife.dap.other.tool
* @className MciSampleTool
* @description AX HUB 시스템 처리 클래스 - MCI 연동 샘플 툴
* @author 김형식
* @create 2026.09.01
* <pre>
* ---------- 개정이력 ----------
* 수정일 수정자 수정내용
* ---------- -------- ---------------------------
* 2026.09.01 김형식 최초생성
*
* </pre>
*/
@Slf4j
@Service
@McpTool(routingType = "MCI", categoryKey = "common")
public class MciSampleTool {
@McpFunction(displayName = "MCI 샘플 전송", name = "send_mci_sample", description = "MCI 표준 헤더, 메시지부, 데이터부 구조를 갖는 샘플 연동")
public ShinhanTelegramWrapper<MyBizDataDto> sendMciSample(MciSampleRequestDto params) {
log.info("▶ [MCI Sample Tool] 요청을 수신했습니다. 전달된 파라미터: {}", params);
ShinhanTelegramWrapper<MyBizDataDto> request = new ShinhanTelegramWrapper<>();
// 1. 공통 헤더부 생성
ShinhanCommonHeaderDto header = new ShinhanCommonHeaderDto();
header.setItrIfId(params.getInterfaceId() != null && !params.getInterfaceId().isBlank() ? params.getInterfaceId() : "dummy_header");
header.setReqRspnScCd("R");
header.setGlbId(UUID.randomUUID().toString());
request.setTgrmCmnnhddValu(header);
// 2. 메시지부 생성
ShinhanMessageDto msg = new ShinhanMessageDto();
MsgHddvValu msgHeader = new MsgHddvValu();
msgHeader.setMsgTnsmTypeCd(params.getMessageType() != null && !params.getMessageType().isBlank() ? params.getMessageType() : "dummy_msg_type");
msg.setMsgHddvValu(msgHeader);
request.setTgrmMsdvValu(msg);
// 3. 데이터부 생성
MyBizDataDto bizData = new MyBizDataDto();
bizData.setCustomerName(params.getCustomerName() != null && !params.getCustomerName().isBlank() ? params.getCustomerName() : "홍길동");
bizData.setRemarks("정상적으로 처리되었습니다. (응답 테스트)");
request.setTgrmDtdvValu(bizData);
return request;
}
}

View File

@@ -17,7 +17,7 @@ eims.mcistring.url=http://localhost:${server.port}/api/mock/esb/string
# Gateway/Tool URLs
axhub.gateway.url=http://localhost:8081
axhub.tool.url=http://localhost:${server.port}
axhub.tool.url=${AXHUB_TOOL_URL:http://localhost:${server.port}}
# Disable Kafka
spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.kafka.KafkaAutoConfiguration