92 lines
5.1 KiB
Java
92 lines
5.1 KiB
Java
package com.cloudhandson.vpdbackoffice.config;
|
|
|
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
|
|
|
/** Product-neutral MCP endpoint labels and tool catalogue configuration. */
|
|
@ConfigurationProperties(prefix = "backoffice.mcp")
|
|
public record McpProperties(
|
|
String publicUrl,
|
|
String serverName,
|
|
String toolName,
|
|
String toolLabel,
|
|
String toolDescription,
|
|
String promptDescription,
|
|
String tools,
|
|
String showpromptToolName,
|
|
String showpromptToolLabel,
|
|
String showpromptToolDescription,
|
|
String qaVectorSearchToolName,
|
|
String qaVectorSearchToolLabel,
|
|
String qaVectorSearchToolDescription,
|
|
String qaVectorStoreToolName,
|
|
String qaVectorStoreToolLabel,
|
|
String qaVectorStoreToolDescription,
|
|
String fewShotNl2SqlToolName,
|
|
String fewShotNl2SqlToolLabel,
|
|
String fewShotNl2SqlToolDescription,
|
|
String gameScopeToolName,
|
|
String gameScopeToolLabel,
|
|
String gameScopeToolDescription
|
|
) {
|
|
|
|
private static final String DEFAULT_PUBLIC_URL = "/mcp";
|
|
private static final String DEFAULT_SERVER_NAME = "data-ai-backoffice";
|
|
private static final String DEFAULT_TOOL_NAME = "oracle.select_ai.data_text2sql";
|
|
private static final String DEFAULT_TOOL_LABEL = "업무 데이터 Text2SQL";
|
|
private static final String DEFAULT_TOOL_DESCRIPTION =
|
|
"승인된 업무 데이터용 읽기 전용 SELECT/WITH SQL을 생성하고, 검증 후 읽기 전용 "
|
|
+ "트랜잭션에서 실행합니다.";
|
|
private static final String DEFAULT_PROMPT_DESCRIPTION =
|
|
"업무 데이터에서 조회할 내용을 자연어로 입력합니다.";
|
|
|
|
private static final String DEFAULT_SHOWPROMPT_TOOL_NAME = "oracle.select_ai.data_showprompt";
|
|
private static final String DEFAULT_QA_VECTOR_SEARCH_TOOL_NAME = "oracle.select_ai.qa_vector_search";
|
|
private static final String DEFAULT_QA_VECTOR_STORE_TOOL_NAME = "oracle.select_ai.qa_vector_store";
|
|
private static final String DEFAULT_FEW_SHOT_NL2SQL_TOOL_NAME = "oracle.select_ai.smilegate_fewshot_nl2sql";
|
|
private static final String DEFAULT_GAME_SCOPE_TOOL_NAME = "oracle.select_ai.game_scope_resolve";
|
|
|
|
public String resolvedPublicUrl() {
|
|
return requiredOrDefault(publicUrl, DEFAULT_PUBLIC_URL);
|
|
}
|
|
|
|
public String resolvedServerName() {
|
|
return requiredOrDefault(serverName, DEFAULT_SERVER_NAME);
|
|
}
|
|
|
|
public String resolvedToolName() {
|
|
return requiredOrDefault(toolName, DEFAULT_TOOL_NAME);
|
|
}
|
|
|
|
public String resolvedToolLabel() {
|
|
return requiredOrDefault(toolLabel, DEFAULT_TOOL_LABEL);
|
|
}
|
|
|
|
public String resolvedToolDescription() {
|
|
return requiredOrDefault(toolDescription, DEFAULT_TOOL_DESCRIPTION);
|
|
}
|
|
|
|
public String resolvedPromptDescription() {
|
|
return requiredOrDefault(promptDescription, DEFAULT_PROMPT_DESCRIPTION);
|
|
}
|
|
|
|
public String resolvedShowpromptToolName() { return requiredOrDefault(showpromptToolName, DEFAULT_SHOWPROMPT_TOOL_NAME); }
|
|
public String resolvedShowpromptToolLabel() { return requiredOrDefault(showpromptToolLabel, "업무 데이터 SHOWPROMPT"); }
|
|
public String resolvedShowpromptToolDescription() { return requiredOrDefault(showpromptToolDescription, "Select AI SQL 생성 prompt를 조회하는 읽기 전용 진단 도구입니다."); }
|
|
public String resolvedQaVectorSearchToolName() { return requiredOrDefault(qaVectorSearchToolName, DEFAULT_QA_VECTOR_SEARCH_TOOL_NAME); }
|
|
public String resolvedQaVectorSearchToolLabel() { return requiredOrDefault(qaVectorSearchToolLabel, "Select AI 예제 SQL 조회"); }
|
|
public String resolvedQaVectorSearchToolDescription() { return requiredOrDefault(qaVectorSearchToolDescription, "현재 질문에 사용할 유사 예제 SQL을 조회합니다."); }
|
|
public String resolvedQaVectorStoreToolName() { return requiredOrDefault(qaVectorStoreToolName, DEFAULT_QA_VECTOR_STORE_TOOL_NAME); }
|
|
public String resolvedQaVectorStoreToolLabel() { return requiredOrDefault(qaVectorStoreToolLabel, "Select AI 예제 SQL 저장"); }
|
|
public String resolvedQaVectorStoreToolDescription() { return requiredOrDefault(qaVectorStoreToolDescription, "검토된 읽기 전용 답 SQL을 예제로 저장합니다."); }
|
|
public String resolvedFewShotNl2SqlToolName() { return requiredOrDefault(fewShotNl2SqlToolName, DEFAULT_FEW_SHOT_NL2SQL_TOOL_NAME); }
|
|
public String resolvedFewShotNl2SqlToolLabel() { return requiredOrDefault(fewShotNl2SqlToolLabel, "Few-shot NL2SQL 실행"); }
|
|
public String resolvedFewShotNl2SqlToolDescription() { return requiredOrDefault(fewShotNl2SqlToolDescription, "검증된 Few-shot 예제를 참고해 읽기 전용 SQL을 생성·실행합니다."); }
|
|
public String resolvedGameScopeToolName() { return requiredOrDefault(gameScopeToolName, DEFAULT_GAME_SCOPE_TOOL_NAME); }
|
|
public String resolvedGameScopeToolLabel() { return requiredOrDefault(gameScopeToolLabel, "게임 조회 범위 확인"); }
|
|
public String resolvedGameScopeToolDescription() { return requiredOrDefault(gameScopeToolDescription, "질문의 게임 별칭과 데이터 조회 범위를 확인합니다."); }
|
|
|
|
private String requiredOrDefault(String value, String fallback) {
|
|
return value == null || value.isBlank() ? fallback : value.trim();
|
|
}
|
|
}
|