ui: reshape DDS navigation as management console

This commit is contained in:
devmrko
2026-07-01 08:04:39 +09:00
parent 12b7e00cef
commit 45621e1b7d
7 changed files with 69 additions and 53 deletions

View File

@@ -18,33 +18,34 @@
<span class="badge rounded-pill text-bg-primary ms-2" th:if="${backofficeTrack == 'DDS'}">Deep Data Security</span>
<div class="rw-menu">
<div class="rw-menu-group">
<button class="rw-menu-trigger" type="button" aria-expanded="false">1. 권한 설계</button>
<button class="rw-menu-trigger" type="button" aria-expanded="false" th:text="${backofficeTrack == 'DDS' ? '권한 관리' : '1. 권한 설계'}">1. 권한 설계</button>
<div class="rw-menu-panel">
<a class="nav-link" href="/users">사용자</a>
<a class="nav-link" href="/groups">그룹</a>
<a class="nav-link" href="/roles">역할</a>
<a class="nav-link" href="/permissions">데이터 권한 규칙</a>
<a class="nav-link" href="/effective-matrix">사용자별 최종 권한</a>
<a class="nav-link" href="/users" th:text="${backofficeTrack == 'DDS' ? '사용자 관리' : '사용자'}">사용자</a>
<a class="nav-link" href="/groups" th:text="${backofficeTrack == 'DDS' ? '그룹 관리' : '그룹'}">그룹</a>
<a class="nav-link" href="/roles" th:text="${backofficeTrack == 'DDS' ? '역할 관리' : '역할'}">역할</a>
<a class="nav-link" href="/permissions" th:text="${backofficeTrack == 'DDS' ? '접근 규칙' : '데이터 권한 규칙'}">데이터 권한 규칙</a>
<a class="nav-link" href="/effective-matrix" th:text="${backofficeTrack == 'DDS' ? '권한 현황' : '사용자별 최종 권한'}">사용자별 최종 권한</a>
</div>
</div>
<div class="rw-menu-group">
<button class="rw-menu-trigger" type="button" aria-expanded="false"
th:text="${backofficeTrack == 'DDS' ? '2. 보호 운영' : '2. 보호·검증'}">2. 보호·검증</button>
th:text="${backofficeTrack == 'DDS' ? '보호 정책 관리' : '2. 보호·검증'}">2. 보호·검증</button>
<div class="rw-menu-panel">
<a class="nav-link" th:href="${backofficeTrack == 'DDS' ? '/dds-protection' : '/vpd-policies'}"
th:text="${backofficeTrack == 'DDS' ? '보호 상태' : 'DB 보호 연결'}">DB 보호 연결</a>
<a class="nav-link" href="/dds-provision" th:if="${backofficeTrack == 'DDS'}">권한 게시</a>
th:text="${backofficeTrack == 'DDS' ? '정책 상태' : 'DB 보호 연결'}">DB 보호 연결</a>
<a class="nav-link" href="/dds-provision" th:if="${backofficeTrack == 'DDS'}">정책 적용</a>
<a class="nav-link" href="/tokens" th:if="${backofficeTrack != 'DDS'}">검증 세션 발급</a>
<a class="nav-link" href="/probe" th:if="${backofficeTrack != 'DDS'}">권한 결과 확인</a>
<a class="nav-link" href="/dds">보호 범위</a>
<a class="nav-link" href="/dds" th:if="${backofficeTrack == 'DDS'}">보호 대상 관리</a>
<a class="nav-link" href="/dds" th:if="${backofficeTrack != 'DDS'}">DDS 직접 조회</a>
</div>
</div>
<div class="rw-menu-group">
<button class="rw-menu-trigger" type="button" aria-expanded="false" th:text="${backofficeTrack == 'DDS' ? '지식 접근' : '연동 도구'}">연동 도구</button>
<button class="rw-menu-trigger" type="button" aria-expanded="false" th:text="${backofficeTrack == 'DDS' ? '지식자료 관리' : '연동 도구'}">연동 도구</button>
<div class="rw-menu-panel">
<a class="nav-link" href="/objects" th:if="${backofficeTrack != 'DDS'}">ORDS 조회 대상</a>
<a class="nav-link" href="/ords-handlers" th:if="${backofficeTrack != 'DDS'}">ORDS 핸들러</a>
<a class="nav-link" href="/vector-knowledge" th:text="${backofficeTrack == 'DDS' ? '지식자료와 접근 권한' : '지식 검색 관리'}">지식 검색 관리</a>
<a class="nav-link" href="/vector-knowledge" th:text="${backofficeTrack == 'DDS' ? '지식자료 등록 및 검색' : '지식 검색 관리'}">지식 검색 관리</a>
<a class="nav-link" href="/mcp-chatbot" th:if="${backofficeTrack != 'DDS'}">Chatbot</a>
<a class="nav-link" href="/mcp-reasoning" th:if="${backofficeTrack != 'DDS'}">Reasoning</a>
<a class="nav-link" href="/mcp-sse" th:if="${backofficeTrack != 'DDS'}">SSE 서비스</a>
@@ -52,8 +53,9 @@
</div>
</div>
<div class="rw-menu-group">
<button class="rw-menu-trigger" type="button" aria-expanded="false" th:text="${backofficeTrack == 'DDS' ? '고급 검증' : '운영·고급'}">운영·고급</button>
<button class="rw-menu-trigger" type="button" aria-expanded="false" th:text="${backofficeTrack == 'DDS' ? '접근 검증' : '운영·고급'}">운영·고급</button>
<div class="rw-menu-panel">
<a class="nav-link" href="/dds-protection#direct-check-heading" th:if="${backofficeTrack == 'DDS'}">직접 접근 검증</a>
<a class="nav-link" href="/operation-status" th:if="${backofficeTrack != 'DDS'}">운영 상태</a>
<a class="nav-link" href="/vpd-filter-policies" th:if="${backofficeTrack != 'DDS'}">별도 Filter 관리</a>
<a class="nav-link" href="/settings" th:if="${backofficeTrack != 'DDS'}">설정</a>
@@ -74,6 +76,13 @@
</div>
<section th:fragment="architectureStrip(activeLayer)" class="architecture-strip" aria-label="권한 설정부터 결과 확인까지의 흐름">
<nav th:if="${backofficeTrack == 'DDS'}" class="dds-product-nav" aria-label="DDS 권한 운영 작업">
<a href="/permissions" th:classappend="${activeLayer == 'permission'} ? ' active'">권한 관리</a>
<a href="/dds-protection" th:classappend="${activeLayer == 'protection'} ? ' active'">보호 정책 관리</a>
<a href="/dds-provision" th:classappend="${activeLayer == 'publish'} ? ' active'">정책 적용</a>
<a href="/vector-knowledge" th:classappend="${activeLayer == 'search'} ? ' active'">지식자료 관리</a>
</nav>
<th:block th:unless="${backofficeTrack == 'DDS'}">
<div class="architecture-step" th:classappend="${activeLayer == 'permission'} ? ' active'">
<span class="architecture-kicker">1 · WHO / WHAT</span>
<strong>권한 설계</strong>
@@ -97,6 +106,7 @@
<strong>결과 확인</strong>
<p th:if="${backofficeTrack != 'DDS'}">보호 정책을 통과한 데이터만 실제 결과로 확인합니다.</p>
</div>
</th:block>
</section>
<details th:if="${backofficeTrack == 'DDS'}" class="explanation-details architecture-explanation">