목록이 비어 있을 때, 기획서에 먼저 적어야 할 네 가지 상태
공개 목록이 비었다고 처음 사용하는 서비스인 것은 아닙니다. 공개 가능한 항목 없음, 필터 결과 0건, 접근 제한, 조회 실패를 구분하고 예약 공지의 공개 시각 전후를 검수하는 기준을 설명합니다.
빈 목록을 모두 같은 안내로 처리하면 조회 실패를 정상 결과로 오해할 수 있습니다. 먼저 정상 조회에서 공개 가능한 항목이 없는 경우, 필터 결과가 0건인 경우, 접근 제한, 조회 실패를 구분해야 합니다.
특히 ‘공개 가능한 항목 없음’은 ‘처음 사용하는 서비스’와 다릅니다. 예약 글이나 비공개 글만 있어도 공개 목록은 비어 있습니다. 기획서에는 사용자가 볼 수 있는 범위와 다음 행동을 적고, 최초 사용 여부는 별도 조건으로 다루세요.
네 가지 상태와 안내를 연결합니다
공개 가능한 항목 없음: 권한과 조회는 정상이지만 현재 방문자에게 표시할 항목이 없습니다. 최초 사용인지, 예약·보관 정책 때문인지는 별도로 판단합니다.
필터 결과 0건: 조회는 성공했지만 현재 검색어나 조건에 맞는 항목이 없습니다. 적용 조건과 해제 방법을 안내합니다.
접근 제한: 서버의 접근 정책에 따라 안내합니다. 데이터 존재 여부를 알려도 되는지 확인하고 숨겨야 할 제목이나 건수를 표시하지 않습니다.
조회 실패: 결과가 0건인지 알 수 없습니다. 정상 빈 상태 대신 오류와 재시도 경로를 제공합니다.
조건이 겹칠 때의 처리 순서도 합의해야 합니다. 예를 들어 접근이 거부된 응답은 필터 0건으로 바꾸지 않습니다. 권한 검사를 마친 정상 응답이 비어 있고 필터가 적용됐다면 우선 필터를 해제할 방법을 안내할 수 있습니다. 실제 정책은 서버가 제공하는 상태를 기준으로 정합니다.

예약 글이 있어도 공개 목록은 비어 있습니다
심플소프트 BlogPost 모델은 공개 여부와 예약 시각을 함께 판정합니다. is_published가 참이고 published_at이 비어 있지 않으며 현재 시각 이하인 글만 published() 범위에 들어갑니다. 관리자에게 글이 보인다는 사실만으로 공개 목록에도 나와야 하는 것은 아닙니다.
검수표에서 ‘전체 0건’이라는 말은 피하는 편이 좋습니다. 관리자 전체 데이터인지, 방문자에게 공개 가능한 데이터인지 범위를 적어야 같은 결과를 확인할 수 있습니다. 조직·소유자·삭제 상태가 있는 서비스라면 해당 경계도 포함합니다.
가상 사례: 예약 공지 한 건의 공개 전후를 검수합니다
다음은 공개 예정인 공지 한 건만 있는 목록의 검수 샘플입니다. 아직 공개 시각이 지나지 않았으므로 방문자에게는 ‘아직 공개된 공지가 없습니다’라고 안내합니다. 방문자의 최초 방문 여부는 판단에 사용하지 않습니다.
공통 입력: 공개 설정된 예약 공지 1건 / 비로그인
기준 시각: 테스트 서버 시계와 저장 시각대를 고정
공개 시각 이전: 정상 조회 / 공개 항목 0건
문구: 아직 공개된 공지가 없습니다
행동: 서비스 안내로 이동
확인: 예약 제목·식별자 미노출, 등록 버튼 없음
공개 시각 도달: 정상 조회 / 공개 항목 1건
확인: 해당 공지 표시
공개 시각 이후: 동일 공지가 계속 표시되는지 확인개발자는 테스트 시계를 고정하고 공개 시각 직전·일치·직후를 확인합니다. 화면 캡처만 받지 말고 입력 데이터, 접근 권한, 응답, 적용 필터를 함께 남기세요. 이 기준이면 작성자는 공지를 등록했는데 방문자는 볼 수 없는 상황도 일관되게 설명할 수 있습니다.
예약 기능에 캐시가 있다면 서버의 조회 조건만으로는 충분하지 않습니다. 캐시 갱신 시점까지 검수해야 합니다. 다만 이 예시는 공개 여부의 경계를 설명하는 샘플이며, 특정 서비스의 캐시 갱신을 검증한 결과는 아닙니다.
첫 등록 안내는 생성 권한이 있을 때만 붙입니다
처음 사용하는 관리자라면 ‘첫 공지를 등록하세요’가 도움이 될 수 있습니다. 반면 작성 권한이 없는 방문자에게는 실행할 수 없는 버튼입니다. 생성 권한과 실제 최초 사용 여부를 확인할 수 있을 때만 이 안내를 선택합니다. 두 조건을 알 수 없다면 공개 목록의 상태만 설명합니다.

오류가 빈 배열로 바뀌는 경로를 확인합니다
API 오류를 잡아 빈 배열로 반환하면 조회 실패도 정상 빈 목록처럼 보입니다. 사용자가 필터를 바꿔도 해결되지 않습니다. 실패 상태를 유지하고 재시도 가능 여부와 문의용 참조 번호를 안내하는 편이 좋습니다.
재시도 중에는 중복 실행을 막고, 다시 실패하면 오류를 유지합니다. 마지막 성공 데이터를 보여주는 대안이라면 오래된 정보라는 표시와 기준 시각을 합의하세요. 내부 오류나 비밀값은 사용자 안내로 옮기지 않습니다.
정적으로 처음 열린 화면에 모든 안내를 강한 경고로 읽게 할 필요는 없습니다. 비동기 갱신인지 페이지 이동인지에 맞게 안내 방식을 정하세요.
검색 조건 해제와 대체 탐색은 검색 결과 0건 복구 가이드에서 더 자세히 다룹니다.
완료 기준은 선택한 상태별 입력·권한·응답·문구·다음 행동을 재현하고 결과를 기록하는 것입니다. 예약 글이 있는 빈 목록을 최초 사용으로 단정하지 않는지, 조회 실패가 다른 안내로 나타나는지, 비공개 정보가 노출되지 않는지 확인합니다.