ADR-P-005_지연 인증
## 1. 기본 정보
- ADR ID: ADR-P-005
- 제목: 인증 게이팅 정책 (지연 인증 채택)
- 상태: Accepted
- 작성일: 2026-03-08
- 작성자: YSY
- 관련 ADR: ADR-DS-000, ADR-DS-010, ADR-DS-061, ADR-DS-063
- Supersedes: N/A
- Superseded By: N/A
2. 배경 (Context)
플랫폼은 탐색 전환율을 높이기 위해 최초 진입 장벽을 최소화해야 한다.
초기 실행 시 즉시 로그인을 강제하면:
- 사용자가 가치 확인 전에 이탈할 가능성이 높아진다.
- 신규 유입 채널(공유 링크, 검색 유입)에서 전환 손실이 커진다.
반면 예약 확정/매장 등록 같은 상태 변경 행위는 사용자 식별이 필수다.
- 예약은 사용자 소유 리소스(
reservations,reservation_holds)를 생성한다. - 매장 등록은 파트너 권한/소유권 검증이 필요하다.
- 계정 신뢰의 최소 기준으로 전화번호 인증이 필요하다.
따라서 “탐색은 익명 허용, 상태 변경은 인증 필수” 원칙을 명시적으로 고정한다.
3. 결정 (Decision)
다음 정책을 채택한다.
- 앱 최초 실행 시 로그인은 강제하지 않는다.
- 익명 사용자는 슬롯 탐색/상세 조회를 수행할 수 있다.
- 로그인은 다음 시점에서 요구한다.
- 슬롯 예약 확정(hold 생성/결제 진행 시작 포함)
- 파트너 전환 신청
- 매장 등록/수정
- 인증이 필요한 액션에서 로그인 완료 시, 원래 의도한 액션을 자동 재개한다(pending action resume).
- 인증 실패/취소 시 데이터 변경은 수행하지 않는다.
- 익명 탐색 화면에는 로그인 필요 여부를 약한 힌트로 사전 고지할 수 있다.
- 예: “로그인하면 예약할 수 있어요”, “예약 시 로그인 필요”
- 단, 전체 화면 차단/강제 로그인 배너는 사용하지 않는다.
- 최초 가입 시점에는 전화 인증을 필수로 완료해야 한다.
- 로그인 성공만으로 온보딩 완료로 보지 않는다.
- 전화 인증 미완료 계정은 보호 액션(예약, 파트너 등록/매장 등록)을 수행할 수 없다.
적용 시작 시점: 2026-03-08 (ADR-P-005 채택 시점)
In Scope:
- 모바일 앱 인증 게이팅 UX
- 예약/파트너 도메인 진입 지점의 인증 요구 시점
Out of Scope:
- 인증 수단 자체(소셜 공급자 추가/삭제)
- KYC/사업자 서류 심사 세부 규칙
- 전화 인증 세부 UX/OTP 채널 정책(별도 ADR에서 관리)
4. 경계 및 책임 (Boundaries)
- 인증/세션 경계: Auth 계층이 로그인 상태와 세션 유효성을 책임진다.
- 도메인 경계: 예약/매장 변경 API는 인증 사용자만 허용한다.
- UX 경계: UI는 익명 탐색 허용, 변경 시점 인증 유도를 책임진다.
- 정책 경계: 인증 강제 시점의 원칙은 Product Policy(본 ADR)에서 관리한다.
5. 단일 원천(SoT) 참조
- 인증 게이팅 정책 SoT: ADR-P-005 (본 문서)
- 상태 전이 SoT: ADR-DS-010, ADR-DS-061, ADR-DS-063
- 사용자 흐름 SoT: Docs/Scenario/SCN-001_회원가입_공통.md, Docs/Scenario/SCN-101_파트너_매장_등록.md
- DB 권한 SoT: reservations_rls.sql, reservation_holds_rls.sql
6. 대안 (Alternatives Considered)
대안 A: 앱 최초 실행 즉시 로그인 강제
- 설명: 첫 화면 진입 시점에 인증을 완료해야만 탐색 가능.
- 장점: 권한 모델 단순, 익명 트래픽 최소.
- 단점: 탐색 전 이탈 증가, 신규 유입 전환 손실.
- 미채택 이유: 제품 초기 성장 단계 목표(탐색 전환 개선)와 충돌.
대안 B: 모든 기능 익명 허용 후 서버에서 사후 정합 처리
- 설명: 예약/매장 작업도 비로그인으로 허용하고 나중에 계정 귀속.
- 장점: 초기 UX 마찰 최소.
- 단점: 소유권/결제/멱등성/보안 복잡도 급증.
- 미채택 이유: 예약/결제 도메인의 책임 경계가 불명확해짐.
채택 대안: 지연 인증 게이팅(탐색 익명 + 상태 변경 인증 필수).
7. 결과 (Consequences)
긍정적 결과
- 최초 진입 UX 마찰 감소.
- 슬롯 탐색 기반 전환 퍼널 개선 기대.
- 예약/매장 변경 시점의 보안/소유권 정합성 유지.
부정적 결과
- 게이팅 분기 UI가 늘어나 구현 복잡도 증가.
- pending action resume 실패 시 사용자 혼란 가능.
- 인증 취소 시 재시도 UX 설계가 필요.
8. 영향 범위 (Impact)
- 앱 UX: 예약 버튼/매장 등록 진입 시 로그인 시트 노출.
- 앱 UX: 익명 탐색 화면에 맥락형 로그인 힌트(약한 고지) 노출 가능.
- 인증 UX: 최초 가입자 전화 인증(OTP) 완료 전 보호 액션 차단.
- 상태 관리: pending action 보관 및 로그인 후 재개 로직 필요.
- 백엔드: RLS 정책 준수 경로 강화.
- 문서: Scenario와 ADR 간 상호 참조 유지 필요.
9. 검증 및 운영 확인 (Validation)
- 시나리오 테스트:
- 비로그인 탐색/상세 조회 가능
- 비로그인 예약 시 로그인 유도
- 로그인 성공 후 원래 예약 액션 자동 재개
- 로그인 취소 시 데이터 변경 없음
- 익명 탐색 시 힌트는 노출되지만 탐색 자체는 차단되지 않음
- 전화 인증 미완료 계정은 예약/파트너 등록/매장 등록이 차단됨
- 전화 인증 완료 직후 보호 액션 재개가 정상 동작함
운영 모니터링:
로그인 시트 노출 대비 로그인 완료율
로그인 유도 후 예약 완료율
인증 취소 후 이탈율
장애 대응:
로그인 실패 시 사용자에게 원인/재시도 제공
pending action 재개 실패 시 수동 재시도 CTA 제공
10. 재검토 조건 (Revisit Conditions)
다음 조건 발생 시 본 ADR을 재검토한다.
- 로그인 유도 후 예약 완료율이 기준치 이하로 하락
- 인증 취소 이탈율이 기준치 초과
- 파트너 온보딩 전환율이 목표 대비 악화
- 보안/규제 요구로 익명 탐색 제한 필요성 발생