Redmine #495 - 설정/초기화 preflight와 DDL 실행 결과 상세화 설계
프로젝트 개요
VPD Backoffice는 Oracle Database VPD/ORDS 기능을 백오피스 권한 테이블로 제어하는 Spring Boot 관리 도구다. 사용자는 Oracle DB schema user가 아니라 Bearer Token으로 식별되는 application user이며, 사용자/그룹/역할/권한/행 규칙/컬럼 NULL 처리 설정이 VPD policy function과 ORDS 조회 결과에 반영된다.
목표
DB 연결을 다른 ADB나 schema로 바꿨을 때 운영자가 현재 준비 상태를 한 화면에서 판단하고, 앱에서 실행 가능한 초기화 DDL과 sqlcl로 실행해야 하는 작업을 구분해 처리할 수 있게 한다.
현재 문제
/settings화면은 지원 테이블 생성 버튼과 단순 결과 표만 제공한다.- 현재 연결 사용자와 ORDS parsing schema 권장 구성을 분리해서 보여주지 않는다.
- 필수 테이블, 시퀀스, 컬럼, constraint, VPD context/function/policy, CB_ORDS grants, ORDS enablement 상태를 한 번에 확인하기 어렵다.
- 실행 전에 어떤 SQL이 수행되는지 확인하기 어렵다.
- DDL 실패 시 전역 오류나 짧은 메시지로 끝나 운영자가 어떤 단계에서 실패했는지 파악하기 어렵다.
설계
- 설정 화면에
DB 준비 상태섹션을 추가한다.- 현재 연결 사용자
- 권장 ORDS parsing schema:
CB_ORDS - 앱에서 실행 가능 여부와 sqlcl 필요 여부
- preflight 항목을 레이어별로 표시한다.
- Backoffice Metadata: 지원 테이블, 시퀀스, 컬럼
- Constraint/Index: 주요 PK/UK constraint
- VPD Runtime:
CB_AGENT_CTX,CB_AGENT_CTX_PKG,CB_AGENT_DOC_VPD_FILTER,CB_AGENT_CAN_READ_COLUMN, 적용 policy 존재 여부 - ORDS Runtime:
CB_ORDSuser, ORDS schema enablement,CB_ORDS_HANDLER_PKG - Grants:
CB_ORDS에 필요한 EXECUTE/SELECT 권한
- DDL preview를 추가한다.
/settings/schema/initialize버튼이 현재 연결 사용자로 실행할 SQL을 보여준다.- sqlcl로 실행할 스크립트 순서와 대표 grant SQL을 별도로 보여준다.
- DDL 실행 결과를 상세화한다.
- 각 작업의 object, action, status, message, SQL을 표시한다.
- 실패해도 가능한 범위의 결과를 화면에 남겨 운영자가 실패 지점을 확인할 수 있게 한다.
완료 기준
- 설정 화면에서 현재 연결 사용자와 권장 ORDS parsing schema가 보인다.
- 필수 테이블, 시퀀스, 컬럼, constraint, package/context/policy/grants/ORDS enablement 상태가 구분되어 보인다.
- 앱 실행 DDL preview와 sqlcl 실행 순서가 복사 가능한 형태로 보인다.
지원 테이블 생성/확인실행 후 각 DDL의 성공/존재/실패와 SQL을 확인할 수 있다.- DB 연결이 불안정하거나 지원 테이블이 없어도 가능한 preflight 정보는 표시되고, 오류는 화면 alert로 감싼다.
mvn test와 설정 화면 desktop/mobile 렌더링을 통과한다.