Skip to content

각종 오류 해결 및 리팩토링#43

Merged
mj010504 merged 9 commits intodevelopfrom
NDGL-127
Mar 19, 2026
Merged

각종 오류 해결 및 리팩토링#43
mj010504 merged 9 commits intodevelopfrom
NDGL-127

Conversation

@mj010504
Copy link
Copy Markdown
Contributor

@mj010504 mj010504 commented Mar 19, 2026

개요

  • 각종 오류 해결 및 리팩토링

변경사항

  • FollowTravel → PlaceDetailScreen에서 PlanB 장소 변경하기 버튼 visibility 조정하기
  • SplashScreen, diposableEffect에서 enableEdgeToEdge() default parameter 사용하도록 수정하기
  • 편집모드에서 일정 추가하기 안되는 오류 해결
  • LongClick으로 편집모드 전환 시 장소 반영안되는 오류 해결
  • transportation 빈 리스트 크래시 방지 로직 추가
  • 데이터 모델 불일치 해결 - placeId, googlePlaceId
  • computeRotue duration 응답 - String Parsing 안전하게 수정
  • 불필요한 feature:auth 모듈 삭제

테스트 체크 리스트

  • 빌드

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 여행 상세 편집 모드에서 장소 추가 기능 개선
    • 더 정확한 이동 거리 및 소요 시간 계산
  • 버그 수정

    • 여행 경로 정보의 소요 시간 파싱 개선
    • 여행 지도에 장소 유효성 검증 강화
  • 제거됨

    • 인증 모듈 삭제

…로 통일

  1. Navigation Route

  - Route.kt: AddPlace(placeId) → AddPlace(googlePlaceId)

  2. Contract 파일들

  - MyTravelContract.kt: TravelPlace.placeId, ClickPlaceDetail.placeId, NavigateToTravelPlace.placeId → 모두 googlePlaceId
  - FollowTravelContract.kt: NavigateToFollowPlaceDetail.placeId → googlePlaceId
  - AddItineraryContract.kt: BookMarkPlace.placeId, NavigateToAddPlace.placeId → googlePlaceId
  - HomeContract.kt: ClickMyTravelPlace.placeId, NavigateToPlaceDetail.placeId → googlePlaceId
  - TravelDetailContract.kt: NavigateToTravelPlaceDetail.placeId → googlePlaceId
  - TravelHelperContract.kt: ClickPlace.placeId, NavigateToPlaceDetail.placeId → googlePlaceId

  3. ViewModel 파일들

  - MyTravelViewModel.kt: 모든 placeId → googlePlaceId
  - HomeViewModel.kt: 모든 placeId → googlePlaceId
  - AddItineraryViewModel.kt: 모든 placeId → googlePlaceId
  - FollowTravelViewModel.kt: placeId → googlePlaceId
  - TravelDetailViewModel.kt: placeId → googlePlaceId
  - AddPlaceViewModel.kt: 생성자 파라미터, Factory 등 모든 placeId → googlePlaceId
  - TravelHelperViewModel.kt: placeId → googlePlaceId

  4. Entry 파일들

  - HomeEntry.kt: 네비게이션 람다 파라미터 placeId → googlePlaceId
  - TravelEntry.kt: 네비게이션 람다 파라미터 및 Factory 호출 placeId → googlePlaceId
  - TravelHelperEntry.kt: 네비게이션 람다 파라미터 placeId → googlePlaceId
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Mar 19, 2026

Walkthrough

feature/auth 모듈을 완전히 제거하고, 여러 feature 모듈에서 placeId를 googlePlaceId로 일관되게 이름 변경했으며, TravelDetailViewModel에서 edit mode 처리 및 duration 파싱을 강화했습니다. 또한 네비게이션 경로와 UI 컴포넌트 파라미터를 업데이트했습니다.

Changes

