From a6ca2b82a7416de898d4dde7e471d5b6f3da1d0e Mon Sep 17 00:00:00 2001 From: jade Date: Sun, 26 Jul 2026 16:00:45 +0900 Subject: [PATCH] =?UTF-8?q?scaffold=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dap/lib/util/ToolScaffolder.java | 111 +++++++++--------- 1 file changed, 54 insertions(+), 57 deletions(-) diff --git a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java index 8c8c92c7..30521db1 100644 --- a/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java +++ b/dap-tool-core/src/main/java/io/shinhanlife/dap/lib/util/ToolScaffolder.java @@ -85,19 +85,20 @@ public class ToolScaffolder { String envSourceDir = System.getenv("AXHUB_SOURCE_DIR"); Path rootDir = envSourceDir != null ? Paths.get(envSourceDir) : Paths.get("."); - Path serviceDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "service")); - Path serviceImplDir = serviceDir.resolve("impl"); - Path dtoDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "dto")); + Path usecaseDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "biz", group.toLowerCase(), "usecase")); + Path usecaseImplDir = usecaseDir.resolve("impl"); + Path dtoDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "biz", group.toLowerCase(), "dto")); - Path legacyDtoDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "legacy")); - Path converterDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "converter")); + Path legacyDtoDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "biz", group.toLowerCase(), "legacy")); + Path converterDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, "biz", group.toLowerCase(), "converter")); + String bizPackage = BASE_PACKAGE + ".biz." + group.toLowerCase(); boolean isMci = "MCI".equalsIgnoreCase(routingType); String mciGroupPath = "infra/itrf/mci/" + group.toLowerCase(); Path mciIoDir = rootDir.resolve(Paths.get(moduleName, BASE_PACKAGE_PATH, mciGroupPath, "io")); - Files.createDirectories(serviceDir); - Files.createDirectories(serviceImplDir); + Files.createDirectories(usecaseDir); + Files.createDirectories(usecaseImplDir); Files.createDirectories(dtoDir); if (isMci) { Files.createDirectories(mciIoDir); @@ -113,7 +114,7 @@ public class ToolScaffolder { package %s.dto; import com.fasterxml.jackson.annotation.JsonInclude; - import %s.annotation.McpParameter; + import io.shinhanlife.dap.lib.annotation.McpParameter; import lombok.Data; /** @@ -139,7 +140,7 @@ public class ToolScaffolder { @McpParameter(description = "전송할 메시지 내용", required = true) private String message; } - """.formatted(BASE_PACKAGE, BASE_PACKAGE, BASE_PACKAGE, baseName, author, createDate, createDate, author, baseName); + """.formatted(bizPackage, bizPackage, baseName, author, createDate, createDate, author, baseName); Files.writeString(dtoDir.resolve(baseName + "Request.java"), reqContent); // Generate Response DTO @@ -170,7 +171,7 @@ public class ToolScaffolder { private String message; // TODO: Add response fields here } - """.formatted(BASE_PACKAGE, BASE_PACKAGE, baseName, author, createDate, createDate, author, baseName); + """.formatted(bizPackage, bizPackage, baseName, author, createDate, createDate, author, baseName); Files.writeString(dtoDir.resolve(baseName + "Response.java"), resContent); String toolName = baseName.isEmpty() ? baseName : Character.toLowerCase(baseName.charAt(0)) + baseName.substring(1); @@ -180,12 +181,12 @@ public class ToolScaffolder { import %s.dto.%sRequest; - public interface %sService { + public interface %sUseCase { Object execute(%sRequest req); } - """.formatted(BASE_PACKAGE, BASE_PACKAGE, baseName, baseName, baseName); + """.formatted(bizPackage, bizPackage, baseName, baseName, baseName); - Files.writeString(serviceDir.resolve(baseName + "Service.java"), serviceInterfaceContent); + Files.writeString(usecaseDir.resolve(baseName + "UseCase.java"), serviceInterfaceContent); String serviceImplContent; @@ -193,11 +194,11 @@ public class ToolScaffolder { serviceImplContent = """ package %s.usecase.impl; - import %s.annotation.McpFunction; - import %s.annotation.McpTool; + import io.shinhanlife.dap.lib.annotation.McpFunction; + import io.shinhanlife.dap.lib.annotation.McpTool; import %s.dto.%sRequest; import %s.dto.%sResponse; - import %s.usecase.%sService; + import %s.usecase.%sUseCase; import io.shinhanlife.dap.lib.integration.mci.component.AxhubMciComponent; import io.shinhanlife.glow.communication.dto.Transfer; import org.springframework.stereotype.Service; @@ -209,7 +210,7 @@ public class ToolScaffolder { /** * @package %s.usecase.impl - * @className %sServiceImpl + * @className %sUseCaseImpl * @description AX HUB 시스템 처리 클래스 * @author %s * @create %s @@ -228,7 +229,7 @@ public class ToolScaffolder { routingType = "%s", categoryKey = "%s" ) - public class %sServiceImpl implements %sService { + public class %sUseCaseImpl implements %sUseCase { private final AxhubMciComponent mci; private final %sLegacyConverter converter; @@ -264,15 +265,13 @@ public class ToolScaffolder { } } """.formatted( - BASE_PACKAGE, - BASE_PACKAGE, - BASE_PACKAGE, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, + bizPackage, + bizPackage, baseName, + bizPackage, baseName, + bizPackage, baseName, + bizPackage, baseName, BASE_PACKAGE, group.toLowerCase(), interfaceId, - BASE_PACKAGE, baseName, + bizPackage, baseName, author, createDate, createDate, author, @@ -282,18 +281,19 @@ public class ToolScaffolder { baseName, toolName, description, description + " 해줘.", interfaceId, register, baseName, interfaceId, + interfaceId, interfaceId ); } else { serviceImplContent = """ package %s.usecase.impl; - import %s.annotation.McpFunction; - import %s.annotation.McpTool; + import io.shinhanlife.dap.lib.annotation.McpFunction; + import io.shinhanlife.dap.lib.annotation.McpTool; import %s.dto.%sRequest; import %s.dto.%sResponse; - import %s.usecase.%sService; - import %s.usecase.AbstractMcpToolUseCase; + import %s.usecase.%sUseCase; + import io.shinhanlife.dap.mcc.usecase.AbstractMcpToolUseCase; import %s.converter.%sLegacyConverter; import org.springframework.stereotype.Service; import lombok.RequiredArgsConstructor; @@ -301,7 +301,7 @@ public class ToolScaffolder { /** * @package %s.usecase.impl - * @className %sServiceImpl + * @className %sUseCaseImpl * @description AX HUB 시스템 처리 클래스 * @author %s * @create %s @@ -320,7 +320,7 @@ public class ToolScaffolder { routingType = "%s", categoryKey = "%s" ) - public class %sServiceImpl extends AbstractMcpToolUseCase implements %sService { + public class %sUseCaseImpl extends AbstractMcpToolUseCase implements %sUseCase { private final %sLegacyConverter converter; @@ -340,14 +340,11 @@ public class ToolScaffolder { } } """.formatted( - BASE_PACKAGE, - BASE_PACKAGE, - BASE_PACKAGE, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, - BASE_PACKAGE, - BASE_PACKAGE, baseName, + bizPackage, + bizPackage, baseName, + bizPackage, baseName, + bizPackage, baseName, + bizPackage, baseName, author, createDate, createDate, author, @@ -361,7 +358,7 @@ public class ToolScaffolder { ); } - Files.writeString(serviceImplDir.resolve(baseName + "ServiceImpl.java"), serviceImplContent); + Files.writeString(usecaseImplDir.resolve(baseName + "UseCaseImpl.java"), serviceImplContent); if (isMci) { String mciReqContent = """ @@ -463,12 +460,12 @@ public class ToolScaffolder { // %sResponse toResponse(%s_O mciRes); } """.formatted( - BASE_PACKAGE, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, + bizPackage, + bizPackage, baseName, + bizPackage, baseName, BASE_PACKAGE, group.toLowerCase(), interfaceId, BASE_PACKAGE, group.toLowerCase(), interfaceId, - BASE_PACKAGE, baseName, author, createDate, createDate, author, + bizPackage, baseName, author, createDate, createDate, author, baseName, interfaceId, baseName, baseName, interfaceId, baseName, interfaceId @@ -478,8 +475,8 @@ public class ToolScaffolder { log.append("\n=========================================\n"); log.append(" Scaffolding Complete! (Routing: " + routingType + ")\n"); log.append("=========================================\n"); - log.append("[Service Interface] ").append(serviceDir.resolve(baseName + "Service.java")).append("\n"); - log.append("[Service Impl] ").append(serviceImplDir.resolve(baseName + "ServiceImpl.java")).append("\n"); + log.append("[Usecase Interface] ").append(usecaseDir.resolve(baseName + "UseCase.java")).append("\n"); + log.append("[Usecase Impl] ").append(usecaseImplDir.resolve(baseName + "UseCaseImpl.java")).append("\n"); log.append("[Request DTO] ").append(dtoDir.resolve(baseName + "Request.java")).append("\n"); log.append("[Response DTO] ").append(dtoDir.resolve(baseName + "Response.java")).append("\n"); log.append("[MCI Request IO] ").append(mciIoDir.resolve(interfaceId + "_I.java")).append("\n"); @@ -518,7 +515,7 @@ public class ToolScaffolder { */ private String content; } - """.formatted(BASE_PACKAGE, BASE_PACKAGE, baseName, author, createDate, createDate, author, baseName); + """.formatted(bizPackage, bizPackage, baseName, author, createDate, createDate, author, baseName); Files.writeString(legacyDtoDir.resolve(baseName + "LegacyRequest.java"), legacyReqContent); String legacyResContent = """ @@ -544,7 +541,7 @@ public class ToolScaffolder { public class %sLegacyResponse { // TODO: Add legacy response fields here } - """.formatted(BASE_PACKAGE, BASE_PACKAGE, baseName, author, createDate, createDate, author, baseName); + """.formatted(bizPackage, bizPackage, baseName, author, createDate, createDate, author, baseName); Files.writeString(legacyDtoDir.resolve(baseName + "LegacyResponse.java"), legacyResContent); String converterContent = """ @@ -586,12 +583,12 @@ public class ToolScaffolder { // %sResponse toResponse(%sLegacyResponse legacyResponse); } """.formatted( - BASE_PACKAGE, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, - BASE_PACKAGE, baseName, author, createDate, createDate, author, + bizPackage, + bizPackage, baseName, + bizPackage, baseName, + bizPackage, baseName, + bizPackage, baseName, + bizPackage, baseName, author, createDate, createDate, author, baseName, baseName, baseName, baseName, baseName, baseName, baseName ); Files.writeString(converterDir.resolve(baseName + "LegacyConverter.java"), converterContent); @@ -599,8 +596,8 @@ public class ToolScaffolder { log.append("\n=========================================\n"); log.append(" Scaffolding Complete! (Routing: " + routingType + ")\n"); log.append("=========================================\n"); - log.append("[Service Interface] ").append(serviceDir.resolve(baseName + "Service.java")).append("\n"); - log.append("[Service Impl] ").append(serviceImplDir.resolve(baseName + "ServiceImpl.java")).append("\n"); + log.append("[Usecase Interface] ").append(usecaseDir.resolve(baseName + "UseCase.java")).append("\n"); + log.append("[Usecase Impl] ").append(usecaseImplDir.resolve(baseName + "UseCaseImpl.java")).append("\n"); log.append("[Request DTO] ").append(dtoDir.resolve(baseName + "Request.java")).append("\n"); log.append("[Response DTO] ").append(dtoDir.resolve(baseName + "Response.java")).append("\n"); log.append("[Legacy Request DTO] ").append(legacyDtoDir.resolve(baseName + "LegacyRequest.java")).append("\n");