Repository navigation
refactor(model): 홈·마음의 기록 전용 타입을 core:model 밖으로 (#1085) - #1102
Conversation
core:model 은 11개 모듈이 의존하는 자리인데, 두 타입을 아는 모듈은 홈·마음의 기록·app 셋뿐이었다. - HomeSummary → feature:home:presentation.usecase — 유일한 생산자인 GetHomeSummaryUseCase 옆. 소비처도 같은 모듈의 HomeTabViewModel 하나다. - MindRecordCategory → feature:mindrecord:presentation.model — 표시용 MindRecordCategoryUi 옆. 세 모듈이 이미 이 모듈에 의존하고 있어 새 모듈 의존이 생기지 않는다. MindRecordCategory 의 KDoc 이 "UI 리소스는 확장 프로퍼티로 제공한다" 고 적혀 있었으나 실제로는 같은 패키지의 sealed class 라 사실에 맞췄다. 파일이 짧아 git 이 rename 대신 D+A 로 잡을 수 있는데, 패키지·주석 외 내용은 그대로다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1hyok
left a comment
There was a problem hiding this comment.
이관 자체는 정확하다. core:model 에 잔존 참조가 남지 않았고(MindRecordCategory·HomeSummary 전수 grep, 0건), 이슈 #1085 가 제안한 위치(feature.home.presentation.usecase)와도 일치한다. 새 모듈 의존이 생기지 않는다는 주석의 주장도 확인했다 — HomeTabScreen 이 이미 feature.mindrecord.presentation.hometab 을 참조하고 있었다.
blocking 은 없다. 자기 패키지를 import 하는 줄이 두 곳 생겼는데, 옮기면서 IDE 가 자동으로 붙인 것으로 보인다. 컴파일·ktlint 모두 통과하므로 다음 커밋에 함께 정리해도 무방하다.
검증
- CI: 필수 체크 11종 전부 green.
- 이관 후 잔존 참조:
MindRecordCategory28곳 ·HomeSummary20곳 전수 확인 — 모두 새 경로를 가리킨다.core:model참조 0건. - 실기동 QA·시안 대조 해당 없음 — 순수 타입 이동이라 런타임 거동·화면 변화가 없다.
지적
- [normal] 자기 패키지 import →
GetHomeSummaryUseCase.kt:5인라인 코멘트. - [normal] 자기 패키지 import →
MindRecordCategoryUi.kt:16인라인 코멘트.
| import com.afternote.core.common.result.runCatchingCancellable | ||
| import com.afternote.core.domain.repository.UserRepository | ||
| import com.afternote.core.model.HomeSummary | ||
| import com.afternote.feature.home.presentation.usecase.HomeSummary |
There was a problem hiding this comment.
[normal] 이 파일의 package 가 com.afternote.feature.home.presentation.usecase 라 같은 패키지를 import 하고 있다. 지워도 컴파일된다.
HomeSummary.kt 를 같은 패키지로 옮겼으니 이 import 는 이관 과정에서 남은 흔적으로 보인다. ktlint 의 no-unused-imports 가 same-package import 는 잡지 않아 CI 로는 걸리지 않는다.
| import androidx.compose.ui.unit.dp | ||
| import com.afternote.core.model.MindRecordCategory | ||
| import com.afternote.feature.mindrecord.presentation.R | ||
| import com.afternote.feature.mindrecord.presentation.model.MindRecordCategory |
There was a problem hiding this comment.
[normal] 위와 같은 건이다 — 이 파일의 package 도 com.afternote.feature.mindrecord.presentation.model 이라 자기 패키지를 import 한다.
새로 만든 MindRecordCategory.kt 를 바로 옆에 뒀으니 이 줄은 필요 없다.
|
이 PR 은
|
수신자 예외 sealed 통합(#934)이 같은 import 블록을 고쳐 충돌했다 — 양쪽을 그대로 둔다. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
두 테스트 파일의 import 블록에서 충돌했다. #1102 가 MindRecordCategory 를 core:model 에서 feature:mindrecord:presentation 으로 옮겼고, 이 브랜치는 바로 옆 줄에서 repository import 를 픽스처로 바꿔 같은 hunk 에 걸렸다. 양쪽을 합친다. 검증: :koverXmlReportCi :konsist:test :build-logic:test :app:compileDebugAndroidTestKotlin 전 모듈 ktlintCheck 통과.
Closes #1085
무엇을
core:model은 11개 모듈이 의존하는 자리인데, 두 타입을 아는 모듈은 셋뿐이었다.HomeSummaryfeature:home:presentation.usecaseGetHomeSummaryUseCase, 소비HomeTabViewModel)MindRecordCategoryfeature:mindrecord:presentation.model새 모듈 의존은 0건이다.
app과feature:home:presentation은 이미implementation(projects.feature.mindrecord.presentation)을 갖고 있다.mindrecord:domain이 아니라 presentation 에 둔 것도 그 때문이다 — domain 은implementation이라app까지 전파되지 않아 새 의존을 추가해야 한다.feature:home:presentation의implementation(projects.core.model)은 남긴다 —Receiver·ReceiverDeliveryConditions등을 계속 쓴다.순수 이동이다 (파일 2개)
패키지 선언과 import 경로 외에 바뀐 것은
MindRecordCategory의 KDoc 한 문단뿐이다.실제로는 확장 프로퍼티가 아니라 같은 패키지의 sealed class 라 사실에 맞췄다. 파일이 12줄이라 git 이 rename 대신 D+A 로 표시할 수 있는데, 그 외 내용은 손대지 않았다.
검증
:app:assembleDebugcompileDebugUnitTestKotlin:app:compileDebugAndroidTestKotlincompileDebugScreenshotTestKotlin:konsist:test --rerun-tasks --no-build-cachetestDebugUnitTest --rerun-taskskonsist 는 이슈에 적힌 대로
--rerun-tasks --no-build-cache로 돌렸다 — 캐시가 프로젝트 전체 스캔을 반영하지 못해 그냥 돌리면FROM-CACHE로 거짓 green 이 난다.스크린샷 baseline 재생성 불필요 — import 경로만 바뀌어 렌더 결과가 불변이다. 실제로
HomeTabScreenScreenshotTest도 import 한 줄만 바뀌었다.실기동 QA: 해당 없음. 타입의 소유 모듈만 옮기는 변경이라 동작이 바뀌는 자리가 없다.
#700 과의 경계
#700 은 이 enum 의 값(
WEEKLY_REPORTvs 시안의 「깊은 생각」)을 다루고, 이 PR 은 위치만 다룬다. 이쪽이 먼저 들어가면 #700 이 겪을 충돌은 import 경로 한 줄이다.