Cohort / File(s) Summary
Feature/auth 모듈 제거
feature/auth/.gitignore, feature/auth/build.gradle.kts, feature/auth/src/main/AndroidManifest.xml, feature/auth/src/main/java/com/yapp/ndgl/feature/auth/AuthScreen.kt, feature/auth/src/main/java/com/yapp/ndgl/feature/auth/AuthViewModel.kt
전체 auth feature 모듈 삭제 (빌드 설정, manifest, 화면, ViewModel)
PlaceId를 GooglePlaceId로 이름 변경 - Home Feature
feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeContract.kt, feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeScreen.kt, feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeViewModel.kt, feature/home/src/main/java/com/yapp/ndgl/feature/home/navigation/HomeEntry.kt
intent, side-effect, navigation callback의 placeId 파라미터를 googlePlaceId로 업데이트
PlaceId를 GooglePlaceId로 이름 변경 - Travel Helper Feature
feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/main/TravelHelperContract.kt, feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/main/TravelHelperScreen.kt, feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/main/TravelHelperViewModel.kt, feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/navigation/TravelHelperEntry.kt
intent, side-effect, navigation callback의 placeId 파라미터를 googlePlaceId로 업데이트
PlaceId를 GooglePlaceId로 이름 변경 - Travel Feature (Add Itinerary)
feature/travel/src/main/java/com/yapp/ndgl/feature/travel/additinerary/AddItineraryContract.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/additinerary/AddItineraryScreen.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/additinerary/AddItineraryViewModel.kt
bookmark 및 place 관련 파라미터를 googlePlaceId로 일관되게 변경
PlaceId를 GooglePlaceId로 이름 변경 - Travel Feature (Add Place, My Travel)
feature/travel/src/main/java/com/yapp/ndgl/feature/travel/addplace/AddPlaceViewModel.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/MyTravelContract.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/MyTravelScreen.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/MyTravelViewModel.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/UpcomingTravelCardSection.kt
state 모델, intent, side-effect, ViewModel 팩토리의 placeId를 googlePlaceId로 업데이트
PlaceId를 GooglePlaceId로 이름 변경 - Travel Feature (Follow Travel, Travel Detail)
feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/FollowTravelContract.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/FollowTravelScreen.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/FollowTravelViewModel.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/traveldetail/TravelDetailContract.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/navigation/TravelEntry.kt, navigation/src/main/java/com/yapp/ndgl/navigation/Route.kt
navigation side-effect, intent, route 정의에서 placeId를 googlePlaceId로 변경
UI 컴포넌트 및 Display 업데이트
feature/travel/src/main/java/com/yapp/ndgl/feature/travel/component/PlaceInfoTab.kt, feature/splash/src/main/java/com/yapp/ndgl/feature/splash/SplashScreen.kt, feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/component/TravelMap.kt
PlaceInfoTab의 onChangePlaceClick을 nullable로 변경, Splash의 enableEdgeToEdge 호출 단순화, TravelMap에 empty list 검증 추가
TravelDetailViewModel 로직 강화
feature/travel/src/main/java/com/yapp/ndgl/feature/travel/traveldetail/TravelDetailViewModel.kt
edit mode에서 place 추가 처리, duration 파싱 강화, transportation segment 계산 개선, intent 매핑 수정

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

🚥 Pre-merge checks | ✅ 1 | ❌ 2

