<!doctype html>
<html lang="ko" xmlns:th="http://www.thymeleaf.org">
<head th:replace="~{fragments/layout :: head('보호 정책 관리')}"></head>
<body>
<nav th:replace="~{fragments/layout :: nav}"></nav>
<main class="container py-4">
  <header class="page-title">
    <span class="architecture-kicker">DDS · PROTECTION STATUS</span>
    <h1>보호 정책 관리</h1>
    <p class="context-summary">지식 검색에 쓰는 보호 객체가 현재 권한 기준대로 연결되어 있는지 확인합니다.</p>
  </header>

  <section th:replace="~{fragments/layout :: architectureStrip('protection')}"></section>

  <div class="alert alert-success" th:if="${successMessage}" th:text="${successMessage}"></div>
  <div class="alert alert-danger" th:if="${errorMessage}" th:text="${errorMessage}"></div>
  <form method="post" action="/dds-protection/setup" class="mb-3">
    <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
    <button class="btn btn-sm rw-btn-secondary" type="submit">검증 기준 자료 구성 확인</button>
  </form>

  <section class="content-band protection-summary" aria-labelledby="service-path-heading">
    <div class="section-heading">
      <div>
        <span class="architecture-kicker">기본 서비스 경로</span>
        <h2 id="service-path-heading">토큰 기반 지식 검색</h2>
        <p class="section-subtitle">일상 운영에서는 이 경로만 확인하면 됩니다. 직접 접근 비교는 아래 고급 검증에 분리했습니다.</p>
      </div>
      <span class="badge text-bg-danger" th:if="${protection.actionRequiredCount() > 0}"
            th:text="${protection.actionRequiredCount() + '개 조치 필요'}">조치 필요</span>
      <span class="badge text-bg-warning" th:unless="${protection.actionRequiredCount() > 0}">검증 확인 필요</span>
    </div>

    <article id="service-verify" class="protection-status-card"
             th:classappend="${' status-' + protection.servicePath.primaryTone()}"
             aria-label="토큰 기반 서비스 경로 보호 상태">
      <div class="protection-status-topline">
        <div>
          <span class="protection-path-label" th:text="${protection.servicePath.pathLabel()}">토큰 기반 서비스 경로</span>
          <h3 th:text="${protection.servicePath.objectName()}">ADMIN.CB_DDS_VECTOR_SEARCH_DOCUMENTS</h3>
          <p th:text="${protection.servicePath.subjectLabel()}">기술 사용자</p>
        </div>
        <span class="protection-primary-badge"
              th:classappend="${' tone-' + protection.servicePath.primaryTone()}"
              th:text="${protection.servicePath.primaryLabel()}">재검증 필요</span>
      </div>
      <p class="protection-primary-description" th:text="${protection.servicePath.primaryDescription()}">설명</p>

      <dl class="protection-evidence-grid">
        <div>
          <dt>DB 관측</dt>
          <dd><strong th:text="${protection.servicePath.observationLabel()}">일부 확인</strong><span th:text="${protection.servicePath.observationDetail()}">설명</span></dd>
        </div>
        <div>
          <dt>권한 반영</dt>
          <dd><strong th:text="${protection.servicePath.synchronizationLabel()}">선언 관측</strong><span th:text="${protection.servicePath.synchronizationDetail()}">설명</span></dd>
        </div>
        <div>
          <dt>검색 검증</dt>
          <dd><strong th:text="${protection.servicePath.verificationLabel()}">검증 기록 없음</strong><span th:text="${protection.servicePath.verificationDetail()}">설명</span></dd>
        </div>
      </dl>

      <footer class="protection-status-footer">
        <span th:text="${'마지막 관측 ' + protection.servicePath.observedAtLabel()}">마지막 관측</span>
        <div class="d-flex gap-2 flex-wrap">
          <a class="btn rw-btn-secondary" href="/vector-knowledge">지식 검색 열기</a>
          <form method="post" action="/dds-protection/verify/service" class="d-inline">
            <input type="hidden" th:name="${_csrf.parameterName}" th:value="${_csrf.token}">
            <button class="btn rw-btn-primary" type="submit">보호 기준 검증 실행</button>
          </form>
        </div>
      </footer>
    </article>
  </section>

  <section class="content-band">
    <div class="section-heading">
      <div>
        <span class="architecture-kicker">권한 변경</span>
        <h2>권한을 바꾸려면</h2>
        <p class="section-subtitle">접근 규칙을 먼저 수정하고, 직접 접근 비교 경로의 변경은 권한 게시에서 미리 확인합니다.</p>
      </div>
      <div class="d-flex gap-2">
        <a class="btn btn-sm rw-btn-secondary" href="/permissions">권한 규칙 열기</a>
        <a class="btn btn-sm rw-btn-primary" href="/dds-provision">권한 반영 미리보기</a>
      </div>
    </div>
    <details class="explanation-details m-0">
      <summary>도움말</summary>
      <div class="protection-path-comparison">
        <div><strong>업무 사용자 검색</strong><span>기술 사용자 연결에서 Bearer 토큰으로 업무 사용자를 식별합니다. 보호 규칙이 현재 접근 권한을 평가합니다.</span></div>
        <div><strong>직접 접근 비교</strong><span>게시된 DATA ROLE과 DATA GRANT를 직접 확인하는 고급 진단 경로 · 권한 변경 뒤 별도 게시 필요</span></div>
      </div>
    </details>
  </section>

  <section class="content-band">
    <details class="advanced-protection" aria-labelledby="direct-check-heading">
      <summary id="direct-check-heading">고급 검증: 직접 접근 비교 보기</summary>
      <p class="section-subtitle mt-3">제품 계정 목록이 아닌 DDS 선언형 보호 규칙 비교용 검증 프로필 · 평소 운영에서는 열 필요 없음</p>
      <button class="btn btn-sm rw-btn-secondary mt-2" type="button"
              hx-get="/dds-protection/direct" hx-target="#direct-comparison-result" hx-swap="innerHTML">
        고급 검증 불러오기
      </button>
      <div id="direct-comparison-result" class="mt-3" aria-live="polite">
        <p class="text-muted mb-0">직접 비교는 필요할 때만 불러옵니다. 기본 서비스 검색에는 영향을 주지 않습니다.</p>
      </div>
    </details>
  </section>
</main>
</body>
</html>
