53 lines
2.0 KiB
Markdown
53 lines
2.0 KiB
Markdown
# Redmine #726 · Select AI SHOWPROMPT 진단 MCP
|
|
|
|
## 목표
|
|
|
|
기존 Text2SQL 생성·실행 tool과 분리된 읽기 전용 SHOWPROMPT 진단 tool을
|
|
MCP `tools/list`에 추가한다. 일반 질문 처리 Agent는 포털 allowlist를 통해
|
|
기존 tool만 사용하고, FAIL 개선 제안 버튼만 진단 tool을 직접 호출한다.
|
|
|
|
## 외부 설정
|
|
|
|
- `BACKOFFICE_MCP_SHOWPROMPT_TOOL_NAME`
|
|
- `BACKOFFICE_MCP_SHOWPROMPT_TOOL_LABEL`
|
|
- `BACKOFFICE_MCP_SHOWPROMPT_TOOL_DESCRIPTION`
|
|
|
|
기본값은 제품 중립적인 `oracle.select_ai.data_showprompt`와 업무 데이터
|
|
표현을 사용한다. 스마일게이트 운영값은 외부 env에서 고객 전용 이름으로
|
|
설정한다.
|
|
|
|
## 동작
|
|
|
|
1. HTTP Bearer Token을 기존 업무 사용자 토큰으로 검증한다.
|
|
2. prompt를 기존 4,000자 제한으로 검증한다.
|
|
3. schema-owned Select AI 연결에서
|
|
`DBMS_CLOUD_AI.GENERATE(prompt, profile, 'showprompt')`를 호출한다.
|
|
4. SQL을 실행하지 않고 다음 JSON을 반환한다.
|
|
- `status=SHOWPROMPT`
|
|
- `profile`
|
|
- `selectAiPrompt`
|
|
|
|
## 변경 함수
|
|
|
|
| 파일/함수 | 변경 |
|
|
|---|---|
|
|
| `McpProperties` | SHOWPROMPT tool 이름·label·description 외부 설정 |
|
|
| `SelectAiService.generatePrompt` | 인증·prompt 검증 후 SHOWPROMPT 반환 |
|
|
| `SelectAiService.generate` | `showsql/showprompt` action을 bind하는 공통 생성 함수 |
|
|
| `McpSseService.toolsListResult` | Text2SQL과 SHOWPROMPT 두 tool 등록 |
|
|
| `McpSseService.toolsCallResult` | exact tool name에 따라 query/diagnostic 분기 |
|
|
|
|
## 안전 조건
|
|
|
|
- SHOWPROMPT tool은 생성 SQL을 실행하지 않는다.
|
|
- 임의 action 인자를 사용자에게 받지 않는다.
|
|
- 응답에 Bearer Token이나 DB 연결 정보를 포함하지 않는다.
|
|
- 기존 Text2SQL tool 이름과 계약은 유지한다.
|
|
|
|
## 테스트
|
|
|
|
- tools/list에 두 tool과 각 prompt schema가 존재한다.
|
|
- Text2SQL 호출은 기존 generate-and-execute 경로를 유지한다.
|
|
- SHOWPROMPT 호출은 generatePrompt만 실행한다.
|
|
- 누락/비활성 Bearer Token은 기존과 동일하게 거절한다.
|