fix: generate schema based tool request DTOs
All checks were successful
Deploy to OCIWP / deploy (push) Successful in 1m36s

This commit is contained in:
jade
2026-08-09 17:13:54 +09:00
parent ae00489a39
commit c0567ec1c2
2 changed files with 46 additions and 5 deletions

View File

@@ -1,7 +1,6 @@
package io.shinhanlife.dap.lib.util;
import org.springaicommunity.mcp.annotation.McpToolParam;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -179,6 +178,13 @@ public class ToolScaffolder {
private String message;
}
""".formatted(bizPackage, bizPackage, baseName, author, createDate, createDate, author, baseName);
reqContent = reqContent
.replace("import com.fasterxml.jackson.annotation.JsonInclude;",
"import com.fasterxml.jackson.annotation.JsonInclude;\nimport io.swagger.v3.oas.annotations.media.Schema;")
.replaceAll("(?m)^\\s*@McpToolParam\\([^\\r\\n]*\\)\\R", "")
.replaceAll("(?m)^\\s*-\\(\\?:[^\\r\\n]*\\R", "")
.replace("private String phoneNumber;", "@Schema(example = \"01012345678\")\n private String phoneNumber;")
.replace("private String message;", "@Schema(example = \"테스트 메시지입니다.\")\n private String message;");
Files.writeString(dtoDir.resolve(baseName + "Request.java"), reqContent);
// Generate Response DTO
@@ -308,7 +314,7 @@ public class ToolScaffolder {
private final %sConverter converter;
@Override
public Object execute(%sRequest req) {
public %sResponse execute(%sRequest req) {
log.info("[MCI Tool] {} 요청 수신.", "%s");
try {
// MapStruct를 이용한 자동 매핑 (AI DTO -> MCI DTO)
@@ -320,10 +326,18 @@ public class ToolScaffolder {
mciReq,
Object.class
);
return resTransfer.getBody() != null ? resTransfer.getBody() : Map.of("status", "SUCCESS");
%sResponse response = new %sResponse();
response.setResultCode("SUCCESS");
response.setResultMessage(resTransfer.getBody() != null
? "MCI call completed."
: "MCI call completed without a response body.");
return response;
} catch (Exception e) {
log.error("[MCI Tool] 연동 중 오류 발생: {}", e.getMessage(), e);
return Map.of("status", "ERROR", "message", e.getMessage() != null ? e.getMessage() : "Unknown error");
%sResponse response = new %sResponse();
response.setResultCode("ERROR");
response.setResultMessage(e.getMessage() != null ? e.getMessage() : "Unknown error");
return response;
}
}
}
@@ -345,9 +359,14 @@ public class ToolScaffolder {
(clientPrefixCap.isEmpty() ? "private final AxhubMciComponent mci;" : "private final Mci" + clientPrefixCap + "Client mci;"),
baseName,
baseName,
baseName,
toolName,
interfaceId,
interfaceId
interfaceId,
baseName,
baseName,
baseName,
baseName
);
} else {
serviceImplContent = """