관리자 목록을 만든 뒤 추가로 필요했던 구분

초기 관리자 화면에는 카테고리별 목록과 마우스를 올렸을 때 나타나는 수정·삭제·공개 설정 버튼을 넣었다. 당시 기록에서 수정·삭제는 아직 버튼만 만든 상태였고, 공개 여부를 뜻하는 visibility를 추가했다고 설명했다. 이후 구현이 바뀌었으므로 초기 화면 기록과 현재 동작을 나눠 정리한다.

2026년 9월 코드의 관리자 목록은 카테고리와 검색어로 게시글을 찾는다. 공개 상세 페이지와 달리 전체 글을 대상으로 하며 staff 권한을 요구한다. 목록에서 찾을 수 있다는 사실만으로 방문자가 그 글을 볼 수 있는 것은 아니다.

발행·공개·색인은 별도 상태다

상태 조합 방문자의 상세 URL 메인 목록·사이트맵
발행 + public + index 본문 제공, index 메타 포함 대상
발행 + public + noindex 본문 제공, noindex 메타 제외
발행 + private 404 제외
발행 + protected 404 제외
draft 404 제외

이 표는 일반 공개 경로 기준이다. 현재 PostDetailView는 발행·public만 조회하고, is_search_indexable은 여기에 index 조건을 더한다. protected는 현재 공개 상세 경로에서 비밀번호 입력 화면을 제공하는 상태가 아니다. 이름만 보고 ‘주소를 열면 비밀번호로 볼 수 있다’고 안내하면 실제 동작과 맞지 않는다.

또 noindex는 비공개가 아니다. URL을 아는 방문자는 공개 noindex 글을 읽을 수 있다. 개인정보나 공개 전 자료를 숨길 때는 noindex를 보안 수단으로 사용하지 않는다. Google noindex 설명

공개 변경 버튼이 하는 일

현행 post_visibility_update()는 staff와 POST 요청을 요구한다. 입력이 public, protected, private 중 하나일 때 visibility를 바꾸고 저장한다. 이 작업은 발행 상태나 indexing_status를 함께 변경하지 않는다.

예를 들어 발행·public·noindex 글을 private으로 바꿨다가 다시 public으로 바꾸면 noindex는 그대로다. ‘공개’ 버튼만으로 검색 목록에 복귀할 것이라고 기대하지 않도록 관리자 점검에서도 세 필드를 따로 본다. 잘못된 visibility 값은 적용되지 않지만 목록으로 돌아갈 수 있으므로 화면 이동만으로 저장 성공을 판정하지 않는다.

확인은 테스트용 글에서 다음 순서로 할 수 있다.

  1. 관리자 목록에서 현재 발행·공개·색인 값을 기록한다.
  2. 공개 설정 하나만 바꾼 뒤 나머지 값이 유지되는지 본다.
  3. 로그아웃 창에서 상세 응답과 본문 유무를 확인한다.
  4. 메인 목록·사이트맵의 포함 여부를 별도로 확인한다.
  5. 테스트 종료 후 기록했던 상태로 되돌린다.

운영 글을 시험 삼아 삭제할 필요는 없다. 삭제 기능은 현재 서버에 구현되어 있지만 복원 가능한 백업과 의도가 확실한 작업에서 사용해야 한다. 위 예시는 상태 전환 검증 절차다.

마우스에만 의존하는 버튼의 한계

초기 코드는 .post-manage-row:hover .post-actions로 버튼을 표시했다. 마우스를 올리는 동작은 터치와 키보드 이용자의 동작을 모두 설명하지 못한다. 이런 화면을 만들 때는 작은 화면에서 버튼이 보이는지, Tab으로 이동했을 때 포커스가 보이고 조작되는지, 메뉴 바깥 클릭과 키보드 닫기가 가능한지 직접 확인해야 한다.

이를 개선하는 한 가지 설계는 기본적으로 버튼을 보이게 하고, 넓은 화면에서만 보조적으로 숨김 효과를 적용하며 :focus-within에서도 표시하는 것이다. 이 문단은 UI 개선 제안이며 이번 본문 보강에서 관리자 CSS 전체를 수정하거나 터치 동작 검증을 끝냈다는 뜻은 아니다.

검토 기록과 서비스 상태를 함께 남긴다

이 사이트는 새 글의 색인 기본값을 noindex로 두고 본문 검토 이후 명시적으로 바꾸는 흐름을 사용한다. 공개 상태를 바꾸는 기능과 검토 승인 이력을 남기는 기능은 별개이므로, 누가 어떤 근거로 검토했는지는 별도 기록이 필요하다.

로컬 검증은 합성 게시글로 공개 상태 조합과 사이트맵을 확인한다. 실제 운영 계정에서 모든 버튼을 눌러본 결과로 확대하지 않는다. 글쓰기 저장 형식과 권한은 글쓰기 권한 기록, 검색에 안내할 대상을 고르는 조건은 사이트맵 기록을 함께 참고할 수 있다.