ui: simplify DDS default screens

This commit is contained in:
devmrko
2026-07-01 10:08:07 +09:00
parent 2a038662e0
commit 699909212f
4 changed files with 40 additions and 46 deletions

View File

@@ -27,28 +27,27 @@
<div class="section-heading">
<div>
<h2>자료 등록</h2>
<p class="section-subtitle">제목, 원문, 접근 태그 입력합니다.</p>
<p class="section-subtitle">제목, 접근 태그, 문서 내용을 입력합니다.</p>
</div>
</div>
<details class="explanation-details">
<summary>도움말</summary>
<p class="mb-0">접근 태그는 이 자료를 볼 수 있는 권한 범위입니다. 권한 관리에 등록된 TAG 값과 일치하는 태그를 입력하세요. 등록 후 문서는 검색 단위로 나뉘고 임베딩이 생성됩니다.</p>
</details>
<form method="post" action="/vector-knowledge/ingest" class="form-grid mt-3">
<form method="post" action="/vector-knowledge/ingest" class="knowledge-entry-form">
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
<label>자료 제목<input class="form-control" name="title" placeholder="예: DDS 기술 태그 권한 설계" required></label>
<label>원문 주소 <span class="text-muted fw-normal">(선택)</span><input class="form-control" name="sourceUri" placeholder="예: https://kb.example.com/dds-vector"></label>
<label class="span-2">접근 태그
<label>접근 태그
<input class="form-control" name="techTags" placeholder="예: SALES, INTERNAL" required>
<span class="form-hint">태그가 하나라도 허용되면 자료를 검색할 수 있습니다.</span>
</label>
<label class="span-2">문서 본문
<label>문서 본문
<textarea class="form-control" name="content" rows="8" placeholder="문서 내용을 붙여 넣으세요." required></textarea>
</label>
<details class="span-2 registration-advanced-options">
<details class="registration-advanced-options">
<summary>고급 설정</summary>
<p>기본 처리 방식을 변경하거나 기존 자료를 교체할 때만 사용합니다.</p>
<div class="form-grid registration-advanced-grid">
<div class="knowledge-options-grid">
<label>검색 단위 길이
<input class="form-control" name="chunkSize" type="number" min="80" max="2000" value="600">
</label>
@@ -58,16 +57,16 @@
<option value="AI" th:disabled="${!aiEmbeddingConfigured}">AI 임베딩</option>
</select>
</label>
<label class="span-2">교체할 자료 ID
<label class="full-row">교체할 자료 ID
<input class="form-control" name="documentId" placeholder="기존 등록 결과에 표시된 자료 ID">
<span class="form-hint">입력한 자료의 검색 단위를 새 내용으로 교체합니다.</span>
</label>
<label class="span-2 registration-checkbox">
<label class="full-row registration-checkbox">
<input type="checkbox" name="replaceExisting" value="true"> 기존 자료를 교체합니다.
</label>
</div>
</details>
<div class="span-2 registration-actions"><button class="btn rw-btn-primary" type="submit">등록</button></div>
<div class="registration-actions"><button class="btn rw-btn-primary" type="submit">등록</button></div>
</form>
<section class="registration-result mt-3" th:if="${ingestResult}" aria-live="polite">
<div>
@@ -110,18 +109,18 @@
<summary>도움말</summary>
<p class="mb-0">토큰은 검색하는 사용자를 확인하기 위한 임시 값이며 저장하지 않습니다. 회수되었거나 만료된 토큰은 사용할 수 없습니다.</p>
</details>
<form hx-post="/vector-knowledge/token-search" hx-target="#vector-token-search-result" hx-swap="innerHTML" class="form-grid mt-3">
<form hx-post="/vector-knowledge/token-search" hx-target="#vector-token-search-result" hx-swap="innerHTML" class="knowledge-entry-form">
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
<label class="span-2">Bearer 토큰
<label>Bearer 토큰
<input class="form-control" name="bearerToken" type="password" autocomplete="off" placeholder="발급된 임시 토큰을 붙여 넣으세요." required>
<span class="form-hint">요청 처리 후 저장하지 않습니다. 회수·만료된 토큰은 거부됩니다.</span>
</label>
<label class="span-2">검색 질문
<label>검색 질문
<textarea class="form-control" name="query" rows="3" placeholder="예: 세일즈 파이프라인 후속 조치 기준" required></textarea>
</label>
<details class="span-2 registration-advanced-options">
<details class="registration-advanced-options">
<summary>검색 옵션</summary>
<div class="form-grid registration-advanced-grid mt-3">
<div class="knowledge-options-grid mt-3">
<label>결과 수<input class="form-control" name="limit" type="number" min="1" max="100" value="10"></label>
<label>임베딩 방식
<select class="form-select" name="embeddingMode">
@@ -131,7 +130,7 @@
</label>
</div>
</details>
<div class="span-2 registration-actions"><button class="btn rw-btn-primary" type="submit">검색</button></div>
<div class="registration-actions"><button class="btn rw-btn-primary" type="submit">검색</button></div>
</form>
<section id="vector-token-search-result" class="mt-3" aria-live="polite">
<div class="empty-result-guide">토큰과 검색 질문을 입력하면 허용된 자료만 표시합니다.</div>
@@ -146,7 +145,7 @@
<summary>도움말</summary>
<p class="mb-0">업무 사용자 토큰 경로와 별도로, DDS END USER와 DATA GRANT가 직접 적용되는 결과를 비교합니다. 운영 검색에는 권한 검색을 사용하세요.</p>
</details>
<form hx-post="/vector-knowledge/search" hx-target="#vector-search-result" hx-swap="innerHTML" class="form-grid mt-3">
<form hx-post="/vector-knowledge/search" hx-target="#vector-search-result" hx-swap="innerHTML" class="knowledge-entry-form">
<input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
<label>검증 사용자
<select class="form-select" name="userKey" required>
@@ -162,10 +161,10 @@
<option value="AI" th:disabled="${!aiEmbeddingConfigured}">AI 임베딩</option>
</select>
</label>
<label class="span-2">검색 질문
<label>검색 질문
<textarea class="form-control" name="query" rows="3" placeholder="예: 기술 태그로 지식자료 검색 권한을 제한하는 방법" required></textarea>
</label>
<div class="span-2 registration-actions"><button class="btn rw-btn-secondary" type="submit">검증 실행</button></div>
<div class="registration-actions"><button class="btn rw-btn-secondary" type="submit">검증 실행</button></div>
</form>
<section id="vector-search-result" class="mt-3" aria-live="polite">
<div class="empty-result-guide">검증 사용자와 검색 질문을 입력하면 보호 결과를 표시합니다.</div>