Skip to content

Flow: Onboarding (첫 실행 인트로)

첫 실행 시 1회 노출되는 가치 소개 인트로. App 전용 (Web 없음). lazy-auth 정체성에 맞춰 로그인 불필요 · 스킵 가능, 끝나면 홈(/disclosures)으로 진입한다. 로그인/종목 등록 강요 없음 — 그건 이후 보호 액션 시점의 auth-gate 가 담당.

💡 시각 미리보기: design site / onboarding

트리거 / 노출 정책

  • 첫 실행 1회만 — 플래그는 bootstrap() 에서 await 로 읽어 seed provider(onboardingCompletedSeedProvider)에 주입. 라우터 redirect 가 이 값을 읽어 미완료면 /onboarding 으로, 완료면 /onboarding 진입을 /disclosures 로 되돌림. 첫 프레임부터 확정값이라 신규/복귀 화면 깜빡임(race) 없음
  • 비로그인 진입 가능 — 로그인 요구 안 함 (lazy auth). 온보딩 중 인증 흐름 없음
  • 완료/스킵 시 OnboardingController.complete()markCompleted() 저장 + state=true → refreshListenable 이 redirect 재평가 → 홈. 다시 안 뜸 (재설치/스토리지 초기화 전까지)
  • 라우팅: 완료 → context.go('/disclosures') (redirect 도 동일 보장)
  • fail-safe: seed override 누락 시 기본 true(=온보딩 skip) — 신규 사용자에게 못 보여줄 뿐, 앱에 갇히지 않음

슬라이드 구성

가치 2개를 슬라이드 2장으로. 각 장 = 실제 예시 프리뷰(hero) + 타이틀 + 설명 + 페이지 닷 + CTA. 추상 아이콘 대신 실제 결과물을 보여줘 가치를 즉시 증명(show, don't tell).

#hero 프리뷰타이틀설명CTA
S1AnalysisCard 미니 프리뷰 — 실제 분석 예시(정적 샘플): "AI 분석" + 긍정 badge + 요약 본문 + 핵심 포인트 2개복잡한 공시, AI가 한입에길고 어려운 DART 공시를 AI가 핵심만 한입 크기로 요약해드려요."다음"
S2푸시 알림 배너 mock — 앱 아이콘 + "공시한입" + "삼성전자 새 공시" + 요약 한 줄관심 종목 새 공시, 즉시 알림관심 종목에 새 공시가 올라오면 푸시로 바로 알려드려요."시작하기"

hero 프리뷰는 정적 샘플 — 라이브 데이터 X. S1 카드는 AnalysisCard SSOT 컴포넌트의 축소판(disclaimer/feedback 생략한 컴팩트 버전), S2 는 OS 푸시 배너를 흉내낸 mock. 실제 구현 시 정적 위젯으로 박아넣음(공시 데이터 fetch 안 함). 샘플 카피는 실제 분석 톤을 대표하는 깔끔한 고정값.

  • 상단 우측 "건너뛰기" — S1 에 노출, 마지막 슬라이드(S2)에선 숨김(시작하기로 종료되므로 중복)
  • 페이지 닷 2개 — 현재 슬라이드 active (넓은 pill)
  • 슬라이드 전환: 가로 swipe + CTA 탭 둘 다 (PageView)

동작

  • S1 "다음" → S2 로 전환 (PageView 애니메이션)
  • S2 "시작하기"onboarding_completed = true 저장 → 홈 진입
  • "건너뛰기" (S1) → 즉시 onboarding_completed = true 저장 → 홈 진입
  • 가로 swipe 로도 슬라이드 이동 (마지막에서 더 swipe 해도 종료 X — CTA 로만 종료)

상태 분기

  • O1. 슬라이드 1 — AI 한입 요약, "건너뛰기" 노출, CTA "다음", 닷 1 active
  • O2. 슬라이드 2 — 관심 종목 알림, "건너뛰기" 숨김, CTA "시작하기", 닷 2 active

설계 결정 (왜)

  • 가치 인트로형 (액티베이션형 아님) — 비로그인 우선 앱이라 첫 실행에 로그인/종목등록 강요하면 마찰. 가치만 전달하고 홈으로 보냄. 등록·로그인은 사용자가 가치를 느낀 뒤 보호 액션에서 auth-gate 로 유도
  • 스킵 가능 — 마찰 최소화. 한 번 보면 다시 안 뜸
  • 슬라이드 2장 — AI 요약(핵심 가치) + 관심 종목 알림(리텐션 훅) 2개만. quota("주 10회")·실시간 피드는 슬라이드에서 제외(과다 정보 회피, 본 화면에서 자연 노출)

구현 결정 (확정)

  • 첫 실행 감지 → go_router redirect + 부트 await 주입 seed provider. (부트 스플래시 게이트 방식 기각 — redirect 가 /onboarding 라우트를 일급으로 두고 라우팅 일관)
  • hero 프리뷰 → 온보딩 전용 경량 위젯(_AnalysisPreview / _PushPreview). 풀 AnalysisCard(required bool 10+개)는 과함 → 정적 샘플엔 경량이 적합. 비주얼은 AnalysisCard 토큰(surface/border/radius/successBg) 그대로 따름
  • 푸시 권한 요청notifications 화면 최초 진입에 위임. 온보딩 S2 는 알림 가치 소개만, 권한 팝업 X

관련 docs