SCENARIO-USER-010_앱 최초 실행 및 첫 행동 흐름
SCENARIO-USER-010 앱 최초 실행 및 첫 행동 흐름
1. Metadata
- Status: draft
- Date: 2026-03-09
- Owner: YSY
- Related ADRs: ADR-190, ADR-200, ADR-210, ADR-260
2. Goal
비로그인 사용자가 앱을 처음 실행해 탐색을 시작하고, 첫 상태 변경 액션 시 로그인 인터셉트를 거쳐 원래 액션으로 복귀하는 표준 흐름을 정의한다.
3. Preconditions
- 앱은 신규 설치 상태이며 유효 세션이 없다.
- 네트워크는 기본적으로 연결되어 있다.
- 위치 권한은 아직 결정되지 않았다.
4. Main Flow (Happy Path)
- 앱 실행 -> Bootstrap 시작
- 시스템 점검
- 유지보수/강제 업데이트 조건이 없으면 다음 단계로 진행
- 라우팅 초기화
- 저장 경로가 없거나 복원 불가면 기본 탐색 화면으로 진입
- 탐색 화면 진입
- 비로그인 상태로 리스트/상세 조회 가능
- 상세 진입 후 상태 변경 액션(예약/구독 등) 선택
- 로그인 인터셉트 표시
- 바텀시트/풀스크린 로그인으로 인증 유도
- 전화 인증(OTP) 완료
- 원래 액션으로 자동 복귀
- 액션 성공/실패 결과를 즉시 피드백
5. Alternate Flows
A1. 저장 라우트 복원 실패
- 유효하지 않은 경로/파라미터는 폐기하고 기본 탐색으로 진입한다.
- 사용자에게 기술적 오류 상세 대신 간단 안내를 1회 표시한다.
A2. 최초 실행 오프라인
- 오프라인 상태 UI를 먼저 노출하고 재시도 CTA를 제공한다.
- 연결 복구 시 동일 컨텍스트에서 재시도한다.
A3. 위치 권한 거부
- 탐색은 계속 허용하고 위치 기반 정밀 결과만 제한한다.
- 권한 요청 재시도 CTA와 수동 지역 선택 경로를 제공한다.
A4. OTP 실패/만료
- 남은 시도 횟수와 만료 시간을 명시한다.
- 임계 초과 시 잠금 상태를 안내하고 재시도 가능 시각을 제공한다.
A5. 로그인 완료 후 복귀 토큰 만료
- 복귀 실패를 안내하고 사용자를 안전한 기본 화면(탐색/상세)으로 유도한다.
- 상태 변경 액션은 사용자가 명시적으로 다시 실행하도록 한다.
6. UX State Matrix
| State | Trigger | UI Response | CTA |
|---|---|---|---|
| bootstrap_loading | 앱 시작 | 스플래시/로딩 | 대기 |
| bootstrap_fallback | 부트스트랩 지연/복원 실패 | 기본 탐색 진입 + 안내 | 계속 탐색 |
| auth_intercept | 비로그인 상태 변경 액션 | 로그인 인터셉트 | 로그인/취소 |
| otp_verify | 전화 인증 필요 | OTP 입력 + 남은 시도/만료 시간 | 인증/재전송 |
| empty_permission | 위치 권한 거부 | 권한 제한 안내 | 권한 허용/지역 선택 |
| empty_offline | 네트워크 단절 | 오프라인 안내 | 재시도 |
| empty_no_data | 인근 데이터 없음 | 빈 상태 안내 | 필터 완화/반경 확장 |
7. ADR Impact
- ADR-190: 최초 실행 분기 순서와 복원 실패 폴백을 명시한다.
- ADR-200: 인터셉트 후 복귀 토큰 정책과 실패 처리 기준을 명시한다.
- ADR-210: OTP 실패/잠금 UX 정보 노출 기준을 명시한다.
- ADR-260: 최초 실행 빈 상태(권한/오프라인/데이터 없음) 분기 기준을 명시한다.
8. Acceptance Criteria
- 최초 실행 시 기본 탐색 화면으로 안정적으로 진입한다.
- 비로그인 상태 변경 액션은 항상 로그인 인터셉트로 연결된다.
- 로그인/OTP 완료 후 원래 액션 컨텍스트로 복귀한다.
- 복귀 실패/권한 거부/오프라인/빈 데이터 상태가 각각 다른 UX로 노출된다.
- 관련 ADR/UX/SPEC 문서가 본 시나리오와 충돌하지 않는다.