refs #739: unify Smilegate game target planning

This commit is contained in:
devmrko
2026-07-28 10:09:12 +09:00
parent 57f6677afb
commit d13d6d48ca
9 changed files with 664 additions and 138 deletions

View File

@@ -143,11 +143,13 @@ public class McpSseService {
addStringProperty(properties, "prompt", promptDescription(), 4000);
if (fewShotNl2SqlToolName().equals(toolView.name())) {
addStringProperty(properties, "scopeGameKey",
"선택 사항입니다. game_scope_resolve가 반환한 SUPPORTED gameKey만 전달하세요.", 128);
"하위 호환용 선택 입니다. 새 흐름에서는 queryPlan 전체를 전달하고 비워 둡니다.", 128);
ObjectNode plan = properties.putObject("queryPlan");
plan.put("type", "object");
plan.put("description", "앞 단계 game_query_plan의 구조화된 결과입니다.");
plan.putObject("additionalProperties").put("type", "object");
plan.put("description",
"바로 앞 game_query_plan의 전체 결과입니다. targetType이 NONE, SINGLE, MULTI, ALL 중 "
+ "어느 값이어도 원 질문과 함께 그대로 전달합니다.");
plan.put("additionalProperties", true);
}
required.add("prompt");
}
@@ -342,7 +344,12 @@ public class McpSseService {
private McpToolView fewShotNl2SqlView() {
return new McpToolView(
fewShotNl2SqlToolName(), fewShotNl2SqlToolDescription(), -1L,
fewShotNl2SqlToolName(),
fewShotNl2SqlToolDescription()
+ " game_query_plan의 targetType이 NONE, SINGLE, MULTI, ALL 중 어느 값이어도 "
+ "원 질문과 전체 queryPlan을 한 번 받아 단일 읽기 전용 SQL을 생성·실행합니다. "
+ "queryPlan에 없는 게임, prefix, 물리 객체를 추측하지 않습니다.",
-1L,
fewShotNl2SqlToolLabel(), SELECT_AI_TOOL_PATH);
}
@@ -361,7 +368,10 @@ public class McpSseService {
private McpToolView gameQueryPlanView() {
return new McpToolView(GAME_QUERY_PLAN_TOOL,
"질문에서 게임 범위와 실행 모드를 판정합니다. SQL은 실행하지 않습니다.",
"항상 먼저 호출해 질문의 게임 대상을 NONE, SINGLE, MULTI, ALL로 판정합니다. "
+ "targets에는 DB 카탈로그의 게임 식별자와 승인된 사용자 마스터 물리 객체명이 포함됩니다. "
+ "어떤 targetType도 종료 조건이 아닙니다. 원 질문과 이 도구의 전체 결과를 "
+ "smilegate_fewshot_nl2sql의 prompt와 queryPlan에 한 번 전달하세요. SQL은 실행하지 않습니다.",
-1L, "게임 질의 계획", SELECT_AI_TOOL_PATH);
}