You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
refactor(onboarding): MVI 전환 파일럿 — ViewModel 3개 + 신호 소비를 Intent 로 #1802
실패 사유 모델 #1863(PR #1963)을 먼저 반영한다. PR #1825의 새 reducer가 errorMessage와 hasVerificationError를 다시 고정하면 #1863에서 reducer·ObserveSignal·테스트를 재작성하므로, 단일 OnboardingFailure를 소비하는 MVI로 적응한다.
이 순서는 MVI 구현의 기능적 전제 추가가 아니라 예정된 상태 모델 재작성을 피하기 위한 선행 순서다. PR의 실제 base도 refactor/1863-onboarding-failure로 맞춘다. 기존 화면 이동과 파일럿 대상 ViewModel 3개 범위는 유지한다.
#1829의 다섯 Content 공개 범위 판단도 PR #1825에 함께 반영한다. Screen의 상태 수집·신호 소비와 Content 렌더를 파일로 분리해 실제 프로덕션 호출 범위로 internal을 정하고, 테스트 때문에 남긴 예외 baseline을 제거한다. #1802와 #1829는 같은 PR에서 닫으며 두 이슈 모두 공통 선행 #1863만 기다린다.
작업 유형
refactor — 동작 변경 없는 구조·책임·경계 개선
주 담당 모듈
onboarding — 온보딩
개요
MVI 전환 파일럿. onboarding 의 ViewModel 3개를 MviViewModel 로 옮기고, 여기서 확정된 관용구가 나머지 모듈 전환의 기준이 된다.
왜 onboarding 이 파일럿인가
근거
수치
ViewModel 수
3개 — 가장 적다
일회성 신호 소비 함수
3/3 전부onXxxConsumed() 노출 — Intent 로 접는 이득이 가장 직접적이다
presentation @Test
23개 — 되돌리기 부담이 가장 작다
상태 홀더 분산
SignUpViewModel 3개
대상
Consumed 신호 자체는 없애지 않는다. 일회성 이벤트를 UiState 의 nullable 필드로 흡수하는 것은 이 레포의 정본 규약(#228)이고 MVI 와 충돌하지 않는다 — 바뀌는 것은 소비 경로다. onXxxConsumed() public fun 을 따로 두지 않고 Intent.ConsumeXxx 로 접는다.
네비게이션은 이 전환 범위 밖이다. 화면 콜백은 기존 방식을 유지하고 개수를 건드리지 않는다 — 목적지 결정은 Navigation 3 이관 계열이 정한다(#1810 에서 접점 판정). onboarding 은 #1789(비밀번호 찾기 3화면 배선)가 열려 있어 착수 전 충돌 여부를 확인한다.
Activity
2 remaining items
github-actions commentedon Sep 3, 2026
이 이슈를 맡은 PR 은 #1825 다 (base
test/1801-mvi-konsist-contract).base 가 기본 브랜치(
develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에아무것도 표시하지 않는다. 본문에
Closes #N이 있어도 마찬가지다 — 그 링크는 기본 브랜치를target 하는 PR 에서만 만들어진다.
PR 이 닫히거나 머지되면 이 이슈의
pr-open라벨은 다음 리컨사일에서 떨어진다.test(platform): Content seam baseline 이 판정 이슈 #1829 를 가리키게 한다 (#1802)