refactor(app): 홈·수신자 홈 화면 feature 모듈 이전 — app 잔존 presentation 정리 #546
Copy link
Copy link
Labels
enhancementNew feature or requestNew feature or request
Description
Note
(2026-08-23) 구현 PR 존재 — 이 이슈는 PR #917 이 아래 원 범위 그대로(발신자 홈 → :feature:home:presentation 신설 + 수신자 홈 → :feature:receiver:presentation) 구현해 리뷰 대기 중이다. 같은 날 있었던 이 이슈의 범위 축소 편집(수신자 홈만 남기고 발신자 홈을 #926 로 위임)은 그 PR 존재를 확인하지 않은 채 이뤄진 것이라 되돌렸다. 홈 담당 이관(정일혁 → @Sadturtleman, 수신자 홈 화면 포함)에 따른 후속 정비(소셜 아이콘·getIconResForType → core:ui 등)는 #926 으로 진행한다.
📜 Overview (Required)
app 모듈에 홈 화면 구현이 그대로 남아 있다. 다른 기능은 모두 feature/<도메인>/presentation 으로 분리돼 있는데 홈만 com.afternote.afternote_fe.screen 아래에 있고, 그 패키지에는 presentation 계층 이름조차 없다.
실측(2026-07-27):
- 수신자 홈 13개 파일(
screen/receiver/**). 갈 자리인:feature:receiver:presentation은 2026-05-27 "수신자 기능 모듈 분리 및 관련 도메인 로직 이전" 커밋에서 등록됐지만 소스 0개다(build.gradle.kts+AndroidManifest.xml뿐). compose·navigation·hilt 의존까지 이미 선언돼 있어 화면을 받을 준비는 끝나 있다 — 그 커밋이 domain 만 옮기고 멈춘 상태. - 발신자 홈 3개 파일(
HomeTabScreen·HomeTabViewModel·WeeklySummaryGrid) +usecase/GetHomeSummaryUseCase. 2026-04-10 생성으로 모듈 분리 체계보다 앞서고, 받을 모듈이 아직 없다. - app 안에서의 외부 참조는
navigation/AppNavigation.kt·AppNavigationActions.kt2곳뿐이다. app/src/screenshotTest의 9개 테스트가 전부 이 화면들을 대상으로 한다 — 함께 이동하며 baseline 경로가 바뀐다.
이 구조가 실제로 만든 비용:
- "모든 기록 내려받기" 가 두 벌 구현돼 있다 —
ReceiverHomeViewModel.downloadAll()(app) 과ReceiverDownloadAllViewModel.handleConfirmDownload()(feature) 가downloadAllReceived()→saveReceivedExportToFile()를 같은 순서로 호출한다. - 그래서 feat(core): non-fatal 오류 계측 확대 — 홈·애프터노트 흐름의 handled 실패 기록 #544 계측에서 같은 값(
received_export_download·received_export_save)이home_stage·afternote_stage두 키에 각각 생겼다. 콘솔에서 한 기능의 실패를 보려면 키 두 개를 봐야 한다. - 계측 규격 파일도
HomeFailureReporting.kt(app) 과AfternoteFailureReporting.kt(feature:afternote) 로 두 벌이다.
작업 내용:
- 수신자 홈 13개 파일 + 대응 screenshotTest 8개를
:feature:receiver:presentation으로 이전.feature:afternotedomain·presentation 의존을 추가한다(현재 app 이 지고 있는 의존을 그대로 물려받는다). - 발신자 홈은 받을 모듈을 정한 뒤 이전한다 —
:feature:home:presentation신설 vs 마인드레코드 편입(홈 카드가 일기 TOTAL·수신인 지정 배지라 소관이 갈린다). 결정 근거를 PR 에 남긴다. navigation/은 app 에 남긴다 — NavGraph·BottomNav 조합은 app 의 역할이다.- 이전에 딸린 계측 규격(
HomeFailureReporting.kt)도 같이 옮기고, 두 벌이 된 내려받기 stage 를 한쪽으로 정리한다. - 파일 이동은 git 이 rename(R)으로 인식하도록 한다.
- screenshot baseline 은 이동 후 CI 와 같은 docker 사이클로 재생성한다.
📍 Note (Optional)
- fix(home): 홈 복귀 시 refetch 부재 — 일기 TOTAL·수신인 지정 배지 재시작 전까지 stale #504·fix(home): 홈 TODAY'S QUESTION 카드 실데이터 미연결 — 날짜·질문 하드코딩 고정 #505·fix(home): 홈 '수신인 지정 미완료' 칩 탭 무동작 — 내비게이션 핸들러 미연결(TODO) #506 보다 먼저 처리하는 편이 낫다 — 셋 다
app/screen/을 건드려서, 나중에 옮기면 이동 diff 와 기능 diff 가 한 PR 에 섞인다. - "모든 기록 내려받기" 중복 구현의 통합은 동작이 바뀔 수 있어 이 이슈에서 하지 않는다. 이전으로 두 구현이 한 모듈에 모인 뒤 별도로 판단한다.
- 레이어 회귀 가드(
LayerDependencyKonsistTest)는 domain 역의존만 검사해서 이 위반을 잡지 못한다. 이전 후 "화면은 app 에 두지 않는다" 규칙을 추가할지는 별도 판단. - feat(core): non-fatal 오류 계측 확대 — 홈·애프터노트 흐름의 handled 실패 기록 #544(계측 확대) 가
HomeFailureReporting.kt를 app 에 새로 만들었다. 그 PR 머지 후 착수해야 이동 대상이 확정된다. - 노션 프로젝트 구조 의 모듈 트리도 이전 후 갱신 대상이다.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request
Activity
refactor(afternote): 수신자 흐름 전체를 :feature:receiver 로 이전
fix(app): develop 병합 정합 — 신규 androidTest 의 이전 경로·문자열 보정
[-]refactor(app): 홈·수신자 홈 화면 feature 모듈 이전 — app 잔존 presentation 정리[/-][+]refactor(app): 수신자 홈 화면 :feature:receiver:presentation 이전 — app 잔존 presentation 정리[/+][-]refactor(app): 수신자 홈 화면 :feature:receiver:presentation 이전 — app 잔존 presentation 정리[/-][+]refactor(app): 홈·수신자 홈 화면 feature 모듈 이전 — app 잔존 presentation 정리[/+]refactor(afternote): 수신자 흐름 전체를 :feature:receiver 로 이전