Skip to content

refactor(setting): MVI 전환 — setting·timeletter 몫 총괄 #1813

Closed as not planned
1 of 2 issues completed
Closed as not planned

Description

@OnlyReadOneBook

작업 유형

refactor — 동작 변경 없는 구조·책임·경계 개선

주 담당 모듈

setting — 설정

개요

MVI 전환(#1811) 중 setting·timeletter 담당 몫을 묶는다.

자식

이슈 대상 규모
#1805 setting VM 11개 · Screen 17개 · on* 콜백 88개(레포 최다) · @Test 46개 · Channel 5개
#1806 timeletter VM 7개 · Screen 7개 · on* 콜백 45개 · @Test 20개

착수 조건

이 역할이 먼저 정리하는 편이 나은 것

두 모듈 모두 Navigation 3 이관이 병행 중이라 같은 파일을 건드린다.

Nav3 이관을 먼저 끝내는 편이 충돌이 적다. 순서는 담당자가 정한다.

자식 이슈

참고

전체 총괄: #1811 · 기반 총괄: 이 이슈의 선행인 #1800 · #1802

Activity

  1. added
    refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업
    on Sep 3, 2026
  2. OnlyReadOneBook commented on Sep 13, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    총괄 실측 (2026-09-13, origin/develop 7d87aa3)

    이 이슈로 쓸 코드는 0줄이고 진행률은 자식 #1805 · #1806 이 낸다. 착수 조건과 자식 상태를 develop 실코드로 다시 재봤다. 본문 표와 어긋난 곳도 아래에 적는다. 본문은 손대지 않는다.

    착수 조건 1. #1800 (MviViewModel 베이스): 채워졌다

    산출물이 develop 에 실재한다.

    파일 규모와 위치 출처
    core/ui/src/main/kotlin/com/afternote/core/ui/mvi/MviContract.kt 41줄. MviIntent 24, UiState 31, ReducerEvent 41 1cd127a (PR #1822)
    core/ui/src/main/kotlin/com/afternote/core/ui/mvi/MviViewModel.kt 83줄. abstract class 47, onIntent 66, reduce 74 1cd127a (PR #1822)
    core/ui/src/main/kotlin/com/afternote/core/ui/mvi/ObserveSignal.kt 58줄. @Composable fun ObserveSignal 42 1cd127a (PR #1822)
    docs/convention/mvi.md 143줄 018dfc9 (PR #1823)
    konsist/src/test/kotlin/com/afternote/konsist/MviContractKonsistTest.kt 493줄. 규칙 A 46, 규칙 B 63, sealed 검사 97 018dfc9 · 77b65d0 · 3928967 (PR #1823)

    본문은 이 몫을 #1800 하나로 적었지만, 문서와 konsist 가드는 #1801 이 세웠다(PR #1823, 2026-09-07 머지). #1800 · #1801 둘 다 CLOSED 라 조건 자체는 걸리지 않는다. 이 이슈의 blocked_by 에 남은 것은 #1802 하나다.

    착수 조건 2. #1802 (온보딩 파일럿): 안 채워졌다

    #1802 는 OPEN 이고 PR #1825 가 열려 있다. #1825 의 base 가 develop 이 아니라 refactor/1863-onboarding-failure 라, #1802 를 막고 있는 #1863 이 먼저 들어가야 한다. 관용구가 develop 에 확정되는 시점은 그 뒤다.

    develop 실코드: 18개 전부 미전환

    setting 11 + timeletter 7 = 18개 ViewModel 이 모두 : ViewModel() 이다. feature/ 아래 MviViewModel 참조는 0건이다.

    konsist allowlist 도 그대로다.

    • ISSUE_1805_SETTING 11개. MviContractKonsistTest.kt:438, 항목은 440-450
    • ISSUE_1806_TIMELETTER 7개. 같은 파일 454, 항목은 456-462
    • PENDING_MVI_MIGRATION 전체 51개(:471) 중 이 이슈 몫이 18개

    자식 #1805 (setting): 본문 표와 범위가 다르다

    본문 표는 "VM 11개" 로 적혀 있는데, #1805 는 ReceiverListViewModel 하나로 좁혀졌고 나머지는 다른 이슈·PR 이 가져갔다. allowlist 11줄의 현재 임자는 이렇다.

    allowlist 항목 빼는 PR 그 PR 의 base
    ConnectedAccounts, DeliveryCondition, ProfileEdit, PushNotification, ReceiverEdit, ReceiverRegister (6) #1967 (#1502) codex/1695-setting-nav3
    ReceiverList (1) #2018 (#1805) refactor/1502-setting-state-mvi
    Setting (1) #1925 (#708) refactor/1502-setting-state-mvi
    AppLockSetup, PassKey (2) #1927 (#1944) refactor/1502-setting-state-mvi
    InsertPassword (1) #2005 (#1064). 전환이 아니라 삭제다 develop

    11개 전부 열린 PR 에 임자가 있고, develop 에 닿은 것은 0개다. #1805 의 blocked_by 가 비어 있는 것도 이 재분배와 맞는다. 남은 독립 범위가 #1502 · #1802 의 소비처와 겹치지 않아서다.

    자식 #1806 (timeletter): 착수 전

    PR 이 없다. blocked_by 에 #1802 가 그대로 있다. 같은 파일을 건드리는 열린 PR 은 #1905(#1921 재진입 갱신)와 #1365(#714 실패 상태) 둘인데, 두 PR 의 diff 에 MviViewModel 이 0건이라 전환분이 아니라 충돌면이다. allowlist 7줄은 아무도 빼지 않는다.

    Nav3 선행 정리: setting 쪽은 스택이 순서를 이미 정했다

    본문은 "순서는 담당자가 정한다" 로 열어 뒀는데, setting 은 PR 스택이 Nav3 를 맨 밑에 깔아 답을 냈다.

    develop
     └ #1962  codex/1695-setting-nav3        (#1695, draft)
        └ #1967  refactor/1502-setting-state-mvi  (#1502)
           ├ #2018  refactor/1805-receiver-list-mvi (#1805)
           ├ #1925  handoff/708-setting-1hyok       (#708)
           └ #1927  handoff/555-setting-1hyok       (#1944)
    

    setting MVI PR 4개가 전부 draft 인 #1962 위에 얹혀 있다. #1962 가 draft 를 벗고 들어가기 전에는 위의 것들이 develop 에 못 닿는다. timeletter 쪽 #1696 · #1301 은 열린 PR 이 없어 순서가 아직 미정이다.

    남은 것

    본문 표의 "#1805 setting VM 11개" 는 지금 범위와 맞지 않는다. 고쳐 쓰려면 담당자가 본문을 바꾸는 편이 낫겠다.

  3. OnlyReadOneBook commented on Sep 23, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    총괄 이슈를 두지 않기로 정리하면서 닫습니다(2026-09-23). 남은 전환은 하위 이슈가 각자 진행합니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:setting설정 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions