Skip to content

공통 메뉴 관리와 프로비저닝 전 프리뷰 설계 ​

설계 원칙 ​

Portal Foundation은 모든 포탈에 같은 프레임·테마·반응형 메뉴 동작을 제공하지만, 메뉴의 실제 업무 의미는 포탈마다 다르다. 따라서 메뉴 관리 기능은 공통 UI 패키지로 제공하고, 메뉴 데이터의 소유·운영은 각 포탈이 담당한다. DirectoryService는 신규 생성 시 기본 메뉴 Seed와 프리뷰를 제공할 수 있지만, 생성 이후 포탈별 메뉴의 일상 변경을 중앙에서 강제하지 않는다. 1

공통으로 제공하는 것: 메뉴 모델, 메뉴 프레임 렌더링, 메뉴 관리 화면, 접근성·테마·권한 평가 계약.

포탈별로 관리하는 것: 메뉴명, 경로, 아이콘, 순서, 그룹, 노출 권한, 활성 상태, 외부 링크와 실제 도메인 기능 연결.

공통 메뉴 모델 ​

각 포탈은 아래 필드를 포함한 메뉴 항목을 자체 저장소에 보관한다. 공통 UI는 이 모델을 입력으로 받아 좌측 메뉴·모바일 메뉴·현재 위치 표시를 일관되게 렌더링한다.

필드설명예시
id포탈 내부의 불변 메뉴 식별자menu_process_library
key코드·권한·프리뷰에서 쓰는 안정적인 키process-library
parentId메뉴 그룹 또는 상위 메뉴group_operations
type링크, 그룹, 외부 링크, 구분선 등 렌더링 방식LINK
label현재 언어의 메뉴명프로세스 라이브러리
href내부 경로 또는 외부 URL/process-library
icon공통 UI에서 허용한 아이콘 키Network
sortOrder같은 수준의 표시 순서20
requiredScopes표시·접근에 필요한 최소 scope["process:read"]
visibility모든 사용자, 로그인 사용자, 관리자 등 노출 정책AUTHENTICATED
enabled메뉴 활성 여부true
systemReserved삭제가 제한되는 시스템 메뉴 여부true 또는 false

권한은 메뉴를 숨기는 용도로만 사용하지 않는다. 실제 페이지와 API도 동일한 scope를 검증해야 하며, 메뉴 비노출은 보조 UX 수단이다. 2

포탈별 메뉴 관리 화면 ​

새 포탈 템플릿에는 관리자 → 메뉴 관리를 포함한다. 공통 UI 패키지는 아래 컴포넌트와 검증 도구를 제공하고, 개별 포탈은 자신의 메뉴 저장 API에 연결한다.

공통 요소역할
PortalMenuManagement메뉴 목록, 생성·수정·비활성화, 정렬과 권한 편집을 제공한다.
PortalNavigation저장된 메뉴 구성으로 데스크톱 좌측 메뉴와 모바일 메뉴를 렌더링한다.
validatePortalMenu중복 키, 잘못된 경로, 순환 부모 관계, 허용되지 않은 아이콘·scope를 검증한다.
buildPortalMenuPreview저장 전 메뉴 Seed를 포탈 프레임의 프리뷰 모델로 만든다.
ReservedMenuPolicy홈, 프로필, 관리자 등 시스템 메뉴의 수정·삭제 범위를 제어한다.

포탈은 메뉴를 변경할 때 사용자·그룹·권한 정책과 함께 감사 기록을 남긴다. systemReserved 메뉴는 이름·아이콘·순서는 조정할 수 있어도 중앙 로그인, 프로필, 관리자 진입에 필요한 최소 경로를 무단 삭제하지 못하도록 정책을 둔다.

신규 포탈 생성 전 프리뷰 ​

DirectoryService의 신규 포탈 생성 흐름은 실제 외부 리소스를 만들기 전에 다음 두 단계를 둔다.

단계운영자가 확인·조정하는 내용외부 리소스 생성 여부
설정 입력포탈 식별자, 표시명, 배포 공급자, URL, 설명, 온프레미스 배포 라벨생성하지 않음
프레임·메뉴 프리뷰라이트·다크 테마의 포탈 프레임, 로고 자리, 기본 메뉴 Seed, 관리자 메뉴, 동기화·사전·권한 적용 배지생성하지 않음
생성 확인최종 입력값과 자동 설정·보안 경계 확인확인 후에만 생성
프로비저닝 결과저장소·배포 대상·연동 상태, 일회성 Key·온프레미스 전달 안내생성됨

프리뷰는 실제 포탈 소스나 배포 환경을 만들지 않는 순수한 클라이언트 모델이어야 한다. 그 결과는 portalId, 선택한 테마, 브랜드 기본값, 메뉴 Seed, 예상 권한 배지로 구성하고, 비밀값·API Key·인프라 토큰은 프리뷰에 포함하지 않는다. 프리뷰에서 저장한 메뉴 Seed는 생성 요청의 검증 가능한 일부가 되며, 템플릿의 포탈별 메뉴 데이터로 전달한다.

최소 기본 메뉴 Seed ​

공통 템플릿은 업무 도메인을 가정하지 않는 아래 최소 메뉴만 제공한다. 각 포탈 관리자는 생성 후 메뉴 관리에서 새 업무 메뉴를 추가하거나 필요 없는 초기 메뉴를 비활성화한다.

키기본 표시명경로정책
home홈/시스템 예약, 활성 상태 유지
workspace업무 공간/workspace일반 사용자용 빈 상태·확장 시작점
admin관리자/admin관리자에게만 노출, 시스템 예약
profile내 정보/profile로그인 사용자에게 노출, 시스템 예약

기존 포탈의 구체적인 메뉴, 예를 들어 프로세스센터의 프로세스 라이브러리와 전결규정은 이 기본 Seed가 아니라 해당 포탈의 메뉴 관리 데이터로 유지한다. 공통 UI는 그 메뉴를 동일한 프레임과 상호작용 규칙으로 표현한다.

구현 순서 ​

  1. @hohyun94/portal-foundation에 메뉴 타입·검증기·프레임 렌더러·관리 UI 컴포넌트를 추가한다.
  2. 새 포탈 템플릿에 메뉴 저장 스키마·관리 API·관리자 라우트를 추가한다.
  3. DirectoryService 프로비저닝 요청에 검증된 menuSeed와 프리뷰 설정을 포함하고, 템플릿 초기화 단계에서 이를 적용한다.
  4. DirectoryService 신규 포탈 생성 화면에 프레임·메뉴 프리뷰와 명시적 생성 확인 단계를 추가한다.
  5. 포탈 프레임, 권한·접근성, 모바일 메뉴, 메뉴 변경 감사 이력을 계약·브라우저 테스트로 검증한다.

References ​