이 문서는 라이브폼 모바일 여정에서 노출되는 37개 에러 페이지를 유형별로 분류해 개발 코드와 사용자 메시지를 나란히 제공합니다.
최종 사용자가 만나는 에러 메세지에 대해서 실제 라우팅 경로와 발생 조건을 정확하게 확인하고 업무나 고객 지원에 활용할 수 있습니다.
모든 에러 페이지는 다음의 4 유형으로 구분됩니다.
/error-page/:errorType,
/face-retry/:faceErrorCode,
/error-page/token-*,
Error Boundary
일반 에러 페이지 (/error-page/:errorType)
🔒 인증·권한 오류
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 페이지 없음 | page-not-found (/error-page/page-not-found) | “페이지를 찾을 수 없습니다” | 존재하지 않는 URL을 직접 입력하거나 만료된 즐겨찾기 링크를 열었을 때 나타납니다. |
| 서비스 차단 | service-blocked (/error-page/service-blocked) | “제출이 일시 중단 되었습니다” | 운영자가 제출을 잠시 막아둔 시간대에 사용자가 계속 접속할 때 안내됩니다. |
| 유효하지 않은 경로 | bad-path (/error-page/bad-path) | “잘못된 URL 경로” | 공유받은 링크를 임의로 수정하거나 허용되지 않은 경로로 이동했을 때 발생합니다. |
| 새로고침 감지 | refresh (/error-page/refresh) | “새로고침 감지” | 진행 중 새로고침·뒤로가기를 눌러 세션이 끊기면 처음부터 다시 시작하도록 표시됩니다. |
| 미지원 브라우저 | invalid-browser (/error-page/invalid-browser) | “지원하지 않는 브라우저” | 구형 브라우저나 WebAssembly를 지원하지 않는 환경에서 접속하면 최신 브라우저로 변경해야 합니다. |
| 해시 검증 실패 | hash_problem (/error-page/hash_problem) | “해시 검증 문제” | 여러 탭을 열거나 단계를 건너뛰어 데이터가 꼬였을 때 처음 단계로 돌아가야 합니다. |
📅 프로젝트 상태 오류
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 프로젝트 종료 | project-closed (/error-page/project-closed) | “현재 프로젝트는 종료되어 접근이 제한되었습니다” | 이미 종료된 캠페인 링크를 다시 열면 더 이상 진행할 수 없다는 메시지가 표시됩니다. |
| 기간 만료 | period (/error-page/period) | “프로젝트 기간 만료” | 제출 가능 기간이 끝난 뒤 늦게 접속하면 기간이 지났다는 안내가 나옵니다. |
| 제출 횟수 제한 | submission-number-limit (/error-page/submission-number-limit) | “제출건이 15개를 초과하였습니다” | 체험용(trial) 프로젝트에서 허용 횟수(15회)를 넘겨 계속 제출하면 제한 안내와 함께 중단됩니다. |
📤 제출 상태 오류
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 이미 승인됨 | already_approved (/error-page/already_approved) | “이미 검증 완료된 모바일입니다” | 같은 기기·브라우저에서 이미 승인받았는데 다시 시도하면 남은 대기 시간과 함께 차단됩니다. |
| 이미 거부됨 | already_rejected (/error-page/already_rejected) | “이미 거부된 제출” | 거부된 뒤 대기 시간이 끝나기 전에 재시도하면 기다리라는 메시지가 나타납니다. |
| 승인 대기 중 | already_pending (/error-page/already_pending) | “현재 검토 중입니다” | 이전 제출이 아직 심사 중인데 추가 제출을 시도할 때 더 이상 진행하지 못합니다. |
| 처리 완료(승인) | processed_submission-approved (/error-page/processed_submission-approved) | “이미 처리된 제출 (승인됨)“ | 승인된 결과 화면을 다시 열어도 추가 조치가 필요 없다고 안내합니다. |
| 처리 완료(거부) | processed_submission-rejected (/error-page/processed_submission-rejected) | “검증이 거부되었습니다” | 거부된 제출을 동일하게 다시 열면 잔여 대기 시간과 함께 재시도 시점을 알려 줍니다. |
| IP 승인 이력 | ip_already_approved (/error-page/ip_already_approved) | “해당 IP로 이미 승인됨” | 같은 네트워크(IP)에서 이미 완료된 검증이 있을 때 다른 사람이 다시 시도하면 제한됩니다. |
| IP 거부 이력 | ip_already_rejected (/error-page/ip_already_rejected) | “해당 IP로 이미 거부됨” | 동일 IP로 여러 번 실패하거나 거부된 상태에서 다시 접속하면 다른 네트워크를 사용하라는 안내가 나옵니다. |
📧 이메일 관련 오류
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 이메일 거부 이력 | email_already_rejected (/error-page/email_already_rejected) | “검증이 거부되었습니다 / 해당 이메일로 이미 거부됨” | 이미 거부된 이메일 주소로 다시 제출하면 대기 시간과 함께 재시도 불가 안내가 표시됩니다. |
🛡️ 보안·사기 탐지 오류
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 위조 의심 | suspected-forgery (/error-page/suspected-forgery) | “위조 의심 감지” | 촬영한 신분증이 흐릿하거나 조작 흔적이 있어 진품으로 확인되지 않을 때 다시 촬영해야 합니다. |
| 파일 업로드 불가 | not-allow-file-upload (/error-page/not-allow-file-upload) | “파일 업로드가 허용되지 않습니다” | 시크릿 모드나 보안 브라우저처럼 카메라·파일 권한이 막힌 환경에서 업로드를 시도하면 권한을 허용하거나 다른 기기를 사용해야 합니다. |
| 얼굴 중복 감지 | face_validation_error (/error-page/face_validation_error) | “중복된 얼굴이 탐지되었습니다” | 이전 제출과 동일한 얼굴이 감지되어 한 사람이 여러 번 시도하는 것으로 판단될 때 고객 지원 안내가 뜹니다. |
| 비정상 행동 | abnormal_action (/error-page/abnormal_action) | “비정상적인 행동이 감지되었습니다” | 캡처 화면 업로드, 과도한 색상 보정, 동일 셀카 복사 등 비정상 촬영 방식이 감지되면 정상적인 절차로 다시 진행해야 합니다. |
⚠️ 이상 탐지 (QS 코드)
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 비정상 검증 거부 | abnormal_verification_denied (/error-page/abnormal_verification_denied) | “비정상 검증 거부” | 짧은 시간에 위험 행동을 반복해 신뢰 점수가 낮아졌을 때, 안내된 시간이 지날 때까지 기다려야 합니다. |
| 비정상 거부 | abnormal_rejected (/error-page/abnormal_rejected) | “비정상 거부” | 심각한 이상 징후가 확인되어 즉시 거부될 때 표시되며, 보안 이슈를 해소한 후에만 재시도할 수 있습니다. |
| IPQS 시스템 오류 | ipqs_system_error (/error-page/ipqs_system_error) | “IPQS 시스템 에러” | VPN·프록시 등 불안정한 네트워크로 IP 안전성 검사를 완료할 수 없을 때 안정적인 네트워크로 변경해야 합니다. |
🌍 IP 리스크 오류
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 카테고리 실패 | ipRisk_failCategory (/error-page/ipRisk_failCategory) | “IP 리스크 카테고리 실패” | VPN, Tor, 데이터센터 등 고위험 네트워크에서 접속하면 다른 네트워크로 전환해야 합니다. |
| 거리 검증 실패 | distanceChecks_ipGeo (/error-page/distanceChecks_ipGeo) | “IP 위치 거리 체크 실패” | GPS 위치와 IP 위치가 멀리 떨어져 있을 때(예: 국내 GPS + 해외 VPN) VPN을 끄고 실제 위치에서 접속해야 합니다. |
| 블랙리스트 국가 | blackliskCountries (/error-page/blackliskCountries) | “블랙리스트 국가” | 차단된 국가에서 접속하면 해당 국가에서는 서비스를 이용할 수 없다는 안내가 표시됩니다. |
| 시간 제한 | ipRisk_durationHours (/error-page/ipRisk_durationHours) | “IP 리스크 기간 제한” | 위험한 네트워크에서 반복 시도해 IP가 일정 시간 잠기면 남은 시간이 끝난 뒤에만 재시도할 수 있습니다. |
⏱️ Rate Limit · Lockout
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 요청 횟수 초과 | rate_limit_exceeded (/error-page/rate_limit_exceeded) | “요청 횟수 제한 초과” | 짧은 시간에 반복으로 새로고침하거나 제출해 요청 한도를 넘기면 잠시 대기해야 합니다. |
| 계정 잠금 | locked_out (/error-page/locked_out) | “계정 잠김” | 여러 차례 실패나 의심되는 활동으로 계정이 잠기면 표시된 시간이 지나야 자동 해제됩니다. |
🔵 토큰 에러 페이지 (/error-page/token-*)
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 토큰 누락 | token-missing (/error-page/token-missing) | “토큰 ID가 작동되지 않았습니다” / 부제: “다른 모바일 기기에서 시도해주세요” | 공유 링크를 복사하면서 토큰 파라미터가 빠졌거나 불완전한 URL을 열 때 나타납니다. |
| 토큰 만료 | token-expired (/error-page/token-expired) | “토큰 만료” / 부제 동일 | 오래전에 받은 링크나 재사용한 토큰으로 접속하면 만료 안내가 표시됩니다. |
| 토큰 승인 완료 | token-approved (/error-page/token-approved) | “토큰 이미 승인됨” | 이미 다른 기기에서 해당 토큰으로 인증을 마친 뒤 다시 열면 중복 진행이 차단됩니다. |
| 토큰 검토 중 | token-pending (/error-page/token-pending) | “토큰 검토 중” | 같은 토큰으로 보낸 제출이 아직 검토 중인데 재진입하면 심사 완료까지 기다려야 합니다. |
| 토큰 거부 | token-rejected (/error-page/token-rejected) | “토큰 거부됨” | 이 토큰으로 제출한 건이 거부된 상태에서 다시 시도하면 담당자에게 문의하라는 메시지가 노출됩니다. |
🔄 얼굴 인증 재시도 (/face-retry/:faceErrorCode)
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 동적 얼굴 재촬영 | face-retry/:faceErrorCode | 각 에러 코드별 번역 키(기본: “다시 촬영”) / 버튼: “다시 촬영” | 조명이 어둡거나 얼굴이 가이드라인 밖으로 벗어나는 등 촬영 품질이 부족하면 재촬영을 안내하며, 특정 코드(invalid_submission_status)일 땐 버튼이 숨겨집니다. |
❌ 런타임 에러 (Error Boundary)
| 유형 | 개발자 코드 & URL | 사용자 메시지 | 발생 상황 |
|---|
| 런타임 에러 | Next.js Error Boundary | 기본: “요청이 실패하였습니다”, “KYC 검증이 거부되었습니다” 특수: “지원하지 않는 브라우저”(WebAssembly 에러), “This browser does not support Storage functionality”(Storage 미지원) | 네트워크 단절, 강제 새로고침, 시크릿 모드처럼 저장 기능이 막힌 환경에서 앱이 비정상 종료될 때 표시되며, “다시 시도” 버튼으로 재시도하거나 최신 브라우저·정상 모드로 전환해야 합니다. |
각 테이블을 기반으로 고객 지원, 모니터링 알림, QA 테스트 케이스를 매핑하면 동일한 화면을 바라보는 모든 이해관계자가 빠르게 상황을 파악할 수 있습니다.