Files
2026-06-26 16:32:38 +09:00

3.0 KiB

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_ORDS user, 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 렌더링을 통과한다.