# Redmine #491 - 권한 추가 Wizard 유효 권한 Preview 설계

## 프로젝트 개요

VPD Backoffice는 Oracle Database VPD/ORDS 기능을 백오피스 권한 테이블로 제어하기 위한 Spring Boot 관리 도구다. 권한 관리 화면은 VPD policy function이 참조할 사용자, 그룹, 역할, 행 규칙, 컬럼 원문 허용 규칙을 저장한다.

## 목표

권한 추가 Wizard에서 저장 전 선택한 역할/객체/행 규칙/컬럼 규칙이 실제로 누구에게 어떤 권한 효과를 주는지 운영자가 확인할 수 있게 한다.

## 문제

현재 preview는 역할, 객체, 행 규칙, 컬럼 정책을 짧게만 보여준다. 그룹 기반 역할 부여가 들어간 상태에서 다음 내용을 저장 전 파악하기 어렵다.

- 선택한 역할이 직접 사용자에게 붙었는지
- 그룹을 통해 어떤 사용자에게 상속되는지
- 선택한 TABLE/VIEW의 컬럼과 행 규칙 대상 컬럼이 무엇인지
- 저장될 VPD filter 조건이 어떤 predicate 모양이 되는지
- 민감 컬럼 중 원문 표시 허용 컬럼과 NULL 처리 대상이 어떻게 갈리는지

## 설계

- `PermissionController`가 사용자-역할, 그룹-역할, 그룹-사용자 데이터를 권한 화면에 추가로 내려준다.
- 역할 `<option>`에 직접 사용자, 역할 보유 그룹, 그룹 상속 사용자 요약을 `data-*`로 넣는다.
- 보호 객체 `<option>`에 전체 컬럼과 마스킹 대상 컬럼 metadata를 유지하고 preview에서 사용한다.
- Wizard 저장 전 검토에 다음 항목을 추가한다.
  - 적용 대상 사용자/그룹 요약
  - 선택 객체 컬럼 목록
  - 행 규칙 predicate preview
  - 컬럼 원문 허용/NULL 처리 preview
- DB 스키마 객체처럼 저장 전 컬럼 metadata가 비동기로 조회되는 경우, 기존 `/permissions/object-columns` 응답을 preview에도 반영한다.

## 완료 기준

- 역할 선택 시 직접 사용자, 그룹, 그룹 상속 사용자 요약이 표시된다.
- 객체 선택 시 컬럼 목록과 마스킹 대상 컬럼 목록이 표시된다.
- 행 규칙 추가/수정 시 저장될 predicate preview가 갱신된다.
- 원문 표시 허용 컬럼 입력/버튼 선택 시 NULL 처리 대상 preview가 갱신된다.
- 기존 권한 저장 동작과 검증 로직은 유지된다.

## 검증

- `mvn test`
- Playwright:
  - `/permissions`에서 역할 영향도 preview 확인
  - 객체 컬럼 preview 확인
  - 행 규칙/컬럼 입력 변경 시 preview 갱신 확인
  - 390px 모바일 body overflow 없음
