Merged
Conversation
- Restructured package hierarchy:
- Moved `TokenManager`, `PostDeliveryConditionPreferences`, `ApiException`, `AuthInterceptor`, and `NetworkModule` from `data.local`/`data.remote` to `data.service`.
- Moved `BaseResponse` and its extensions (`requireData`, `requireSuccess`) to `com.kuit.afternote.data`.
- Moved data provider interfaces and implementations (`FakeReceiverDataProvider`, `RealReceiverDataProvider`, `DataProviderSwitch`, etc.) from `data.provider` to `domain.provider`.
- Standardized code style across multiple feature screens (TimeLetter, Afternote, Receiver Management) by applying consistent trailing commas and indentation.
- Updated import statements across the project to reflect the new package structure.
- Refactored `VerifySelfViewModel` and `WithdrawalPasswordViewModel` for better readability and internal structure.
- Updated unit tests to align with the relocated classes and updated dependency references.
- `AfternoteDto` 내 모든 DTO 클래스에서 `Dto` 접미사 제거 (예: `AfternoteListResponseDto` -> `AfternoteListResponse`) - 관련 API 서비스, Repository, UseCase, ViewModel 및 테스트 코드의 참조 수정 - 불필요한 공백 제거 및 Trailing Comma 추가 등 전반적인 코드 포맷팅 개선 - `AfternoteMapper` 내 미사용 import 정리 및 식 분석 로직 최적화
- AfternoteDto.kt 및 MusicSearchDto.kt의 거대 DTO 파일을 개별 클래스 파일로 분리 - DTO 클래스들을 용도에 따라 request, response 하위 패키지로 재배치 - MusicTrackDto를 MusicTrack으로, MusicSearchResponseDto를 MusicSearchResponse로 이름을 변경하여 일관성 확보 - 패키지 구조 변경에 따른 import 문 및 관련 레포지토리, 유즈케이스 코드 수정
- `api` 패키지를 `service`로 변경하고 관련 인터페이스 이동 - Repository 구현 클래스들을 `repositoryimpl` 패키지로 이동 - `MusicApiService`를 공통 `data.service` 패키지로 이동 - `AfternoteRepositoryModule` 위치 변경 및 관련 임포트 경로 수정 - 테스트 코드의 패키지 경로를 변경된 구조에 맞춰 업데이트
- AfternoteCredentials, AfternoteSong, AfternotePlaylist 등 모든 data transfer object의 필드에 `@SerialName`을 명시하여 직렬화/역직렬화 안정성 강화 - `kotlinx.serialization.SerialName` 임포트 추가 및 기존 `@JsonNames`와 병행 사용 처리
- BaseResponse의 message 필드를 nullable로 변경 - requireSuccess를 requireStatus로 변경하고 기본 에러 메시지 처리 추가 - UserRepository, AuthRepository 등에서 변경된 응답 검증 메서드 적용 - 수신자 등록 시 상태 코드 검증 로직 및 데이터 추출 방식 개선
- `domain.repository.iface` 패키지에 있던 리포지토리 인터페이스들을 `domain.repository`로 이동 - `AfternoteApiService` 및 `AfternoteRepositoryImpl` 내 파라미터명을 `body`에서 `request`로 변경 - 불필요한 로그 출력 및 `.gitkeep` 파일 삭제 - 전반적인 코드 포맷팅 및 스타일 수정 (trailing commas, indentation 등)
- `MusicSearchRepository`, `MemorialThumbnailUploadRepository`, `MemorialVideoUploadRepository`를 도메인 레이어의 공통 패키지(`com.kuit.afternote.domain.repository`)로 이동 - `MusicSearchRepositoryImpl`, `MusicTrack`, `MusicSearchResponse`를 데이터 레이어의 공통 패키지로 이동 - 패키지 구조 변경에 따른 DI 모듈 및 UseCase 내 import 경로 수정 - `AfternoteRepositoryImpl` 내 가독성 향상을 위한 코드 리팩토링 및 변수명 수정
- 애프터노트 편집 및 상세 화면 관련 컴포넌트와 모델의 패키지 경로를 `presentation.component.edit`에서 `presentation.edit` 및 `presentation.detail`로 이동 및 정리 - `MemorialPhotoUpload`, `MemorialGuidelineEditContent` 등 주요 편집 컴포넌트의 패키지 위치 변경 - `AfternoteEditViewModel`, `AfternoteDetailViewModel` 등 관련 뷰모델의 패키지 경로 최적화 - `AddSongScreen` 및 `FingerprintLoginScreen` 등의 화면 컴포넌트 위치 조정 - 패키지 이동에 따른 프로젝트 전반의 import 문 수정 및 코드 스타일(ktlint 등) 적용으로 인한 포매팅 수정 - `NavGraph` 내 경로 이동에 따른 네비게이션 로직 및 컴포넌트 참조 업데이트
- 지문 인증 및 리스트 관련 UI 컴포넌트의 패키지 위치를 기능별로 재배치 - `AfternoteRepositoryModule`에 있던 API 서비스 제공 로직을 `NetworkModule`로 통합 - `PlaceholderDrawables` 위치 변경 및 전반적인 코드 포맷팅 수정 - 사용하지 않는 `.gitkeep` 파일 삭제 및 임포트 최적화
feat(afternote): AfternoteRepository 리팩토링 및 매핑 로직 개선
- `docs/OOP_OBJECT_CALISTHENICS_NOTES.md`: 프로젝트에 적용할 객체지향 생활체조 원칙 및 DTO 예외 조항 문서화
- `AfternoteRepository`: `updateAfternote` 메서드의 파라미터명을 `body`에서 `request`로 변경
- `AfternoteRepositoryImpl`:
- 중복되는 ID 추출 및 자격 증명 생성 로직을 private 함수로 분리
- `logFailure` 확장 함수 위치 조정 및 가독성 개선
- `AfternoteMapper`를 활용하여 페이징 데이터 매핑 로직 단순화
- `AfternoteMapper`: `AfternoteListResponse`를 `PagedAfternotes`로 변환하는 `toPagedNotes` 메서드 추가
- `AfternoteRepositoryModule`: SonarLint 경고 억제를 위한 `@Suppress` 어노테이션 추가
- `AfternoteDetail`, `AfternoteItem` 등 주요 도메인 모델의 필드를 계층 구조(`credentials`, `processing`, `timestamps` 등)로 그룹화하여 개선 - 플레이리스트 상세 정보를 위한 `AfternotePlaylistDetail` 및 관련 데이터 모델 분리 및 신규 생성 - 수신자 정보를 위한 `AfternoteDetailReceiver` 모델 분리 - 모델 구조 변경에 따른 `AfternoteMapper`, `AfternoteEditViewModel`, `AfternoteNavgraph` 등의 매핑 및 데이터 참조 로직 수정 - `AfternoteItem`을 `MindRecordUiModel`로 변환하는 매퍼 로직 개선 및 위치 이동 - `MindRecordViewModel` 내 코드 포맷팅 및 안정성 향상을 위한 로직 정비 (날짜 처리 등)
- AfternoteUpdateRequest를 AfternoteUpdateRequestInput 도메인 모델로 교체하고 관련 매퍼 추가 - AfternotePlaylist 및 관련 클래스들을 `domain.model.playlist` 패키지로 이동 및 구조화 - 타임레터 및 수신자 관련 API DTO의 필드명을 `receiverIds`에서 `receivers`로 변경 (서버 사양 반영) - ViewModel 내 수신자 표시 텍스트 변환 로직 및 가독성 개선 - 코드 스타일 정리를 위한 trailing comma 추가 및 전반적인 포매팅 수정
- `docs/ARCHITECTURE_CONVENTIONS.md` 파일을 생성하여 레이어 구조, 패키지 구조, UseCase, 도메인 모델, 매퍼, DTO, Repository에 대한 컨벤션 정의 - `docs/OOP_OBJECT_CALISTHENICS_NOTES.md`에서 DTO 예외 관련 내용을 삭제하고, Android/Kotlin 공식 컨벤션을 최우선으로 하도록 원칙 수정
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
#️⃣연관된 이슈
📝작업 내용
스크린샷 (선택)
💬리뷰 요구사항(선택)