> ## Documentation Index
> Fetch the complete documentation index at: https://developers.argosidentity.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 세션 여정

> 한 제출건이 라이브폼에서 거치는 전 과정을 시간순으로 추적하고, 사용자가 특정 결과·에러를 만난 원인을 해석하는 방법을 안내합니다.

## 세션 여정이란

세션 여정(Session Journey)은 한 사용자가 라이브폼에 진입한 순간부터 최종 결과(승인·거절·보류)에 이르기까지 발생한 **모든 이벤트를 하나의 제출건 단위로 시간순으로 모아 보여주는** 대시보드 기능입니다.

각 이벤트는 프론트엔드(사용자 화면에서 관측된 동작)와 백엔드(서버에서 실행된 검증·판정) 양쪽에서 함께 수집됩니다. 이를 통해 "이 사용자가 **왜** 이 단계에서 막혔는지", "거절·보류 사유가 무엇인지"를 역추적할 수 있습니다.

<Info>
  세션 여정은 [이벤트 로그](/dashboard/ko/event)가 관리자 활동·삭제 이력을 추적하는 것과 달리, **한 제출건의 검증 진행 과정**에 초점을 맞춥니다.
</Info>

## 세션 상태

세션 여정 목록에서 각 제출건은 **세션 상태**로 진행 정도를 한눈에 보여줍니다. 이 상태는 최종 KYC 결정(승인·거절·보류)과는 다른 값으로, 여정이 어디까지 진행됐는지를 나타냅니다.

| 상태            | 의미                                          |
| ------------- | ------------------------------------------- |
| `IN_PROGRESS` | 진행 중 — 아직 최종 결과에 도달하지 않음                    |
| `COMPLETED`   | 완료 — 사용자가 여정을 끝까지 마침 (결과는 승인·거절·보류 모두 가능)   |
| `DROPPED`     | 중도 이탈 — 사용자가 끝까지 진행하지 않고 이탈 (최종 결과 페이지 미도달) |
| `ERROR`       | 오류 — 에러 페이지 등으로 정상 흐름에서 이탈                  |

<Note>
  `COMPLETED`는 "여정을 끝까지 진행했다"는 의미일 뿐 "승인됐다"는 뜻이 아닙니다. 최종 승인·거절·보류 여부는 항상 BE 결정 이벤트(`APPROVED`·`REJECTED`·`PENDING`)로 확인하세요.
</Note>

## 해석 시 핵심 주의

<Warning>
  **이벤트는 시간순으로 나열되지만, 실제로는 여러 검증이 동시다발적으로 실행됩니다.**

  화면에 위에서 아래로 순서대로 표시된다고 해서 "앞 이벤트가 뒤 이벤트의 원인"이라고 단정하면 안 됩니다. 예를 들어 신분증 인식·라이브니스·연령 검증 등은 거의 동시에 진행되며, 표시 순서는 기록 시점의 미세한 차이일 뿐입니다. **인과 관계는 순서가 아니라 각 이벤트의 결과값과 사용자 영향으로 판단하세요.**
</Warning>

## 프론트(FE)와 백엔드(BE) 이벤트

세션 여정의 이벤트는 출처에 따라 두 종류로 나뉩니다.

| 출처           | 의미                     | 예시                        |
| ------------ | ---------------------- | ------------------------- |
| **FE (프론트)** | 사용자가 본 화면·동작에 대한 관측 신호 | 화면 진입, 카메라 활성화, 에러 페이지 진입 |
| **BE (백엔드)** | 서버에서 실행된 실제 검증·판정·종결   | 신분증 인식, 얼굴 비교, 최종 승인/거절   |

<Note>
  **차단·거절의 실제 판정 기준은 항상 BE 이벤트입니다.** FE 이벤트(예: `ERROR_PAGE_VIEWED`, `FINAL_PAGE_VIEW`)는 사용자가 그 화면에 도달했다는 관측일 뿐이며, 최종 결과는 같은 제출건의 BE 결정 이벤트(`APPROVED`·`REJECTED`·`PENDING`)로 확인해야 합니다.

  FE와 BE는 같은 동작을 짝으로 기록하기도 합니다. 예: `FRONT_SESSION_START`(FE) ↔ `SESSION_CREATED`(BE), `CREATE_FLOW`(FE 화면의 API 호출) ↔ `FLOW_ID_ISSUED`(BE 처리 결과). FE는 "화면이 무엇을 했나", BE는 "서버가 어떻게 판정했나"를 봅니다.
