diff --git a/app/src/androidTest/java/com/afternote/afternote_fe/ProcessingMethodListAndroidTest.kt b/app/src/androidTest/java/com/afternote/afternote_fe/ProcessingMethodListAndroidTest.kt index 365d97274a..261b916851 100644 --- a/app/src/androidTest/java/com/afternote/afternote_fe/ProcessingMethodListAndroidTest.kt +++ b/app/src/androidTest/java/com/afternote/afternote_fe/ProcessingMethodListAndroidTest.kt @@ -22,7 +22,7 @@ import org.junit.runner.RunWith /** * 처리 방법 입력 칸 여닫힘 실기 검증 (이슈 #777). * - * [com.afternote.feature.afternote.presentation.author.editor.processing.ProcessingMethodListState] + * [com.afternote.feature.afternote.presentation.editor.processing.ProcessingMethodListState] * 단위 테스트는 «닫는 경로가 있다» 까지만 말한다. 그 경로에 AddItemTextField 의 신호가 실제로 * 닿는지는 상호작용을 거쳐야 드러나므로 여기서 본다 — 종전에는 그 신호가 * `ProcessingMethodSection.onTextFieldVisibilityChanged = {}` 로 나가 사라졌고, 항목만 추가되고 diff --git a/core/data/src/test/java/com/afternote/core/data/mapper/delivery/DeliveryConditionMapperTest.kt b/core/data/src/test/java/com/afternote/core/data/mapper/delivery/DeliveryConditionMapperTest.kt index a95a3d7a76..9650a1833e 100644 --- a/core/data/src/test/java/com/afternote/core/data/mapper/delivery/DeliveryConditionMapperTest.kt +++ b/core/data/src/test/java/com/afternote/core/data/mapper/delivery/DeliveryConditionMapperTest.kt @@ -17,8 +17,7 @@ import org.junit.Test * [DeliveryConditionMapper] enum·응답 매핑 회귀 가드 (이슈 #427). * * 서버 enum 추가/누락 시 `when` 분기 누락이 도메인에 조용히 반영되는 사고를 막는다. - * 검증 방식은 [com.afternote.core.data.mapper.user.UserMapperTest] 와 동일 — DTO/Domain 의 - * 동일 이름 상수를 `valueOf` 로 독립 조회해 매퍼 결과와 대조(자기검증 아님). + * 검증 방식은 DTO/Domain 의 동일 이름 상수를 `valueOf` 로 독립 조회해 매퍼 결과와 대조하는 것이다(자기검증 아님). */ class DeliveryConditionMapperTest { @Test diff --git a/core/model/src/main/kotlin/com/afternote/core/model/delivery/DeliveryConditionModels.kt b/core/model/src/main/kotlin/com/afternote/core/model/delivery/DeliveryConditionModels.kt index f0404c35d1..ee67751a48 100644 --- a/core/model/src/main/kotlin/com/afternote/core/model/delivery/DeliveryConditionModels.kt +++ b/core/model/src/main/kotlin/com/afternote/core/model/delivery/DeliveryConditionModels.kt @@ -4,8 +4,8 @@ package com.afternote.core.model.delivery * 전달 대상 콘텐츠 유형. 세 도메인(타임레터·애프터노트·마인드레코드)의 콘텐츠를 아우른다. * * 이 패키지(수신자별 전달조건 도메인, 이슈 #427)는 서버가 전달조건을 유저단위 → (수신자 × 콘텐츠) 단위로 - * 재설계하며 신설된 축이다. 기존 유저단위 [com.afternote.core.model.user.DeliveryConditionType] - * (NONE/INACTIVITY/SPECIFIC_DATE) 은 값·의미가 달라 재사용 불가(이슈 #428 에서 제거 예정)해 별도 패키지에 둔다. + * 재설계하며 신설된 축이다. 기존 유저단위 `DeliveryConditionType` + * (NONE/INACTIVITY/SPECIFIC_DATE) 은 값·의미가 달라 재사용 불가라 별도 패키지에 두었고, 그 구 타입은 이슈 #428 에서 제거됐다. */ enum class DeliveryContentType { TIME_LETTER, diff --git a/core/network/src/main/kotlin/com/afternote/core/network/dto/delivery/DeliveryConditionDto.kt b/core/network/src/main/kotlin/com/afternote/core/network/dto/delivery/DeliveryConditionDto.kt index 7482b00f5b..6059a0a449 100644 --- a/core/network/src/main/kotlin/com/afternote/core/network/dto/delivery/DeliveryConditionDto.kt +++ b/core/network/src/main/kotlin/com/afternote/core/network/dto/delivery/DeliveryConditionDto.kt @@ -7,7 +7,7 @@ import kotlinx.serialization.Serializable * `GET/PUT /users/me/receivers/{receiverId}/delivery-conditions` DTO (이슈 #427). * * Swagger 실측(2026-07-08, afternote.kro.kr/v3/api-docs) 스키마와 1:1. 유저단위(구) - * [com.afternote.core.network.dto.DeliveryConditionTypeDto] 와 값이 달라 별도 패키지에 둔다. + * `DeliveryConditionTypeDto` 와 값이 달라 별도 패키지에 두었다 — 그 구 타입은 이슈 #428 에서 제거됐다. */ @Serializable diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/AfternoteHostViewModel.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/AfternoteHostViewModel.kt index 46bdc3c047..3cb51d3971 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/AfternoteHostViewModel.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/AfternoteHostViewModel.kt @@ -13,7 +13,7 @@ import javax.inject.Inject * [com.afternote.core.ui.Route.Afternote] 서브그래프 스코프의 상태 정본. * * 에디터 flow 상태는 flow-scoped - * [com.afternote.feature.afternote.presentation.author.editor.AfternoteEditorViewModel]이 담당한다. + * [com.afternote.feature.afternote.presentation.editor.AfternoteEditorViewModel]이 담당한다. * 본 ViewModel은 Afternote 그래프 전체에서 공유하는 사용자 상태만 보유한다. */ @HiltViewModel diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/AfternoteEditorViewModel.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/AfternoteEditorViewModel.kt index 509e030b63..c70ceeb885 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/AfternoteEditorViewModel.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/AfternoteEditorViewModel.kt @@ -153,7 +153,7 @@ private data class EditorFormSnapshot( * 애프터노트 생성/수정 ViewModel. * * **SSOT:** 일반 폼은 [internalState]의 [EditorFormState], Compose 텍스트 입력은 - * [com.afternote.feature.afternote.presentation.author.editor.state.AfternoteEditorState]가 소유한다. + * [com.afternote.feature.afternote.presentation.editor.state.AfternoteEditorState]가 소유한다. * 추억 플레이리스트 화면과 곡 추가 화면은 같은 flow-scoped ViewModel의 폼을 사용한다. * * **경계:** Compose UI 객체(`TextFieldState`·`SnapshotStateList`·파사드)를 들지 않고 Retrofit 타입도 알지 않는다 — diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/SaveAfternoteMemorialMedia.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/SaveAfternoteMemorialMedia.kt index 1390943b13..8a7920d876 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/SaveAfternoteMemorialMedia.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/SaveAfternoteMemorialMedia.kt @@ -11,7 +11,7 @@ internal data class SaveAfternoteMemorialMedia( /** * Android가 직접 열 수 있는 로컬 첨부 URI인지. 영상의 저장 출처 판정은 [EditableMemorialVideo]가 - * 담당하고, 이 함수는 [com.afternote.feature.afternote.presentation.author.editor.memorial.MemorialVideoUpload]의 + * 담당하고, 이 함수는 [com.afternote.feature.afternote.presentation.editor.memorial.MemorialVideoUpload]의 * 프레임 추출 가능 여부와 같은 key를 썼던 구 v3 스냅샷의 일회성 출처 이관에만 사용한다. */ internal fun String.isLocalContentUri(): Boolean = startsWith("content://") diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/memorial/MemorialPlaylistEntry.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/memorial/MemorialPlaylistEntry.kt index 34e463d288..6df8026bbd 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/memorial/MemorialPlaylistEntry.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/memorial/MemorialPlaylistEntry.kt @@ -32,7 +32,7 @@ import com.afternote.feature.afternote.presentation.shared.model.PlaylistSongDis /** * 추억 플레이리스트 Entry. * - * flow-scoped [com.afternote.feature.afternote.presentation.author.editor.AfternoteEditorViewModel] 폼 SSOT의 곡 목록을 + * flow-scoped [com.afternote.feature.afternote.presentation.editor.AfternoteEditorViewModel] 폼 SSOT의 곡 목록을 * 공용 부품([SongPlaylistScaffold] + 모드별 본문)의 입력 형태로 매핑한다. 변경은 콜백 인텐트로 위임한다. * * 화면은 두 모드를 오간다 (헤더 연필 = 토글): diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/model/EditorFormPrefill.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/model/EditorFormPrefill.kt index c8de760aad..e7a1241fa1 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/model/EditorFormPrefill.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/editor/model/EditorFormPrefill.kt @@ -8,7 +8,7 @@ import com.afternote.feature.afternote.presentation.editor.receiver.AfternoteEdi /** * ViewModel/Mapper가 [com.afternote.feature.afternote.domain.model.author.Detail] 등에서 조립해 - * [com.afternote.feature.afternote.presentation.author.editor.state.AfternoteEditorState.applyFormPrefill]에 넘기는 값 묶음. + * [com.afternote.feature.afternote.presentation.editor.state.AfternoteEditorState.applyFormPrefill]에 넘기는 값 묶음. * 분기·enum 해석·메시지 파싱은 여기 이전 단계에서 끝난다. */ data class EditorFormPrefill( diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/home/HomeHeaderSection.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/home/HomeHeaderSection.kt index 347219d4f7..812ccc947c 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/home/HomeHeaderSection.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/home/HomeHeaderSection.kt @@ -35,7 +35,7 @@ data class NextStep( ) /** - * 헤더 위 여백. 목록 상태([com.afternote.feature.afternote.presentation.shared.body.infinite.InfiniteListBody])와 + * 헤더 위 여백. 목록 상태([com.afternote.feature.afternote.presentation.shared.component.InfiniteListBody])와 * 빈 목록 상태([EmptyHomeBody])가 헤더를 **같은 자리**에 두도록 한 곳에서 정의한다 (#1175). */ internal val HomeBodyTopSpacing = 8.dp diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedAfternoteDetailRoute.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedAfternoteDetailRoute.kt index a007997ef8..0c3bfaf29c 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedAfternoteDetailRoute.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedAfternoteDetailRoute.kt @@ -19,7 +19,7 @@ import com.afternote.feature.afternote.presentation.shared.detail.DetailLoadErro * [onNavigateToPlaylist] 로 위임한다 (#274). * * 하단 "애프터노트 확인하기" 는 [onNavigateToFullList] 로 위임한다 — 수신자가 이 발신자에게서 - * 받은 애프터노트 전체 목록([com.afternote.feature.afternote.presentation.receiver.navigation.model.ReceivedAfternoteRoute.ListRoute]) + * 받은 애프터노트 전체 목록([com.afternote.feature.afternote.presentation.receiver.navigation.ReceivedAfternoteRoute.ListRoute]) * 이 목적지다. 파라미터 이름이 가리키는 "전체 목록" 이 수신자 흐름에 그것 하나뿐이다 (#777). * * 조회 실패는 [DetailLoadErrorContent] 로 간다 — 발신 상세와 같은 실패 화면이며 재조회 액션을 준다. diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedDetailContentUiModel.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedDetailContentUiModel.kt index 821569189a..68a286ff2c 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedDetailContentUiModel.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/detail/ReceivedDetailContentUiModel.kt @@ -69,7 +69,7 @@ data class ReceivedGalleryDetailContent( * * @property albumCovers 플레이리스트 카드에 가로 스크롤로 표시할 커버 목록(표시 데이터). * @property songCount "현재 N개의 노래가 담겨 있습니다" 안내용 전체 곡 수(메타데이터). `albumCovers.size` 와 - * **독립** — [com.afternote.feature.afternote.presentation.shared.detail.song.MemorialPlaylist] 가 둘을 별도 + * **독립** — [com.afternote.feature.afternote.presentation.shared.detail.MemorialPlaylist] 가 둘을 별도 * 파라미터로 받아, 커버를 일부만 넘겨도 전체 개수를 정확히 표시한다. 현재 mapper 는 전체 곡을 커버로 넘겨 값이 같다. */ @Immutable diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/navigation/ReceivedAfternoteRoute.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/navigation/ReceivedAfternoteRoute.kt index bc61d7e093..73c0bf24ff 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/navigation/ReceivedAfternoteRoute.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/navigation/ReceivedAfternoteRoute.kt @@ -5,7 +5,7 @@ import kotlinx.serialization.Serializable /** * 수신 애프터노트 화면의 라우트. * - * 발신자 라우트([com.afternote.feature.afternote.presentation.author.navigation.model.AfternoteRoute]) + * 발신자 라우트([com.afternote.feature.afternote.presentation.navigation.model.AfternoteRoute]) * 와 한 sealed 계층에 두지 않는다 — 그쪽은 지문 관문을 시작점으로 삼는 * [com.afternote.core.ui.Route.Afternote] 그래프에 묶여 있고, 수신자는 로그인 사용자가 아니라 * 그 관문을 지나지 않는다. 그래서 이 라우트들은 그래프 중첩 없이 루트 NavHost 에 직접 등록한다 diff --git a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/playlist/ReceiverMemorialPlaylistViewModel.kt b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/playlist/ReceiverMemorialPlaylistViewModel.kt index 401d471841..0ea38bc6ce 100644 --- a/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/playlist/ReceiverMemorialPlaylistViewModel.kt +++ b/feature/afternote/presentation/src/main/kotlin/com/afternote/feature/afternote/presentation/receiver/playlist/ReceiverMemorialPlaylistViewModel.kt @@ -48,7 +48,7 @@ class ReceiverMemorialPlaylistViewModel * 다음 [refreshOnReturn] 이 첫 ON_RESUME(진입 자체)인지. 첫 resume 은 init 로드와 같은 * 진입이므로 갱신하지 않는다 — Job 가드만으로는 init 로드가 (특히 실패로) 빨리 끝난 뒤 * 도착한 첫 resume 이 순차 재조회를 걸어, 에러 화면과 재시도가 건너뛰어진다. - * VM 필드인 이유는 [com.afternote.feature.receiver.presentation.detail.ReceivedAfternoteDetailViewModel] + * VM 필드인 이유는 [com.afternote.feature.afternote.presentation.receiver.detail.ReceivedAfternoteDetailViewModel] * 과 동일 — 프로세스 사망 후 복원에서도 init 로드와 수명이 일치한다. */ private var isFirstResume = true diff --git a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/senderdetail/SenderDetailViewModel.kt b/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/senderdetail/SenderDetailViewModel.kt index 8481e90073..87712db066 100644 --- a/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/senderdetail/SenderDetailViewModel.kt +++ b/feature/receiver/presentation/src/main/kotlin/com/afternote/feature/receiver/presentation/senderdetail/SenderDetailViewModel.kt @@ -56,7 +56,7 @@ class SenderDetailViewModel * 다음 [refreshOnReturn] 이 첫 ON_RESUME(진입 자체)인지. 첫 resume 은 init 로드와 같은 * 진입이므로 갱신하지 않는다 — Job 가드만으로는 init 로드가 빨리 끝난 뒤 도착한 첫 * resume 이 순차 재조회를 건다. VM 필드인 이유는 - * [com.afternote.feature.receiver.presentation.detail.ReceivedAfternoteDetailViewModel] 과 + * [com.afternote.feature.afternote.presentation.receiver.detail.ReceivedAfternoteDetailViewModel] 과 * 동일 — 프로세스 사망 후 복원에서도 init 로드와 수명이 일치한다. */ private var isFirstResume = true