ADR-P-005_지연 인증

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)

다음 정책을 채택한다.

  1. 앱 최초 실행 시 로그인은 강제하지 않는다.
  2. 익명 사용자는 슬롯 탐색/상세 조회를 수행할 수 있다.
  3. 로그인은 다음 시점에서 요구한다.
  • 슬롯 예약 확정(hold 생성/결제 진행 시작 포함)
  • 파트너 전환 신청
  • 매장 등록/수정
  1. 인증이 필요한 액션에서 로그인 완료 시, 원래 의도한 액션을 자동 재개한다(pending action resume).
  2. 인증 실패/취소 시 데이터 변경은 수행하지 않는다.
  3. 익명 탐색 화면에는 로그인 필요 여부를 약한 힌트로 사전 고지할 수 있다.
  • 예: “로그인하면 예약할 수 있어요”, “예약 시 로그인 필요”
  • 단, 전체 화면 차단/강제 로그인 배너는 사용하지 않는다.
  1. 최초 가입 시점에는 전화 인증을 필수로 완료해야 한다.
  • 로그인 성공만으로 온보딩 완료로 보지 않는다.
  • 전화 인증 미완료 계정은 보호 액션(예약, 파트너 등록/매장 등록)을 수행할 수 없다.

적용 시작 시점: 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)

  • 시나리오 테스트:
  1. 비로그인 탐색/상세 조회 가능
  2. 비로그인 예약 시 로그인 유도
  3. 로그인 성공 후 원래 예약 액션 자동 재개
  4. 로그인 취소 시 데이터 변경 없음
  5. 익명 탐색 시 힌트는 노출되지만 탐색 자체는 차단되지 않음
  6. 전화 인증 미완료 계정은 예약/파트너 등록/매장 등록이 차단됨
  7. 전화 인증 완료 직후 보호 액션 재개가 정상 동작함
  • 운영 모니터링:

  • 로그인 시트 노출 대비 로그인 완료율

  • 로그인 유도 후 예약 완료율

  • 인증 취소 후 이탈율

  • 장애 대응:

  • 로그인 실패 시 사용자에게 원인/재시도 제공

  • pending action 재개 실패 시 수동 재시도 CTA 제공


10. 재검토 조건 (Revisit Conditions)

다음 조건 발생 시 본 ADR을 재검토한다.

  • 로그인 유도 후 예약 완료율이 기준치 이하로 하락
  • 인증 취소 이탈율이 기준치 초과
  • 파트너 온보딩 전환율이 목표 대비 악화
  • 보안/규제 요구로 익명 탐색 제한 필요성 발생