</Note>

## 여정의 단계

세션 여정은 크게 **사전 → 메인 → 사후** 세 구간으로 흐릅니다.

<Steps>
  <Step title="사전 — 진입 및 정책 점검">
    세션 생성, 토큰·중복·IP·기기 검증 등 본 검증 전 게이팅(Guard) 단계입니다. 이 구간에서 막히면 사용자는 신분증 촬영에 진입하지 못하고 차단(BLOCKED)됩니다.
  </Step>

  <Step title="STEP1 — 신분증 검증">
    신분증 촬영·OCR 인식·라이브니스·연령·만료·블랙리스트 등 신분증 관련 검증이 동시에 진행됩니다. 통과 시 제출건(Submission)이 생성됩니다.
  </Step>

  <Step title="Pre-STEP2 — 계좌 검증 (선택)">
    1원 송금·예금주명 조회 등 계좌 기반 검증이 필요한 프로젝트에서만 발생합니다.
  </Step>

  <Step title="STEP2 — 셀피·얼굴 검증">
    셀피 라이브니스·얼굴 비교·중복·정부 진위확인·커스텀 정책 등 얼굴 관련 검증이 동시에 진행됩니다.
  </Step>

  <Step title="최종 결정 및 통보">
    모든 검증 결과를 종합해 승인·거절·보류 중 하나로 종결하고, 웹훅·이메일로 결과를 통보합니다.
  </Step>

  <Step title="사후 — 결과 페이지">
    사용자가 결과 페이지에 도달하며 여정이 종료됩니다.
  </Step>
</Steps>

## 최종 결정 3가지

메인 구간이 끝나면 제출건은 반드시 다음 세 가지 중 하나로 종결됩니다.

<CardGroup cols={3}>
  <Card title="APPROVED (승인)" icon="circle-check">
    모든 검증을 통과해 자동 승인됐습니다. 별도 사유 없음.
  </Card>

  <Card title="REJECTED (거절)" icon="circle-xmark">
    검증·정책 실패 또는 재시도 한도 초과로 거절됐습니다. 사유는 `reason` 값으로 구분됩니다.
  </Card>

  <Card title="PENDING (보류)" icon="circle-pause">
    자동 판정을 보류하고 수동 검토가 필요한 상태입니다. 사유는 `reason` 값으로 구분됩니다.
  </Card>
</CardGroup>

거절·보류의 구체적 사유 코드는 [세션 여정 이벤트 레퍼런스](/dashboard/ko/session-journey/event-reference)의 "최종 결정 사유" 표에서 확인하세요.

## 에러 원인 해석하기

각 이벤트에는 **사용자 영향(User Impact)** 이 표시됩니다. 이 값이 사용자가 실제로 어떤 영향을 받았는지를 나타내므로, 에러를 해석할 때 가장 먼저 확인해야 합니다.

| 사용자 영향      | 의미                       |
| ----------- | ------------------------ |
| `NONE`      | 영향 없음 (정상 진행 또는 기록용 이벤트) |
| `BLOCKED`   | 차단 — 정상 흐름이 중단됨          |
| `RETAKE`    | 재촬영·재시도 유도               |
| `PENDING`   | 보류 — 수동 검토 대기            |
| `REJECTED`  | 거절 — 최종 거절로 종결           |
| `APPROVED`  | 승인                       |
| `COMPLETED` | 해당 단계 완료                 |

<Tip>
  에러를 해석하는 순서: **① 최종 결정 이벤트(`APPROVED`·`REJECTED`·`PENDING`)와 그 `reason`을 먼저 확인 → ② 같은 단계에서 `BLOCKED`·`RETAKE` 영향을 준 BE 검증 이벤트를 찾음 → ③ FE 관측 이벤트로 사용자가 본 화면을 보조 확인.** 표시된 순서대로 위에서부터 읽지 마세요.
</Tip>

전체 이벤트 목록과 의미는 [세션 여정 이벤트 레퍼런스](/dashboard/ko/session-journey/event-reference)를 참고하세요.
