ui: reshape DDS navigation as management console
This commit is contained in:
@@ -1,21 +1,21 @@
|
||||
<!doctype html>
|
||||
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
|
||||
<head th:replace="~{fragments/layout :: head('지식자료와 접근 권한')}"></head>
|
||||
<head th:replace="~{fragments/layout :: head('지식자료 관리')}"></head>
|
||||
<body>
|
||||
<nav th:replace="~{fragments/layout :: nav}"></nav>
|
||||
<main class="container py-4">
|
||||
<div class="page-title">
|
||||
<span class="architecture-kicker">DDS · KNOWLEDGE ACCESS</span>
|
||||
<h1>지식자료와 접근 권한</h1>
|
||||
<h1>지식자료 관리</h1>
|
||||
<p class="context-summary">등록 · 접근 규칙 · 업무 사용자 검색 · 고급 검증</p>
|
||||
<details class="explanation-details">
|
||||
<summary>접근 방식 보기</summary>
|
||||
<summary>도움말</summary>
|
||||
<p>문서는 검색 단위로 나뉘고 각 단위에 접근 분류값(<code>TECH_TAG</code>)이 연결됩니다. 역할별 허용 값을 등록하면 보호 규칙이 허용된 분류값만 검색 대상으로 남깁니다.</p>
|
||||
<p class="mb-0">기본 경로는 Bearer 토큰으로 업무 사용자를 식별합니다. 직접 접근 비교는 고급 검증에서만 사용합니다.</p>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<section th:replace="~{fragments/layout :: architectureStrip('ords')}"></section>
|
||||
<section th:replace="~{fragments/layout :: architectureStrip('search')}"></section>
|
||||
|
||||
<div class="alert alert-success" th:if="${message}" th:text="${message}"></div>
|
||||
<div class="alert alert-danger" th:if="${errorMessage}" th:text="${errorMessage}"></div>
|
||||
@@ -26,14 +26,14 @@
|
||||
<section class="content-band">
|
||||
<div class="section-heading">
|
||||
<div>
|
||||
<span class="architecture-kicker">1 · CONTENT</span>
|
||||
<span class="architecture-kicker">지식자료</span>
|
||||
<h2>지식자료 등록</h2>
|
||||
<p class="section-subtitle">문서 ID가 같으면 기존 검색 단위를 교체합니다.</p>
|
||||
</div>
|
||||
<span class="badge text-bg-secondary" th:text="${summary == null ? '저장소 확인 필요' : summary.chunkCount() + '개 검색 단위'}">0개 검색 단위</span>
|
||||
</div>
|
||||
<details class="explanation-details">
|
||||
<summary>청킹·임베딩 설정 보기</summary>
|
||||
<summary>도움말</summary>
|
||||
<ul>
|
||||
<li>문단을 우선 묶고 길이가 길면 문장·공백 기준으로 청크를 나눕니다.</li>
|
||||
<li>기본 로컬 임베딩은 외부 API 없이 흐름을 확인하는 개발용 4차원 벡터입니다.</li>
|
||||
@@ -70,7 +70,7 @@
|
||||
<section class="content-band">
|
||||
<div class="section-heading">
|
||||
<div>
|
||||
<span class="architecture-kicker">2 · POLICY</span>
|
||||
<span class="architecture-kicker">접근 규칙</span>
|
||||
<h2>권한 규칙은 한 곳에서 관리합니다.</h2>
|
||||
<p class="section-subtitle">사용자·그룹·역할·접근 분류 규칙을 한 곳에서 관리합니다.</p>
|
||||
</div>
|
||||
@@ -84,7 +84,7 @@
|
||||
<div><h3>보호 방식</h3><p><code th:text="${ddsVectorObject}">ADMIN.CB_DDS_VECTOR_SEARCH_DOCUMENTS</code>의 보호 규칙이 업무 사용자와 접근 분류값을 비교합니다.</p></div>
|
||||
</div>
|
||||
<details class="explanation-details mt-3">
|
||||
<summary>보호 방식 기술 상세 보기</summary>
|
||||
<summary>도움말</summary>
|
||||
<p>VPD는 요청마다 권한 테이블을 읽어 predicate를 계산합니다. DDS의 직접 비교 경로는 보호 VIEW에 선언한 DATA GRANT와 END USER 매핑을 사용합니다. 토큰 경로에서는 토큰이 공통 사용자 Context를 만들고, 보호 VIEW의 객체별 DATA GRANT predicate가 같은 권한 테이블을 다시 평가합니다.</p>
|
||||
</details>
|
||||
</section>
|
||||
@@ -92,14 +92,14 @@
|
||||
<section class="content-band">
|
||||
<div class="section-heading">
|
||||
<div>
|
||||
<span class="architecture-kicker">3 · TOKEN CONTEXT</span>
|
||||
<span class="architecture-kicker">업무 사용자 검색</span>
|
||||
<h2>업무 사용자 검색</h2>
|
||||
<p class="section-subtitle">하나의 기술 사용자 연결에서 Bearer 토큰으로 업무 사용자를 식별합니다.</p>
|
||||
</div>
|
||||
<span class="badge text-bg-secondary">객체별 DATA GRANT</span>
|
||||
</div>
|
||||
<details class="explanation-details">
|
||||
<summary>업무 사용자 검색 기술 상세 보기</summary>
|
||||
<summary>도움말</summary>
|
||||
<ol>
|
||||
<li>서버가 설정한 하나의 DDS 기술 사용자로 연결합니다.</li>
|
||||
<li>Bearer 토큰을 <code>CB_AGENT_CTX_PKG.SET_USER_BY_BEARER</code>에 전달합니다.</li>
|
||||
@@ -134,14 +134,14 @@
|
||||
<section class="content-band">
|
||||
<div class="section-heading">
|
||||
<div>
|
||||
<span class="architecture-kicker">4 · DIRECT CHECK</span>
|
||||
<span class="architecture-kicker">고급 검증</span>
|
||||
<h2>고급: 직접 접근 비교</h2>
|
||||
<p class="section-subtitle">DDS 선언형 보호 규칙 점검용 고급 검증</p>
|
||||
</div>
|
||||
<span class="badge text-bg-primary" th:text="${ddsVectorObject}">DDS view</span>
|
||||
</div>
|
||||
<details class="explanation-details">
|
||||
<summary>검색 처리 방식 보기</summary>
|
||||
<summary>도움말</summary>
|
||||
<ol>
|
||||
<li>검색어를 등록 때와 같은 방식으로 임베딩합니다.</li>
|
||||
<li>DDS END USER로 보호 VIEW에 연결합니다.</li>
|
||||
@@ -177,7 +177,7 @@
|
||||
|
||||
<section class="content-band">
|
||||
<details class="explanation-details">
|
||||
<summary>저장 현황 보기</summary>
|
||||
<summary>저장 현황</summary>
|
||||
<div class="summary-grid mt-3">
|
||||
<div class="summary-tile"><span class="label">문서</span><strong th:text="${summary == null ? '-' : summary.documentCount()}">0</strong></div>
|
||||
<div class="summary-tile"><span class="label">검색 단위</span><strong th:text="${summary == null ? '-' : summary.chunkCount()}">0</strong></div>
|
||||
|
||||
Reference in New Issue
Block a user