❌ Failed checks (1 warning, 1 inconclusive)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
Title check ❓ Inconclusive 제목 '각종 오류 해결 및 리팩토링'은 PR 목표와 일치하나, 매우 포괄적이고 구체적인 주요 변경사항을 명확히 전달하지 못함. 구체적인 주요 변경사항을 반영하여 제목을 명확히 하세요. 예: 'placeId를 googlePlaceId로 통일 및 auth 모듈 제거' 또는 '데이터 모델 통일 및 버그 수정' 같이 핵심 변경을 드러내는 제목을 권장합니다.
✅ Passed checks (1 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch NDGL-127
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (1)
feature/travel/src/main/java/com/yapp/ndgl/feature/travel/addplace/AddPlaceViewModel.kt (1)

42-44: 사진 조회 재시도 딜레이는 상수화(또는 설정화)해 두는 편이 좋습니다.

현재 하드코딩된 delay(1000)은 운영 상황 변화 시 조정 비용이 큽니다. 재시도 횟수/지연시간을 상수 또는 설정값으로 분리해 주세요.

예시 변경안
+    companion object {
+        private const val PLACE_PHOTO_FETCH_RETRY_COUNT = 3
+        private const val PLACE_PHOTO_FETCH_DELAY_MS = 1_000L
+    }
+
     private fun loadPlacePhotos() = viewModelScope.launch {
-        repeat(3) {
-            delay(1000)
+        repeat(PLACE_PHOTO_FETCH_RETRY_COUNT) {
+            delay(PLACE_PHOTO_FETCH_DELAY_MS)
             val result = suspendRunCatching { placeRepository.getPlacePhotos(googlePlaceId) }

Based on learnings: In the travel feature, retain the 1-second delay before photo fetch but make it configurable and documented.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In
`@feature/travel/src/main/java/com/yapp/ndgl/feature/travel/addplace/AddPlaceViewModel.kt`
around lines 42 - 44, The hardcoded retry delay in AddPlaceViewModel (repeat
loop calling suspendRunCatching { placeRepository.getPlacePhotos(googlePlaceId)
} with delay(1000)) should be extracted into a configurable constant or
parameter so it can be tuned without code changes; refactor by introducing a
named constant (or constructor/config property) for retryDelayMillis (and
optionally retryCount) in AddPlaceViewModel (or its companion/object) with a
default of 1000ms, replace delay(1000) with that symbol, and add a short comment
documenting the default and that it’s configurable.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In
`@feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/component/TravelMap.kt`:
- Around line 45-46: The current use of require(places.isNotEmpty()) in
TravelMap causes an exception on empty input; change TravelMap to handle empty
lists gracefully by checking places.isEmpty() and either returning early from
the composable (e.g., return@Composable) or rendering a fallback UI/message
instead of throwing; update the code around the TravelMap composable (the
function named TravelMap and any callers relying on it) to use this conditional
branch so the app skips map rendering when places is empty rather than crashing.

---

Nitpick comments:
In
`@feature/travel/src/main/java/com/yapp/ndgl/feature/travel/addplace/AddPlaceViewModel.kt`:
- Around line 42-44: The hardcoded retry delay in AddPlaceViewModel (repeat loop
calling suspendRunCatching { placeRepository.getPlacePhotos(googlePlaceId) }
with delay(1000)) should be extracted into a configurable constant or parameter
so it can be tuned without code changes; refactor by introducing a named
constant (or constructor/config property) for retryDelayMillis (and optionally
retryCount) in AddPlaceViewModel (or its companion/object) with a default of
1000ms, replace delay(1000) with that symbol, and add a short comment
documenting the default and that it’s configurable.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 299b48d7-079f-4b20-b4af-1a3dd96fa899

📥 Commits

Reviewing files that changed from the base of the PR and between 242f5ab and 5129dbe.

📒 Files selected for processing (32)
  • feature/auth/.gitignore
  • feature/auth/build.gradle.kts
  • feature/auth/consumer-rules.pro
  • feature/auth/src/main/AndroidManifest.xml
  • feature/auth/src/main/java/com/yapp/ndgl/feature/auth/AuthScreen.kt
  • feature/auth/src/main/java/com/yapp/ndgl/feature/auth/AuthViewModel.kt
  • feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeContract.kt
  • feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeScreen.kt
  • feature/home/src/main/java/com/yapp/ndgl/feature/home/main/HomeViewModel.kt
  • feature/home/src/main/java/com/yapp/ndgl/feature/home/navigation/HomeEntry.kt
  • feature/splash/src/main/java/com/yapp/ndgl/feature/splash/SplashScreen.kt
  • feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/main/TravelHelperContract.kt
  • feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/main/TravelHelperScreen.kt
  • feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/main/TravelHelperViewModel.kt
  • feature/travel-helper/src/main/java/com/yapp/ndgl/feature/travelhelper/navigation/TravelHelperEntry.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/additinerary/AddItineraryContract.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/additinerary/AddItineraryScreen.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/additinerary/AddItineraryViewModel.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/addplace/AddPlaceViewModel.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/component/PlaceInfoTab.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/FollowTravelContract.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/FollowTravelScreen.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/FollowTravelViewModel.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/followtravel/component/TravelMap.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/MyTravelContract.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/MyTravelScreen.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/MyTravelViewModel.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/mytravel/UpcomingTravelCardSection.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/navigation/TravelEntry.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/traveldetail/TravelDetailContract.kt
  • feature/travel/src/main/java/com/yapp/ndgl/feature/travel/traveldetail/TravelDetailViewModel.kt
  • navigation/src/main/java/com/yapp/ndgl/navigation/Route.kt
💤 Files with no reviewable changes (5)
  • feature/auth/.gitignore
  • feature/auth/src/main/AndroidManifest.xml
  • feature/auth/build.gradle.kts
  • feature/auth/src/main/java/com/yapp/ndgl/feature/auth/AuthViewModel.kt
  • feature/auth/src/main/java/com/yapp/ndgl/feature/auth/AuthScreen.kt

@mj010504 mj010504 merged commit b827757 into develop Mar 19, 2026
4 checks passed
@mj010504 mj010504 deleted the NDGL-127 branch March 19, 2026 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant