From 6ea0e827a5d3806886bbe96e9da3319236afb5be Mon Sep 17 00:00:00 2001 From: jade Date: Mon, 13 Jul 2026 17:30:44 +0900 Subject: [PATCH] =?UTF-8?q?=EC=86=8C=EC=8A=A4=20=EC=88=98=EC=A0=95=20?= =?UTF-8?q?=EC=99=84=EB=A3=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../axhub/common/util/ToolScaffolder.java | 22 +++++++++---------- .../SampleMciConverter.java} | 6 ++--- .../SampleMciConverterTest.java} | 8 +++---- .../SearchDetailHrMciConverter.java} | 10 ++++----- .../SmsMciConverter.java} | 6 ++--- .../mcp/tool/sms/service/SmsToolService.java | 4 ++-- 6 files changed, 28 insertions(+), 28 deletions(-) rename axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/sample/{mapper/SampleMciMapper.java => converter/SampleMciConverter.java} (82%) rename axhub-tool-core/src/test/java/io/shinhanlife/axhub/biz/mcp/sample/{mapper/SampleMciMapperTest.java => converter/SampleMciConverterTest.java} (87%) rename axhub-tool-hr/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/hr/{mapper/SearchDetailHrMciMapper.java => converter/SearchDetailHrMciConverter.java} (74%) rename axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/{mapper/SmsMciMapper.java => converter/SmsMciConverter.java} (71%) diff --git a/axhub-common/src/main/java/io/shinhanlife/axhub/common/util/ToolScaffolder.java b/axhub-common/src/main/java/io/shinhanlife/axhub/common/util/ToolScaffolder.java index 533d5e6..ce1e835 100644 --- a/axhub-common/src/main/java/io/shinhanlife/axhub/common/util/ToolScaffolder.java +++ b/axhub-common/src/main/java/io/shinhanlife/axhub/common/util/ToolScaffolder.java @@ -90,12 +90,12 @@ public class ToolScaffolder { String shortName = moduleName.replace("axhub-tool-", "").replace("-", ""); Path legacyDtoDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, shortName, "dto")); - Path mapperDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, shortName, "mapper")); + Path converterDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, shortName, "converter")); Files.createDirectories(serviceDir); Files.createDirectories(dtoDir); Files.createDirectories(legacyDtoDir); - Files.createDirectories(mapperDir); + Files.createDirectories(converterDir); StringBuilder log = new StringBuilder(); @@ -275,9 +275,9 @@ public class ToolScaffolder { """.formatted(BASE_PACKAGE, shortName, BASE_PACKAGE, shortName, baseName, author, createDate, createDate, author, baseName); Files.writeString(legacyDtoDir.resolve(baseName + "MciResDto.java"), legacyResContent); - // Generate MCI Mapper - String mapperContent = """ - package %s.%s.mapper; + // Generate MCI Converter + String converterContent = """ + package %s.%s.converter; import %s.dto.%sReq; import %s.dto.%sRes; @@ -288,8 +288,8 @@ public class ToolScaffolder { import org.mapstruct.factory.Mappers; /** - * @package %s.%s.mapper - * @className %sMciMapper + * @package %s.%s.converter + * @className %sMciConverter * @description AX HUB 시스템 처리 클래스 * @author %s * @create %s @@ -302,9 +302,9 @@ public class ToolScaffolder { * */ @Mapper(componentModel = "spring") - public interface %sMciMapper { + public interface %sMciConverter { - %sMciMapper INSTANCE = Mappers.getMapper(%sMciMapper.class); + %sMciConverter INSTANCE = Mappers.getMapper(%sMciConverter.class); // @Mapping(source = "sourceField", target = "targetField") %sMciReqDto toMciReq(%sReq req); @@ -320,7 +320,7 @@ public class ToolScaffolder { BASE_PACKAGE, shortName, baseName, author, createDate, createDate, author, baseName, baseName, baseName, baseName, baseName, baseName, baseName ); - Files.writeString(mapperDir.resolve(baseName + "MciMapper.java"), mapperContent); + Files.writeString(converterDir.resolve(baseName + "MciConverter.java"), converterContent); log.append("\n=========================================\n"); log.append(" Scaffolding Complete!\n"); @@ -330,7 +330,7 @@ public class ToolScaffolder { log.append("[Res DTO] ").append(dtoDir.resolve(baseName + "Res.java")).append("\n"); log.append("[MCI Req DTO] ").append(legacyDtoDir.resolve(baseName + "MciReqDto.java")).append("\n"); log.append("[MCI Res DTO] ").append(legacyDtoDir.resolve(baseName + "MciResDto.java")).append("\n"); - log.append("[MCI Mapper] ").append(mapperDir.resolve(baseName + "MciMapper.java")).append("\n"); + log.append("[MCI Converter] ").append(converterDir.resolve(baseName + "MciConverter.java")).append("\n"); log.append("\n Tip: ").append(interfaceId).append(" 목업 데이터를 mock-responses.json에 추가하세요.\n"); return log.toString(); diff --git a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/sample/mapper/SampleMciMapper.java b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/sample/converter/SampleMciConverter.java similarity index 82% rename from axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/sample/mapper/SampleMciMapper.java rename to axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/sample/converter/SampleMciConverter.java index 81d69cf..1eef078 100644 --- a/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/sample/mapper/SampleMciMapper.java +++ b/axhub-tool-core/src/main/java/io/shinhanlife/axhub/biz/mcp/sample/converter/SampleMciConverter.java @@ -1,4 +1,4 @@ -package io.shinhanlife.axhub.biz.mcp.sample.mapper; +package io.shinhanlife.axhub.biz.mcp.sample.converter; import io.shinhanlife.axhub.biz.mcp.sample.dto.SampleAiReqDto; import io.shinhanlife.axhub.biz.mcp.sample.dto.SampleMciReqDto; @@ -7,10 +7,10 @@ import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; @Mapper(componentModel = "spring") -public interface SampleMciMapper { +public interface SampleMciConverter { // 테스트 환경 등에서 Spring Bean 주입 없이 직접 접근하기 위한 INSTANCE 제공 (IDE 에러 방지용) - SampleMciMapper INSTANCE = Mappers.getMapper(SampleMciMapper.class); + SampleMciConverter INSTANCE = Mappers.getMapper(SampleMciConverter.class); /** * AI Agent의 DTO를 MCI 통신용 DTO로 변환합니다. diff --git a/axhub-tool-core/src/test/java/io/shinhanlife/axhub/biz/mcp/sample/mapper/SampleMciMapperTest.java b/axhub-tool-core/src/test/java/io/shinhanlife/axhub/biz/mcp/sample/converter/SampleMciConverterTest.java similarity index 87% rename from axhub-tool-core/src/test/java/io/shinhanlife/axhub/biz/mcp/sample/mapper/SampleMciMapperTest.java rename to axhub-tool-core/src/test/java/io/shinhanlife/axhub/biz/mcp/sample/converter/SampleMciConverterTest.java index 67b29b7..fe5c7d4 100644 --- a/axhub-tool-core/src/test/java/io/shinhanlife/axhub/biz/mcp/sample/mapper/SampleMciMapperTest.java +++ b/axhub-tool-core/src/test/java/io/shinhanlife/axhub/biz/mcp/sample/converter/SampleMciConverterTest.java @@ -1,4 +1,4 @@ -package io.shinhanlife.axhub.biz.mcp.sample.mapper; +package io.shinhanlife.axhub.biz.mcp.sample.converter; import io.shinhanlife.axhub.biz.mcp.sample.dto.SampleAiReqDto; import io.shinhanlife.axhub.biz.mcp.sample.dto.SampleMciReqDto; @@ -8,10 +8,10 @@ import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; -public class SampleMciMapperTest { +public class SampleMciConverterTest { // MapStruct가 자동 생성한 구현체를 가져와서 테스트합니다. (IDE 에러 방지를 위해 INSTANCE 참조) - private final SampleMciMapper sampleMciMapper = SampleMciMapper.INSTANCE; + private final SampleMciConverter sampleMciConverter = SampleMciConverter.INSTANCE; @Test @DisplayName("AI 파라미터 DTO가 MCI DTO로 정확히 매핑되는지 테스트") @@ -24,7 +24,7 @@ public class SampleMciMapperTest { .build(); // when: MapStruct 자동 생성 매퍼를 통해 1줄로 변환 - SampleMciReqDto mciDto = sampleMciMapper.toMciReq(aiDto); + SampleMciReqDto mciDto = sampleMciConverter.toMciReq(aiDto); // then: 콘솔에 결과 출력 및 값 검증 System.out.println("====== MapStruct 변환 테스트 결과 ======"); diff --git a/axhub-tool-hr/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/hr/mapper/SearchDetailHrMciMapper.java b/axhub-tool-hr/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/hr/converter/SearchDetailHrMciConverter.java similarity index 74% rename from axhub-tool-hr/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/hr/mapper/SearchDetailHrMciMapper.java rename to axhub-tool-hr/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/hr/converter/SearchDetailHrMciConverter.java index 0f61da7..cfd9312 100644 --- a/axhub-tool-hr/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/hr/mapper/SearchDetailHrMciMapper.java +++ b/axhub-tool-hr/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/hr/converter/SearchDetailHrMciConverter.java @@ -1,4 +1,4 @@ -package io.shinhanlife.axhub.biz.mcp.tool.hr.mapper; +package io.shinhanlife.axhub.biz.mcp.tool.hr.converter; import io.shinhanlife.axhub.biz.mcp.tool.dto.SearchDetailHrReq; import io.shinhanlife.axhub.biz.mcp.tool.dto.SearchDetailHrRes; @@ -9,8 +9,8 @@ import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; /** - * @package io.shinhanlife.axhub.biz.mcp.tool.hr.mapper - * @className SearchDetailHrMciMapper + * @package io.shinhanlife.axhub.biz.mcp.tool.hr.converter + * @className SearchDetailHrMciConverter * @description AX HUB 시스템 처리 클래스 * @author root * @create 2026.07.13 @@ -23,9 +23,9 @@ import org.mapstruct.factory.Mappers; * */ @Mapper(componentModel = "spring") -public interface SearchDetailHrMciMapper { +public interface SearchDetailHrMciConverter { - SearchDetailHrMciMapper INSTANCE = Mappers.getMapper(SearchDetailHrMciMapper.class); + SearchDetailHrMciConverter INSTANCE = Mappers.getMapper(SearchDetailHrMciConverter.class); // @Mapping(source = "sourceField", target = "targetField") SearchDetailHrMciReqDto toMciReq(SearchDetailHrReq req); diff --git a/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/mapper/SmsMciMapper.java b/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/converter/SmsMciConverter.java similarity index 71% rename from axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/mapper/SmsMciMapper.java rename to axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/converter/SmsMciConverter.java index 78a5332..482b8d7 100644 --- a/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/mapper/SmsMciMapper.java +++ b/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/converter/SmsMciConverter.java @@ -1,4 +1,4 @@ -package io.shinhanlife.axhub.biz.mcp.tool.sms.mapper; +package io.shinhanlife.axhub.biz.mcp.tool.sms.converter; import io.shinhanlife.axhub.biz.mcp.tool.dto.SmsSendReq; import io.shinhanlife.axhub.biz.mcp.tool.sms.dto.SmsMciReqDto; @@ -7,9 +7,9 @@ import org.mapstruct.Mapping; import org.mapstruct.factory.Mappers; @Mapper(componentModel = "spring") -public interface SmsMciMapper { +public interface SmsMciConverter { - SmsMciMapper INSTANCE = Mappers.getMapper(SmsMciMapper.class); + SmsMciConverter INSTANCE = Mappers.getMapper(SmsMciConverter.class); @Mapping(source = "phoneNumber", target = "phone") @Mapping(source = "message", target = "content") diff --git a/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/service/SmsToolService.java b/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/service/SmsToolService.java index f2b4e45..e80e6f5 100644 --- a/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/service/SmsToolService.java +++ b/axhub-tool-sms/src/main/java/io/shinhanlife/axhub/biz/mcp/tool/sms/service/SmsToolService.java @@ -5,7 +5,7 @@ import io.shinhanlife.axhub.biz.mcp.tool.annotation.McpTool; import io.shinhanlife.axhub.biz.mcp.tool.dto.SmsSendReq; import io.shinhanlife.axhub.biz.mcp.tool.service.AbstractMcpToolService; import io.shinhanlife.axhub.biz.mcp.tool.sms.dto.SmsMciReqDto; -import io.shinhanlife.axhub.biz.mcp.tool.sms.mapper.SmsMciMapper; +import io.shinhanlife.axhub.biz.mcp.tool.sms.converter.SmsMciConverter; import lombok.extern.slf4j.Slf4j; import java.util.Map; @@ -33,7 +33,7 @@ public class SmsToolService extends AbstractMcpToolService { log.info("[SMS] SMS 발송 요청 수신. 수신자: {}", req.getPhoneNumber()); // MapStruct를 이용한 자동 매핑 (AI DTO -> MCI DTO) - SmsMciReqDto mciReq = SmsMciMapper.INSTANCE.toMciReq(req); + SmsMciReqDto mciReq = SmsMciConverter.INSTANCE.toMciReq(req); // 레거시 시스템 연동 (EAI) - DTO 객체를 그대로 넘김 Map result = executeLegacy("EAI", "SMS_SEND_001", mciReq);