콘텐츠로 이동

번호표

번호표는 고객이 대기열에 참여할 때 발급되는 항목입니다. 대기열 시스템의 핵심 단위로, 디스플레이 화면부터 Desk 인터페이스까지 모든 것이 번호표를 중심으로 동작합니다.

  • 번호표 번호 — 고객에게 보이는 순차적인 정수로, 키오스크 영수증에 인쇄되고, 디스플레이 화면에 표시되며, Desk의 대기 목록에서도 확인할 수 있습니다. 번호는 대기열 단위로 부여되며 단조 증가합니다 — 절대 초기화되지 않습니다.
  • 번호표 해시 — 128비트 엔트로피를 가진 22자 무작위 문자열입니다. 이 해시는 고객의 익명 소지 자격 증명 역할을 합니다(아래 참고).
  • 상태 — 여섯 가지 값 중 하나입니다(아래 참고).
  • 대기열 — 번호표가 속한 대기열입니다.
  • 타임스탬프 — 번호표가 생성, 호출, 완료된 시각 등입니다.
  • 메모 (선택 사항) — 직원이 입력하는 메타데이터로, 고객 이름, 인원 수, 자유 텍스트 메모가 있습니다. 번호표 메모 참고.

번호표는 수명 주기 동안 다음 상태를 거칩니다:

상태종료 상태?의미
WAITING아니요고객이 대기열에서 호출을 기다리는 중입니다.
CALLED아니요창구가 이 번호표를 호출했습니다. 고객은 카운터로 이동해야 합니다.
SKIPPED아니요창구가 이 번호표를 건너뛰었습니다. 다시 호출 가능 — 직원이 WAITING으로 되돌릴 수 있습니다.
COMPLETED창구가 서비스를 완료로 표시했습니다.
CANCELED고객이 스스로 대기열에서 자리를 취소했습니다.
NO_SHOW창구가 고객의 부재를 확인했습니다. 분석에서 SKIPPED와 별도로 집계됩니다.
WAITING → CALLED → COMPLETED
↘ SKIPPED → WAITING (desk recalls the customer)
↘ NO_SHOW (desk confirms absence)
↘ CANCELED (customer cancels their deferred spot)
WAITING → CANCELED (customer-initiated)
CALLED → CANCELED (customer-initiated)
SKIPPED → CANCELED (customer-initiated — removes from recallable pool)

SKIPPED는 다시 호출 가능한 보류 상태입니다 — 고객은 건너뛰어졌지만 번호표는 여전히 유효합니다. 직원은 창구의 조회 화면에서 대기열로 다시 불러오기 작업을 사용하거나, 건너뛴 지 5초 이내에 실행 취소를 눌러 고객을 다시 부를 수 있습니다. 건너뛴 고객의 푸시 알림 구독은 계속 유지되므로, 번호표 페이지가 닫혀 있어도 다시 호출 → 호출 푸시 알림이 전달됩니다.

NO_SHOW는 확정된 종료 상태의 부재입니다. 번호표는 다시 호출 가능한 대상에서 제외되며 분석에서 별도로 집계됩니다. 고객이 자리를 떠난 것이 확실할 때 사용하세요.

전체 창구 워크플로는 부재 처리하기를 참고하세요.

직원은 창구의 메모 추가 작업을 통해 어떤 번호표에도 간단한 메타데이터를 첨부할 수 있습니다:

  • 고객 이름 — 창구에는 항상 표시됩니다. 디스플레이에는 대기열의 이름으로 호출 설정이 켜져 있을 때만 표시되며, 그 경우에도 이름 전체가 아니라 일부만 가려진 축약된 형태로만 표시됩니다.
  • 인원 수 — 창구에는 항상 표시되며, 디스플레이에도 전송됩니다(민감도가 낮은 수치이기 때문입니다).
  • 메모 — 자유 텍스트로 작성하는 내부용 메모입니다. 창구에만 표시되며, 디스플레이나 고객에게는 절대 전달되지 않습니다.

건너뛰기 사유(번호표를 건너뛸 때 건너뛰는 이유 (선택 사항) 필드에 입력)는 번호표의 메모 필드에 저장되며 창구의 조회 화면에서 확인할 수 있습니다.

메모는 번호표가 종료 상태가 아닌 동안 언제든지 추가하거나 수정할 수 있습니다.

WAITING 상태의 번호표는 창구의 이동 버튼을 사용해 같은 지점 내 다른 대기열로 이동할 수 있습니다. 고객이 잘못된 대기열에 참여했거나, 상담 결과 다른 서비스가 필요하다는 것이 확인된 경우에 유용합니다.

이동 규칙:

  • WAITING 상태의 번호표만 이동할 수 있습니다. CALLED 상태의 번호표는 먼저 완료, 건너뛰기, 또는 부재 처리를 해야 합니다.
  • 출발 대기열과 도착 대기열은 같은 지점에 있어야 합니다.
  • 도착 대기열은 ACTIVE 상태여야 합니다.
  • 창구는 출발 대기열과 도착 대기열 모두에 할당되어 있어야 합니다.
  • 유효한 구독이 필요합니다.

