# Redmine #493 - 그룹/사용자/역할 Effective Matrix 설계

## 프로젝트 개요

VPD Backoffice는 Oracle Database VPD/ORDS 기능을 백오피스 권한 테이블로 제어하기 위한 Spring Boot 관리 도구다. 백오피스 사용자는 DB schema user가 아니라 Bearer Token으로 식별되는 애플리케이션 사용자이며, ORDS handler가 사용자 컨텍스트를 설정하면 VPD policy function이 사용자/그룹/역할/권한 테이블을 기준으로 행과 컬럼 접근을 제한한다.

## 목표

운영자가 사용자, 그룹, 역할 사이의 권한 상속 결과를 한 화면에서 확인할 수 있게 한다.

## 문제

- 사용자 화면은 직접 역할만 보여준다.
- 그룹 화면은 그룹 사용자와 그룹 역할이 분리되어 있어 상속 결과를 한 번에 보기 어렵다.
- 역할 화면은 역할이 어느 사용자/그룹에 영향을 주는지 보이지 않는다.
- 신규 운영자가 DB user와 백오피스 application user의 차이를 혼동할 수 있다.

## 설계

- `권한 관리 > 유효 권한` 메뉴와 `/effective-matrix` 화면을 추가한다.
- 신규 DB 테이블 없이 기존 조회 결과를 서비스에서 집계한다.
- 사용자 기준:
  - 직접 역할
  - 소속 그룹
  - 그룹 상속 역할
  - 최종 effective roles
  - 연결 권한 수와 보호 객체 목록
- 그룹 기준:
  - 포함 사용자
  - 그룹에 부여된 역할
  - 그룹 역할이 제공하는 권한 수와 보호 객체 목록
- 역할 기준:
  - 직접 부여 사용자
  - 역할이 부여된 그룹
  - 그룹을 통해 영향을 받는 사용자
  - 연결 권한 수와 보호 객체 목록
- 각 기준에는 select 필터를 둬서 한 항목만 빠르게 확인할 수 있게 한다.
- 빈 상태에는 등록 순서를 안내한다.

## 완료 기준

- `/effective-matrix`에서 사용자 선택 시 직접 역할과 그룹 상속 역할이 분리되어 보인다.
- 그룹 선택 시 포함 사용자, 부여 역할, 연결 권한 수가 한 화면에 보인다.
- 역할 선택 시 직접 사용자, 연결 그룹, 그룹 상속 사용자가 보인다.
- 메뉴에서 접근할 수 있다.
- 모바일 390px에서 가로 overflow가 없다.

## 검증

- `mvn test`
- Playwright:
  - `/effective-matrix` desktop/mobile 렌더링
  - 사용자/그룹/역할 select 변경 시 table filter 동작
  - 모바일 overflow 없음
