refs #702: externalize HMM structured data catalog
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# HMM 백오피스 사용자·그룹·역할·토큰 관리 전환 (#702)
|
||||
|
||||
> 상태: Implementing
|
||||
> 상태: Implemented
|
||||
> 추적: Redmine #702 / Git 브랜치: `hmm-backoffice`
|
||||
> 대상: `hmm-backoffice.cloud-handson.com`, HMMAIPOC / `ADMIN`
|
||||
|
||||
@@ -56,6 +56,22 @@ HMM_KNOWLEDGE_DOCUMENTS ──< HMM_KNOWLEDGE_CHUNKS ──< HMM_KNOWLEDGE_TAGS
|
||||
멱등적으로 준비하고 `CB_VECTOR_*` 조회 호환 뷰를 갱신한다. 기존 물리 `CB_VECTOR_*` 테이블이
|
||||
존재하는 환경은 덮어쓰지 않는다.
|
||||
|
||||
### 재사용 가능한 정형 원장 카탈로그
|
||||
|
||||
- `/structured-data`와 `/schema-metadata`의 데이터 원본명, Oracle owner, 안내 문구, 최대 조회 건수,
|
||||
허용 테이블 목록은 Java·HTML에 하드코딩하지 않는다.
|
||||
- 기본 HMM 정의는 `src/main/resources/config/structured-data-catalog.json`에 둔다. 배포 환경에서는
|
||||
`BACKOFFICE_STRUCTURED_DATA_CATALOG_LOCATION=file:/.../structured-data-catalog.json`으로 외부
|
||||
JSON을 지정할 수 있어 다른 회사 PoC에서 애플리케이션 코드를 수정하지 않고 재사용할 수 있다.
|
||||
- 각 테이블 정의는 `key`, `tableName`, `businessName`, `description`을 기본으로 하고 필요하면
|
||||
`previewColumns`, `maskingPolicyName`을 추가한다. 화면 카드, metadata 대상, 실제 SELECT 허용 목록,
|
||||
ASO 관리 대상은 모두 이 단일 JSON을 기준으로 생성한다. VECTOR/BLOB 등 JDBC 원장 미리보기에
|
||||
부적합한 컬럼은 `previewColumns`에서 제외하되 DB 메타데이터 화면에는 계속 표시한다.
|
||||
- owner와 table name은 Oracle 단순 식별자 규칙, key는 URL key 규칙으로 시작 시 검증한다. 중복 key,
|
||||
중복 table, 빈 목록, 허용 범위를 벗어난 row limit은 기동 실패로 처리해 동적 SQL 범위를 닫는다.
|
||||
- HMM 기본 카탈로그는 `ADMIN`의 조직, 직원, 휴가 잔여, 휴가 신청, 일별 근태, HR 표준 용어 원장만
|
||||
노출한다. 기존 `KBAIPOC`, `POC_2`, `KB_*` 보험 원장은 HMM 배포 카탈로그에 포함하지 않는다.
|
||||
|
||||
## HMM MCP 및 시스템 설정
|
||||
|
||||
- 운영 MCP 주소는 환경변수 `BACKOFFICE_HMM_MCP_PUBLIC_URL`로 관리하며 기본값은
|
||||
@@ -88,3 +104,15 @@ HMM_KNOWLEDGE_DOCUMENTS ──< HMM_KNOWLEDGE_CHUNKS ──< HMM_KNOWLEDGE_TAGS
|
||||
|
||||
애플리케이션은 이전 JAR로 되돌릴 수 있다. 새 `HMM_ACCESS_*` 테이블은 운영 데이터가 생긴 뒤에는
|
||||
삭제하지 않으며, 문제 발생 시 화면 매퍼만 이전 버전으로 복구한다.
|
||||
|
||||
## 2026-07-23 배포·전수 검증
|
||||
|
||||
- 운영 JSON: `/home/opc/apps/vpd-backoffice/config/structured-data-catalog.json`
|
||||
- systemd override: `20-structured-data-catalog.conf`
|
||||
- 자동 테스트: `mvn test` 103건 통과
|
||||
- 브라우저 검증: 로그인 세션으로 메뉴 URL 26개 전부 HTTP 200, 오류 alert 0건, `ORA-` 0건,
|
||||
`KBAIPOC`/`POC_2`/KB 보험원장 표시 0건, page error 0건, console error 0건
|
||||
- 정형 원장 실데이터: 조직 1행, 직원 7행, 휴가 잔여 7행, 휴가 신청 8행, 일별 근태 14행,
|
||||
HR 표준 용어 21행 렌더링 확인
|
||||
- 용어 원장의 VECTOR 컬럼은 `previewColumns`에서 제외해 관리자 미리보기에는 사람이 읽을 수 있는
|
||||
표준 코드·명칭·설명·임베딩 시각만 표시하고, DB 메타데이터 관리에서는 전체 컬럼을 유지한다.
|
||||
|
||||
60
docs/reports/2026-07-23-hmm-backoffice-full-browser-audit.md
Normal file
60
docs/reports/2026-07-23-hmm-backoffice-full-browser-audit.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# HMM 백오피스 전 화면 브라우저 검증
|
||||
|
||||
- 검증일: 2026-07-23 KST
|
||||
- 대상: `https://hmm-backoffice.cloud-handson.com`
|
||||
- 인증: 운영 관리자 로그인 세션
|
||||
- 브라우저: Playwright Chromium, 1440×1000
|
||||
- 추적: Redmine #702
|
||||
|
||||
## 판정 기준
|
||||
|
||||
각 URL을 직접 열어 HTTP 200, 주 제목 렌더링, 오류 alert 부재를 검사했다. 본문에서 `ORA-`,
|
||||
`데이터 처리 오류`, `Whitelabel Error Page`, `KBAIPOC`, `POC_2`, KB 보험원장 테이블명을 탐지하고,
|
||||
브라우저 page error와 console error도 수집했다.
|
||||
|
||||
## 메뉴 결과
|
||||
|
||||
| 영역 | URL | 결과 |
|
||||
| --- | --- | --- |
|
||||
| 대시보드 | `/` | PASS |
|
||||
| 사용자 | `/users` | PASS |
|
||||
| 접근 그룹 | `/groups` | PASS |
|
||||
| 역할 | `/roles` | PASS |
|
||||
| 행 접근 규칙 | `/permissions` | PASS |
|
||||
| 컬럼 원문 표시 허용 | `/user-masking-rules` | PASS |
|
||||
| 권한 현황 | `/effective-matrix` | PASS |
|
||||
| 보호 상태 | `/vpd-policies` | PASS |
|
||||
| 컬럼 마스킹 | `/masking-rules` | PASS |
|
||||
| 토큰 발급 | `/tokens` | PASS |
|
||||
| 접근 검증 | `/probe` | PASS |
|
||||
| 조회 대상 | `/objects` | PASS |
|
||||
| 정형 데이터 조회 | `/structured-data` | PASS |
|
||||
| 조회 연동 | `/ords-handlers` | PASS |
|
||||
| 지식자료 관리 | `/vector-knowledge` | PASS |
|
||||
| 대화형 검색 | `/mcp-chatbot` | PASS |
|
||||
| 검색 해석 | `/mcp-reasoning` | PASS |
|
||||
| MCP 서비스 | `/mcp-sse` | PASS |
|
||||
| 연동 점검 | `/mcp-client-demo` | PASS |
|
||||
| 운영 현황 | `/operation-status` | PASS |
|
||||
| 행 접근 필터 구조 | `/vpd-filter-runtime` | PASS |
|
||||
| DB 메타데이터 | `/schema-metadata` | PASS |
|
||||
| 보안 SQL 스크립트 | `/security-sql-scripts` | PASS |
|
||||
| 고급 접근 조건 | `/vpd-filter-policies` | PASS |
|
||||
| 시스템 설정 | `/settings` | PASS |
|
||||
| DB 준비 상태 | `/settings/database` | PASS |
|
||||
|
||||
총 26개 URL이 모두 통과했다. 오류 alert, KB/POC 잔재, page error, console error는 각각 0건이다.
|
||||
|
||||
## HMM 정형 원장 결과
|
||||
|
||||
| JSON key | 테이블 | 렌더링 행 | 결과 |
|
||||
| --- | --- | ---: | --- |
|
||||
| `teams` | `ADMIN.HMM_ORG_TEAMS` | 1 | PASS |
|
||||
| `employees` | `ADMIN.HMM_HR_EMPLOYEES` | 7 | PASS |
|
||||
| `leave-balances` | `ADMIN.HMM_LEAVE_BALANCES` | 7 | PASS |
|
||||
| `leave-requests` | `ADMIN.HMM_LEAVE_REQUESTS` | 8 | PASS |
|
||||
| `attendance-daily` | `ADMIN.HMM_ATTENDANCE_DAILY` | 14 | PASS |
|
||||
| `hr-terms` | `ADMIN.HMM_HR_TERMS` | 21 | PASS |
|
||||
|
||||
`HMM_HR_TERMS.EMBEDDING`은 VECTOR이므로 JSON `previewColumns`에서 제외했다. 이 설정으로 원장
|
||||
미리보기는 21개 용어를 정상 표시하며, VECTOR 자체는 용어 검색 기능에서 계속 사용한다.
|
||||
Reference in New Issue
Block a user