--- {"id":"states","title":"대기·빈 상태·실패","category":"업무 패턴","order":70,"summary":"데이터가 없는 이유를 구분하고 안전한 다음 행동을 제공합니다.","status":"문서 기준 · UI 미검증","references":["patterns/empty-states-pattern/index","patterns/loading-pattern/index","patterns/notification-pattern/index"]} --- # 대기·빈 상태·실패 ## 상태 모델 | 상황 | 표현 | 다음 행동 | | --- | --- | --- | | 첫 로드 | 범위에 맞는 skeleton/대기 | 요청 진행 안내 | | 데이터 0건 | 처음 사용·모두 삭제 등 이유 | 허용된 생성/다른 범위 | | 필터 결과 0건 | 적용된 검색·필터 설명 | 필터 해제 | | 요청 실패 | 실패 범위와 복구 안내 | 안전한 조회 재시도 | | 접근 불가 | 권한/서비스 상태에 맞는 안내 | 허용된 이동·문의 | | 오래된 값 | 마지막 수집 시각·지연 표시 | 갱신·복구 | | 성공 | 실제 완료된 작업 이름 | 결과 보기 | - STATE-01 MUST: API 오류를 “서버가 없습니다”로 표시하지 않습니다. - STATE-02 MUST: 0과 알 수 없음, 정지와 연결 실패를 구분합니다. - STATE-03 SHOULD: 이미 정상적으로 받은 내용은 재조회 시 유지하되 오래된 값임을 설명합니다. - STATE-04 MUST: 재시도가 중복 결제·중복 생성으로 이어지지 않도록 조회와 변경을 구분합니다. - STATE-05 MUST: skeleton/장식 예제값을 실제 사용량처럼 표시하지 않습니다. ## 우리 제품의 연결 Panel ServerRow는 429에서 마지막 정상값을 유지합니다. 따라서 문서의 권장 ‘마지막 갱신 표시’가 실제 구현됐는지는 별도 확인해야 합니다. Blesta 티켓·결제는 HTML 성공 응답만으로 저장 완료라고 판단하지 않습니다. ## 예시·확인 좋음: “검색 결과가 없습니다. 적용된 필터를 해제해 보세요.” 피함: 요청 실패를 빈 목록으로 처리하고 생성 버튼만 보임. 지연·일부 데이터 실패·새로고침·백그라운드 탭·권한 변경·재시도 후 복구를 확인합니다.