이동 후 순서 배정 — 번호표는 고객의 원래 참여 시각에 5분의 페널티를 더한 시각을 기준으로 순서를 유지합니다. 이렇게 하면 고객이 이미 기다린 시간을 인정받으면서도, 도착 대기열에서 더 오래 기다린 고객보다 먼저 서비스를 받는 것을 방지할 수 있습니다.

번호표 해시는 유지됩니다 — 고객의 번호표 페이지 URL은 그대로 유효합니다. 번호표는 도착 대기열에서 새로운 순차 번호를 받습니다. 실시간 업데이트는 즉시 양쪽 대기열 모두에 전달됩니다.

단계별 안내는 Desk 가이드의 다른 대기열로 번호표 이동하기 섹션을 참고하세요.

자격 증명으로서의 번호표 해시

섹션 제목: “자격 증명으로서의 번호표 해시”

고객은 익명입니다 — 대기열에 참여하는 데 로그인이나 계정이 필요하지 않습니다. 대신 22자 번호표 해시가 고객의 소유권 증명 역할을 합니다. 이 해시는 번호표 페이지 URL에 포함되어 있습니다:

https://customer.jonot.io/{org}/{location}/{queue}/{ticket-hash}/

해시를 알고 있다는 것은 해당 번호표의 소유자임을 증명합니다. API는 이 해시를 사용해 다음을 인가합니다:

  • ticketByHash — 자신의 번호표와 순서 조회
  • cancelTicket — 자신의 번호표 취소(WAITING, CALLED, SKIPPED 상태의 번호표에서 동작)

이는 의도된 설계입니다: 대기열 참여의 모든 마찰을 없애줍니다. 계정도, 앱도, 비밀번호도 필요 없이 URL 하나면 충분합니다.

이 해시는 128비트의 엔트로피를 가지며(UUID v4와 동등한 수준), 다른 고객의 번호표 해시를 추측하는 것이 계산적으로 불가능합니다.

이례적인 트래픽 상황에서의 인증

섹션 제목: “이례적인 트래픽 상황에서의 인증”

평상시에는 참여 과정에 아무런 마찰이 없습니다. 남용 방지 장치로서, 특정 대기열이 짧은 시간 안에 비정상적으로 많은 참여 요청을 받으면, 웹(QR 코드 또는 링크)으로 참여하는 고객은 번호표가 발급되기 전에 간단한 “사람인지 확인” 절차를 거쳐야 할 수 있습니다. 정상적인 방문자 대부분은 이 과정을 거의 눈치채지 못하고 통과합니다. 이는 트래픽이 몰릴 때만 나타나며 — 평상시 트래픽에서는 인증이 표시되지 않습니다 — 기기 자격 증명으로 신뢰되는 현장 키오스크의 참여에는 절대 적용되지 않습니다.

번호표가 WAITING 상태일 때, 고객의 번호표 페이지에는 예상 대기 시간이 표시됩니다. 동일한 예측값이 키오스크의 참여 완료 확인 화면에도 표시되어, 고객이 키오스크를 떠날 때 기억할 만한 시간을 가지고 갈 수 있습니다. 이는 최선의 예측일 뿐, 확정된 값은 아닙니다.

이 예측값은 해당 대기열의 최근 서비스 간격을 바탕으로 계산됩니다: 지난 90분 동안 완료된 번호표가 충분히 있으면, 서버는 중앙값 서비스 시간을 산출하여 고객의 대기 순서(앞선 인원 수 + 0.5)를 곱합니다. 고객이 다음 순서(앞선 인원이 0명)인 경우, 예측값은 0으로 표시됩니다. 최근 이력이 충분하지 않으면 대기열에 설정된 예상 서비스 시간을 대체값으로 사용합니다. 예측값에는 신뢰도 표시가 함께 제공됩니다(실시간 데이터에서 산출되었거나 고객이 다음 순서인 경우 high, 설정된 기본값으로 대체된 경우 low).

이 예측값은 ACTIVE 상태인 대기열의 WAITING 번호표에만 표시됩니다. 대기열이 일시 중지된 경우에는 표시되지 않으며, 번호표가 호출되면 사라집니다.

  1. 고객이 QR 코드나 키오스크로 참여 → WAITING 상태의 번호표가 발급됩니다.
  2. 고객이 번호표 페이지를 엽니다 → 대기열에서의 순서와, 가능한 경우 실시간 예상 대기 시간을 확인합니다.
  3. 창구가 고객의 번호를 호출하면 번호표는 CALLED 상태로 바뀝니다 → 고객의 페이지가 즉시 업데이트됩니다.
  4. 고객이 카운터로 이동합니다. 서비스가 끝나면 창구가 COMPLETED로 표시합니다.
  5. 고객이 응답하지 않으면 창구는 다음을 할 수 있습니다:
    • 건너뛰기 → 번호표가 SKIPPED 상태로 바뀝니다(다시 호출 가능한 보류). 고객의 화면에는 건너뛰어졌다는 것과 함께 계속 기다리거나 다시 참여할 수 있는 옵션이 표시됩니다.
    • 부재 → 번호표가 NO_SHOW 상태로 바뀝니다(종료 상태). 분석에서는 건너뛴 번호표와 별도로 집계됩니다.
  6. 건너뛴 고객은 직원이 다시 호출할 수 있으며(대기열 맨 앞의 WAITING 상태로 돌아감), 또는 자리를 취소하고 맨 뒤로 다시 참여할 수도 있습니다.