Repository navigation
feat(onboarding): 비밀번호 찾기 3화면을 온보딩 그래프에 배선한다 — #457 에서 Nav3 재작성분 분리 #1789
Copy link
Copy link
Open
Labels
Description
2026-09-08 재작성 방지 순서
실패 사유 모델 #1863(PR #1963)을 먼저 반영한다. FindPasswordFlowHost의 소셜 계정 차단·스낵바 소비가 옛 isSocialSignUpAccount/errorMessage 두 칸 대신 단일 실패 사유의 표시 결정을 읽도록 PR #1826을 적응한다. 실제 base도 refactor/1863-onboarding-failure로 맞춘다.
공유 ViewModel 수명, 완료 뒤 뒤로가기 차단, 로그인으로 돌아오는 로컬 스택 계약은 유지한다. 이 선행은 새 배선을 곧 다시 고치는 중복 작업을 피하기 위한 순서다.
작업 유형
enhancement — 신규 기능·기존 기능 개선
주 담당 모듈
onboarding — 온보딩
개요
#457 이 세우는 비밀번호 찾기 흐름에서 Navigation 3 이관 때 통째로 다시 쓰는 배선 32줄 을 분리해 받는다. #457 은 화면·ViewModel·저장소·테스트만 남기고, 이 이슈가 그 화면들을 실제로 도달 가능하게 만드는 배선을 소유한다.
#1698 이 온보딩 그래프를 Nav3 로컬 스택으로 이관하므로, 그 뒤에 Nav3 계약으로 한 번만 배선한다. Nav2 로 먼저 배선하면 #1698 이 같은 32줄을 다시 쓴다.
범위 — Nav3 계약으로 배선한다
| 대상 | Nav2 였다면 | Nav3 에서 |
|---|---|---|
| 라우트 등록 3개 | composable<FindPasswordRoute> 등 |
entry<FindPasswordRoute> |
OnboardingNavActions 구현 4개 |
navController.navigate(...) |
로컬 NavBackStack 조작 |
| 인증·변경 화면 비우기 | popUpTo<FindPasswordRoute> { inclusive = true } |
소비된 entry 제거 |
| 완료 → 로그인 복귀 | popUpTo<LoginRoute> { inclusive = true } |
스택을 로그인 하나로 수렴 |
3화면 공유 FindPasswordViewModel |
getBackStackEntry(그래프) + hiltViewModel(parentEntry) |
rememberViewModelStoreNavEntryDecorator() 스코프 |
마지막 항목이 #1601 이 이관 위험으로 센 그래프 스코프 공유 VM 의 8번째다. #1698 에 유입을 인계해 뒀다.
보존해야 할 동작
- 이메일·인증번호·새 비밀번호 입력이 3화면에 걸쳐 같은 VM 인스턴스로 유지된다.
- 흐름 이탈 시 그 VM 이 정리된다.
- 비밀번호 변경 성공 뒤 뒤로가기로 인증·변경 화면에 돌아갈 수 없다 — 인증번호는 서버가 이미 소비했다.
- 완료 화면의 「로그인」 은 어느 경로로 들어왔든 로그인 화면 하나로 수렴한다.
- 로그인 화면의 「계정 찾기」 링크가 이 흐름을 연다.
완료 조건
-
FindPasswordScreen·FindPasswordResetScreen·FindPasswordCompleteScreen이 실제 앱 경로로 도달 가능하다. - 위 보존 동작 5건이 계측 또는 Robolectric 테스트로 검증된다.
-
AppOnboardingCanaryTest.findAccountLink_opensPasswordResetFlow가 통과한다 (비밀번호 찾기 — 이메일 인증 후 비밀번호 재설정 #457 에서 함께 들어온다). - Nav2 API (
composable<>·popUpTo·getBackStackEntry) 를 새로 쓰지 않는다. - 비밀번호 찾기 — 이메일 인증 후 비밀번호 재설정 #457 이 남긴 미참조 프로덕션 선언이 해소되어
ProductionVisibilityKonsistTestbaseline 에서 빠진다.
의존 관계
- blocked_by refactor(platform): 소관 그래프를 Navigation 3 로컬 스택으로 이관 #1698 — 온보딩 그래프가 Nav3 로컬 스택으로 이관된 뒤에 배선한다.
자식 이슈
없음
참고
- 분리 원본: 비밀번호 찾기 — 이메일 인증 후 비밀번호 재설정 #457
- 이관 소유: refactor(platform): 소관 그래프를 Navigation 3 로컬 스택으로 이관 #1698 · 최종 루트 전환 refactor(platform): 앱 루트를 Navigation 3 NavDisplay로 전환 #1702
- Nav2 백스택 회귀 기준: test(platform): Nav2 백스택 회귀 기준이 0건이다 — 탭 상태 복원·인증 스택 경계·flow-scoped VM 수명 전부 미검증 #1601 (PR test(app): Nav2 백스택 회귀 기준 20건을 JVM 으로 못박는다 (#1601) #1612 로 20건 머지됨)
- 파일럿 실측 함정: 마음의 기록 허브를 Navigation 3 로컬 스택으로 — #1697 파일럿 #959 —
entryDecorators를 넘기면 기본 목록을 대체하므로rememberSaveableStateHolderNavEntryDecorator()도 함께 넣어야rememberSaveable이 안 깨진다
Reactions are currently unavailable
Activity
refactor(app,onboarding): 비밀번호 찾기 화면 배선을 떼어 Nav3 이관 뒤로 미룬다 (#1789)
test(platform): 배선 대기 중인 비밀번호 찾기 4선언을 visibility baseline 에 싣는다 (#1789)
github-actions commentedon Sep 3, 2026
이 이슈를 맡은 PR 은 #1826 다 (base
refactor/1698-platform-nav3).base 가 기본 브랜치(
develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에아무것도 표시하지 않는다. 본문에
Closes #N이 있어도 마찬가지다 — 그 링크는 기본 브랜치를target 하는 PR 에서만 만들어진다.
PR 이 닫히거나 머지되면 이 이슈의
pr-open라벨은 다음 리컨사일에서 떨어진다.