신규 UI 기능 QA 가이드 (2026-06-19 배포분)
이 문서는 2026-06-19 prod 에 배포된 UI 기능들을 실제 브라우저(prod, gend.genon.ai)에서 시나리오별 시드 데이터를 넣고 단계별로 검증한 결과를 스크린샷과 함께 정리한다. 각 기능의 자동 회귀 테스트 커버리지도 함께 명시한다.
검증 환경: prod
gend.genon.ai, 실제 Keycloak 인증(QA 검증 계정 — admin 권한, 데모 워크스페이스 멤버). 콘솔 5xx 0건.
회귀 테스트 매트릭스
| 기능 | PR | 백엔드 테스트 | UI 단위 테스트 | 브라우저 E2E |
|---|---|---|---|---|
| JDBC 연결 가이드 (#1157) | #2222 | 2 (URL 자리표시자·등록 가드·커버리지) | 4 (렌더·자리표시자·탭·에러재시도) | ✅ 본 문서 §1 |
| 워크스페이스 격리 시각화 (#1149) | #2223 | 트리 shape·테넌트 펜스 | 5 (4계층·고아 서브트리·전환 경합) | ✅ 본 문서 §2 (시드 RG) |
| Saved Query 메타데이터 (#1152) | #2225 | 26 + 4 회귀(purpose 422·길이 422·LIKE escape) | 3 (메타 렌더·purpose select 고정도메인·빈값 null 정규화) | ✅ 본 문서 §3 (시드 쿼리) |
| 피처 등록 다이얼로그 (#1269/#1270) | #2210 | — | 7 (카탈로그 드롭다운·3-segment 가드·stale 응답 경합) | ✅ 본 문서 §4 |
| 컴플라이언스 재활성화 (#1090/#1091) | #2214 | T6 admin-gate + 8 tree | 11 CRUD | ✅ 본 문서 §5 |
§1. JDBC 연결 가이드 (#1157)
경로: 사이드바 → JDBC 연결 가이드 (/jdbc-guide)
시드 데이터: 별도 불필요 — 호출자(QA 검증 계정)의 DataGrant 로 보이는 카탈로그를 자동 표시.
- 로그인 후 사이드바에서 JDBC 연결 가이드 진입.
- 연결 정보 카드: Trino 코디네이터 host/port/SSL/auth + JDBC URL 템플릿. 토큰은 항상
<YOUR_JWT>자리표시자(실토큰 미노출). - 클라이언트별 설정 탭: DBeaver / Tableau / Superset / Power BI.
- 접근 가능한 카탈로그: DataGrant 필터링된 카탈로그/스키마.

✅ 검증:
/jdbc-guide200,jdbc:trino://+<YOUR_JWT>자리표시자 노출(실토큰 0), 4 클라이언트 탭, DataGrant 필터 카탈로그(gend_pg) 표시. 콘솔 에러 0.
§2. 워크스페이스 격리 시각화 (#1149)
경로: 사이드바 → 보안 → Workspace Isolation (/admin/workspaces/isolation, admin 전용)
시드 데이터: finance-invest 워크스페이스에 부모 ResourceGroup(투자팀) + 자식 ResourceGroup(애널리스트) 2건을 시드 → L2 계층 표시 검증 후 삭제(접근권한 변경 없는 grouping-only 시드).
- 격리 화면 진입 → 워크스페이스 선택기에서 금융 인텔리전스 (finance-invest) 선택.
- L0 — 워크스페이스(테넌트 경계): 이름/slug/active/keycloak 경로.
- L1 — Keycloak 그룹 바인딩:
/tenants/finance-invest. - L2 — 리소스 그룹 계층 (2):
qa-guide-invest-team(투자팀) 아래qa-guide-invest-analysts(애널리스트)가 들여쓰기로 부모-자식 계층 렌더. - L3 — 데이터 권한(DataGrant) 요약: privilege/object-type 분포(시드 없을 시 "항목이 없습니다").

✅ 검증: 시드한 부모→자식 ResourceGroup 이 L2 에 들여쓰기 계층으로 정확히 렌더. 회귀 테스트는 (a) 4계층 전체 렌더, (b) 부모가 워크스페이스 밖인 고아 ResourceGroup 의 자식 노드 누락 방지, (c) 워크스페이스 빠른 전환 시 stale 트리 응답이 최신 선택을 덮어쓰지 않음(요청 시퀀스 가드)을 커버. 검증 후 시드 RG 2건 삭제(접근권한 무변경).
§3. Saved Query 데이터셋 메타데이터 (#1152)
경로: SQL 편집기 → 저장됨 탭
시드 데이터: folder_path=분석/매출, purpose=analysis 를 가진 Saved Query 1건 시드.
- SQL 편집기에서 저장됨 탭 클릭.
- 시드한 쿼리 카드에 폴더(📁 분석/매출) + 목적(analysis) + 버전(v…) 배지 + 출처(← iceberg.silver.sales) 표시.

- 쿼리 행의 수정 버튼 → 쿼리 수정 다이얼로그.
- 폴더(자유 입력) + 목적(고정 도메인
<select>— analysis/modeling/report/adhoc + 미지정). 자유 문자열 입력 불가(계약 강제).

✅ 검증: 카드에 folder/purpose/version/source_tables 표시. 수정 다이얼로그의 목적은 4값 고정 select(자유 입력 제거). prod 백엔드 스모크:
purpose=bogus→ HTTP 422(Literal 검증),purpose=analysis→ 201. 회귀 테스트: purpose 422 / folder_path 길이 422 /folder_prefixLIKE 와일드카드 escape(a_b가axb미매칭) / UI select 고정 도메인 / 빈값→null 정규화.
§4. 피처 등록 다이얼로그 — 카탈로그 백엔드 드롭다운 (#1269/#1270)
경로: ML 허브 → 데이터 & 피처 → + 피처 등록
시드 데이터: 기존 카탈로그/스키마/테이블(iceberg.silver.*) 메타데이터 활용.
- 피처 스토어에서 + 피처 등록 → 피처 등록 다이얼로그.
- 엔티티 키 / 소스 컬럼: 카탈로그 기반 콤보박스(자유 입력도 허용).
- 소스 테이블: 카탈로그 → 스키마 → 테이블 3-segment 캐스케이드 콤보박스.

✅ 검증: 모든 입력이 카탈로그 기반 드롭다운. 회귀 테스트: catalog→schema→table 합성, 2-segment 미완성은 source_table 로 저장 안 됨(3-segment 가드), 이전 카탈로그의 늦은 schema 응답이 현재 선택을 덮어쓰지 않음(요청 토큰 가드), 카탈로그 fetch 실패 시 freeform 폴백.
§5. 컴플라이언스 Manager — soft-delete 가시화 + 재활성화 (#1090/#1091)
경로: 거버넌스 → 컴플라이언스 → 관리 (Manager Sheet)
시드 데이터: 기존 프레임워크(신용정보보법/전자금융거래법 등) 트리.
- 컴플라이언스 대시보드에서 관리 → 컴플라이언스 관리 시트.
- 탭: 프레임워크 / 비활성 포함 / + 신규 Framework. 비활성 포함 토글로 soft-delete 된 프레임워크 노출, 행의 ↺ 버튼으로 재활성화.
- 트리는 단일 호출(N+1 제거)로 프레임워크 + 카테고리 + 체크항목을 중첩 로드.

✅ 검증: Manager Sheet 가 단일 트리 호출로 로드.
include_inactive=true는 admin 전용(비-admin 403 회귀 테스트 T6) — UI 게이팅에만 의존하지 않음. CRUD 11 + tree 8 단위 테스트.
부록 — 시드 데이터 정리 정책
- ResourceGroup 시드(§2): 접근권한(DataGrant) 미부여 grouping-only 객체로 생성 → 스크린샷 후 즉시 삭제(finance-invest 트리 0건 복원 확인). 접근제어 영향 0.
- Saved Query 시드(§3): 무해한 데모 쿼리(읽기 SQL). 데모 데이터로 유지 가능.
- prod 데이터 변경을 남기지 않는 것이 원칙 — 접근제어/권한 객체는 검증 직후 정리.