refs #739: preserve Smilegate changes before repository layout migration
This commit is contained in:
@@ -26,6 +26,13 @@
|
||||
6. Streamlit 외피는 Smilegate 프로필·게임 데이터 시나리오·`oracle.select_ai.smilegate_game_text2sql` MCP 하나만 노출한다. 이전 고객용 토큰 프리셋 및 감사·보안관리 탭은 기본 실행 경로에서 제외한다.
|
||||
7. `/schema-metadata`의 테이블 comment·컬럼 comment·annotation 조회와 저장 DDL은 모두 `SchemaMetadataMapper`로 수행한다. 메타데이터 조회는 `SGMP_POC` owner와 허용된 테이블 목록으로 한정한다.
|
||||
|
||||
## 메타데이터 화면 표시 원칙
|
||||
|
||||
테이블 comment, 컬럼 comment, annotation의 값은 목록에서 바로 읽을 수 있어야 한다.
|
||||
접기/펼치기는 수정 입력란을 여는 용도로만 사용하며, 값의 존재 여부를 판단하기 위해
|
||||
사용자가 모든 컬럼을 열어 보게 하지 않는다. comment가 비어 있는 컬럼은 목록에서
|
||||
`컬럼 comment 없음`으로 명시한다.
|
||||
|
||||
## 설계 결정
|
||||
|
||||
### 1. 업무 용어는 데이터 모델의 사실에 맞춘다
|
||||
@@ -68,7 +75,7 @@ MCP tool은 `SGMP_POC_HAIKU45` 프로파일을 기준으로 게임 데이터의
|
||||
| 행 접근 화면 | `templates/permissions.html`, `static/js/app.js`, `PermissionView.java` | 보험 용어와 존재하지 않는 KB SQL 예시 제거 |
|
||||
| 마스킹 화면 | `templates/masking-rules.html`, `templates/user-masking-rules.html`, `MaskingPolicySynchronizer.java` | 게임 데이터 예시 및 실제 `SGMP_POC` 관리 대상 사용 |
|
||||
| VPD/운영 화면 | `templates/vpd-filter-runtime.html`, `templates/operation-status.html` | 게임 데이터 상태 표시 예시 적용 |
|
||||
| MCP 화면 | `templates/mcp-sse.html`, `McpSseService.java`, `SmilegateSelectAiService.java` | 게임 데이터 Select AI 도구, 토큰 검증 및 SHOWSQL 생성 |
|
||||
| MCP 화면 | `templates/mcp-sse.html`, `McpSseService.java`, `SelectAiService.java` | 업무 데이터 Select AI 도구, 토큰 검증 및 SHOWSQL 생성 |
|
||||
| 보안 스크립트 화면 | `SecuritySqlScriptService.java` | UI에 노출되는 KB 설명을 게임 데이터 설명으로 교체 |
|
||||
| Streamlit 외피 | `poc4_active_source_20260714/config/`, `apps/poc4/mcp_discovery_ui.py` | Smilegate 로그인/헤더/시나리오와 단일 게임 Text2SQL MCP 계약 적용 |
|
||||
| 스키마 메타데이터 | `SchemaMetadataService.java`, `SchemaMetadataMapper.java`, `SchemaMetadataMapper.xml` | 직접 JDBC 제거, MyBatis 조회·DDL 통일, `SGMP_POC` owner 조건 강제 |
|
||||
|
||||
@@ -49,6 +49,13 @@
|
||||
4. 실행 뒤에는 현재 답변, 생성 SQL, 조회 행, 판정, 판정 근거를 표시하고 `SG_AI_QA_ANSWER`에 저장한다.
|
||||
5. 같은 질문의 과거 답변은 최신 순 표로 보여 주며, 과거 기준 검증과 현재 실행을 구분한다.
|
||||
|
||||
## 실행 근거 표시와 가독성
|
||||
|
||||
선택 질문의 기준 답변과 기준 SQL은 브라우저의 다크 테마 설정과 관계없이
|
||||
밝은 배경과 어두운 글자로 표시한다. 질의 실행이 끝난 뒤에는 요약 답변만
|
||||
보여 주지 않고, 실제 MCP가 반환한 생성 SQL과 조회 결과 테이블을 기본으로
|
||||
펼쳐서 함께 보여 준다. 결과 행이 없으면 그 사실을 명확히 표시한다.
|
||||
|
||||
## 적재 기준
|
||||
|
||||
- 기준 원본은 `sgmp-select-ai-full-qa-term-dict-final-v2-20260721.md`와 동시 생성된 JSON이다.
|
||||
|
||||
35
docs/design/743-game-identity-duality-vector/README.md
Normal file
35
docs/design/743-game-identity-duality-vector/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
# 743 · 게임 식별 JSON Duality View 검색
|
||||
|
||||
## 프로젝트 개요
|
||||
|
||||
게임 질의 계획기는 DB 카탈로그를 사용해 게임 대상과 실행 작업을 결정한다. 현재는 LLM mention 추출 결과만 벡터 검색에 전달하므로, 질문에 명시된 `GAME_ID`가 mention에서 빠지면 게임을 찾지 못한다.
|
||||
|
||||
## 목표
|
||||
|
||||
게임명·별칭·`GAME_ID`·`GAME_PREFIX`·카탈로그 키를 하나의 DB JSON 문서로 표현하고 그 문서를 임베딩 원본으로 사용한다. 게임 식별 표현은 모두 mention 추출 대상이며, 검색·결과 식별은 DB 카탈로그만 사용한다.
|
||||
|
||||
## 설계
|
||||
|
||||
1. `sg_game_extract_mentions`는 정식 게임명, 별칭, `GAME_ID`, `GAME_PREFIX`, 카탈로그 키를 동등한 게임 대상 표현으로 추출한다.
|
||||
2. `sg_game_catalog_identity_dv` JSON Relational Duality View는 게임별 식별 문서를 제공한다.
|
||||
3. `sg_game_catalog.embedding`은 Duality View의 JSON 문서 직렬화 결과로 다시 생성한다.
|
||||
4. `sg_game_catalog_search`는 해당 embedding을 검색한다. 따라서 입력 표현이 어떤 필드와 일치하더라도 같은 게임 문서로 수렴한다.
|
||||
|
||||
## JSON 문서 계약
|
||||
|
||||
```json
|
||||
{
|
||||
"_id": "카탈로그 키",
|
||||
"gameId": "게임 ID",
|
||||
"gamePrefix": "게임 prefix 또는 null",
|
||||
"gameName": "정식 게임명 또는 null",
|
||||
"gameAliases": "등록 별칭 JSON"
|
||||
}
|
||||
```
|
||||
|
||||
## 검증
|
||||
|
||||
- `STOVE_CHAOSZERO`처럼 등록된 `GAME_ID`가 `game_mentions`에 포함된다.
|
||||
- planner 결과가 `NONE`이 아니라 카탈로그의 단일 게임 target을 반환한다.
|
||||
- `game_id가 STOVE_CHAOSZERO인 2026년 7월 15일 매출 합계`는 공통 매출 task를 생성·실행한다.
|
||||
- 새 게임 또는 별칭을 DB 카탈로그에 추가하고 문서·embedding만 재생성하면 애플리케이션 수정 없이 검색된다.
|
||||
22
docs/design/744-std18-filtered-sales-aggregate/README.md
Normal file
22
docs/design/744-std18-filtered-sales-aggregate/README.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# STD-18 필터 매출 집계 Few-shot 정정
|
||||
|
||||
## 목표
|
||||
|
||||
`전체 매출에서 금액 조건을 만족하는 주문` 질문은 개별 주문 목록이 아니라, 조건을 적용한 전체 매출 집계(총매출·구매자 수·주문 수)를 반환한다.
|
||||
|
||||
## 문제
|
||||
|
||||
`STD-18` 고객 기준과 맞지 않는 개별 주문 상세 Few-shot이 관리 화면에 남아 있었다. 해당 레코드는 특정 고객 날짜와 금액을 고정한 SQL이라 재사용 가능한 패턴도 아니다.
|
||||
|
||||
## 변경
|
||||
|
||||
1. 잘못된 `STD-18` 고객 Few-shot 레코드를 삭제한다. 고객 기준 질문은 평가 기준으로만 보관한다.
|
||||
2. 질문·날짜·금액·결과값을 고정하지 않은 `FILTERED_SALES_AGGREGATE` 일반 패턴을 만든다.
|
||||
3. 일반 패턴은 금액 필터 뒤 `SUM`, `COUNT(DISTINCT ...)`, `COUNT(*)` 집계를 사용하며, 사용자가 명시적으로 목록/상세를 요구한 경우에만 상세 패턴을 사용하도록 설명한다.
|
||||
4. `STD-18` 기준 SQL과 기준 답변을 집계 기준으로 되돌린다.
|
||||
|
||||
## 검증 기준
|
||||
|
||||
- 잘못된 예제 #57은 더 이상 `sg_qa_vector_example`에 존재하지 않는다.
|
||||
- 벡터 검색 결과에 일반 집계 패턴이 포함된다.
|
||||
- 포털 전체 경로에서 STD-18이 집계 SQL과 한 행 결과를 반환하고 평가가 PASS다.
|
||||
Reference in New Issue
Block a user