refs #703: execute validated Smilegate Text2SQL

This commit is contained in:
devmrko
2026-07-22 20:15:10 +09:00
parent 27757ebff3
commit 914dc087ed
3 changed files with 109 additions and 15 deletions

View File

@@ -8,7 +8,7 @@ import com.fasterxml.jackson.databind.node.ObjectNode;
import java.util.List;
import org.springframework.stereotype.Service;
/** MCP boundary exposing the Smilegate game-data Select AI SHOWSQL tool. */
/** MCP boundary exposing the Smilegate game-data Select AI generation and read-only execution tool. */
@Service
public class McpSseService {
@@ -17,7 +17,7 @@ public class McpSseService {
private static final String SELECT_AI_VPD_QUERY_PROFILE = "SGMP_POC_HAIKU45";
private static final McpToolView SELECT_AI_VPD_QUERY_VIEW = new McpToolView(
SELECT_AI_VPD_QUERY_TOOL,
"SGMP_POC_HAIKU45 프로파일로 게임 로그·서비스 데이터용 읽기 전용 SELECT/WITH SQL을 생성합니다. 생성 SQL은 자동 실행하지 않으며 테이블·컬럼 comment, annotation, constraint를 참고합니다.",
"SGMP_POC_HAIKU45 프로파일로 게임 로그·서비스 데이터용 읽기 전용 SELECT/WITH SQL을 생성하고, 검증 후 읽기 전용 트랜잭션에서 실행합니다. 생성 SQL과 최대 100건의 조회 결과를 함께 반환하며 DDL/DML/잠금/패키지 호출은 실행하지 않습니다.",
-1L,
"Smilegate 게임 데이터 Text2SQL",
SELECT_AI_VPD_QUERY_PATH
@@ -131,7 +131,7 @@ public class McpSseService {
}
JsonNode response;
try {
response = smilegateSelectAiService.generateShowSql(token, arguments.path("prompt").asText(""));
response = smilegateSelectAiService.generateAndExecute(token, arguments.path("prompt").asText(""));
} catch (VpdTokenAccessDeniedException ignored) {
return tokenAccessDeniedResult();
}