Skip to content

feat: 탐색 상세 네비게이션 개선 및 경로 찾기 기능 강화#18

Merged
Roy-wonji merged 74 commits intodevelopfrom
feature/Route
Apr 1, 2026
Merged

feat: 탐색 상세 네비게이션 개선 및 경로 찾기 기능 강화#18
Roy-wonji merged 74 commits intodevelopfrom
feature/Route

Conversation

@Roy-wonji
Copy link
Copy Markdown
Contributor

Summary

🗺️ 경로 찾기 및 네비게이션 개선

  • RouteSkeletonView 스타일 개선: 지도 위에 떠있는 카드 형태로 리디자인
  • 외부 지도 앱 연동 강화: 네이버지도, 구글지도, 애플 지도 완벽 지원
  • 앱 미설치 시 웹 폴백: 지도 앱이 없으면 자동으로 웹 버전 실행
  • Info.plist LSApplicationQueriesSchemes 추가: 외부 앱 호출을 위한 URL 스킴 등록

📱 UI/UX 개선

  • 네이버 맵 라이트 모드: 다크 모드에서 라이트 모드로 변경
  • 지도 스케일 최적화: 경로 찾기 시 줌 레벨 13으로 조정하여 전체 경로 가시성 향상
  • 중심점 계산 개선: 출발역, 현재위치, 목적지를 고려한 최적 지도 중심점
  • ExploreDetailNavigationBar 패딩 개선: 더 나은 시각적 여백

🔧 기술적 개선

  • TCA 아키텍처: 외부 네비게이션을 RouteUseCase로 이동
  • URL 스킴 다중화: 여러 형태의 URL 스킴으로 앱 연동 성공률 향상
  • 디버그 로그 정리: 불필요한 로그 제거로 코드 정리

Test plan

경로 찾기 테스트

  • 경로 스켈레톤 UI가 올바르게 표시되는지 확인
  • 네이버지도, 구글지도, 애플지도 앱 연동 테스트
  • 지도 앱 미설치 시 웹 버전 이동 확인
  • 지도 중심점과 줌 레벨이 적절한지 확인

UI 개선 테스트

  • 탐색 상세 화면 네비게이션 바 패딩 확인
  • 라이트 모드 지도가 올바르게 표시되는지 확인

- 카테고리별 핀 표시 (카페, 음식, 게임, 쇼핑 등)
- 스팟 마커 처리 기능이 강화된 NaverMapComponent
- 지도상에서 상호작용 가능한 위치 정보 제공
- NotificationEntity 및 알림 설정 API 인터페이스 추가
- 역 정보에 좌표 데이터 및 favoriteID 필드 추가
- UserSession에 여행 역 좌표 정보 추가
Place 관련 API, 모델, 리포지토리, 서비스 구현
- PlaceAPI, PlaceDTOModel 및 매퍼 추가
- PlaceRepository 및 PlaceService 구현
- Station API 및 서비스 수정
- Place 엔티티, 리포지토리, 유스케이스 추가
- DI 등록 및 탐색 기능 연동
- 앱 로고 리소스 교체 및 디자인 시스템 정리
- Place 도메인 DI 등록 추가
- 로고 리소스 SVG 포맷 최적화
- 탐색 지도 목적지 카메라 동작 개선
- 선택된 스팟 카드 스타일 개선
- 로그인 화면 레이아웃 간소화
- 장소 병합 로직을 O(n²)에서 O(n)으로 최적화
- 지도 마커 터치 핸들러 추가로 선택 상태 초기화
- 카드 전환 및 페이지 로딩 상태 관리 개선
- 위치 캐싱으로 불필요한 위치 요청 방지
- 새로운 ExploreDetailFeature와 ExploreDetailView 추가
- ExploreSelectedSpotCardView에 탭 제스처 구현
- HomeCoordinator에 ExploreDetail 라우팅 로직 추가
- ExploreListSkeletonView UI 개선
- String nilIfEmpty 확장 유틸리티로 이동
- 위치 접근 제어를 위한 LocationPermissionManager 추가
- 카메라 작업을 위한 CameraControlResult 엔티티 및 CameraUseCase 추가
- 위치 관련 비즈니스 로직을 위한 LocationUseCase 추가
- 역 저장소 및 유스케이스 인터페이스 업데이트
위치 좌표 포맷팅, 시간 표시 유틸리티, 텍스트 처리 헬퍼, 장소 핀 아이콘, 다크 그레이 색상 변형을 추가해 탐색 및 장소 상세 수정
- ExploreDetail 화면 레이아웃 간격 조정
- Map 상호작용 활성화 및 중복 fetch 로직 제거
- 히스토리 페이지 사이즈 50으로 증가
Place 기능의 전체 레이어에 걸친 아키텍처 개선:
- PlaceError 도메인 오류 처리 시스템 추가
- PlaceDetailEntity 및 입력 모델 구조 개선
- API부터 UseCase까지 일관된 에러 핸들링 적용
- 장소 상세 정보 데이터 구조 확장
지도 마커 이미지 캐싱, 스켈레톤 로딩 뷰 추가, 조건부 UI 표시 등 성능과 사용자 경험을 개선한 종합적인 업데이트
외부 지도 앱(Apple Maps, Google Maps, 네이버지도) 길찾기 연동
구현. 경로 계산 중 스켈레톤 로딩 UI 추가하고 지도 다크모드를
라이트모드로 변경. 출발시간 선택 로직 개선 및 디버그 로그 정리.
- 네이버/구글/카카오맵 URL 스킴 및 entitlements 추가
- 앱 설치 확인 로직 및 딥링크 파싱 개선
- 코드 사이닝 및 샌드박스 설정 업데이트
- UserSession에 isGuest 필드 추가
- LoginFeature에서 presntGuestLookAround 액션 처리 시 isGuest = true 설정
- OnBoardingFeature에서 비회원일 때 API 통신(signUpUseCase.registerUser) 건너뛰기
- 비회원 모드에서 바로 onBoardingCompleted로 이동하여 메인 화면 진입
- UserSession에 accessToken 필드 추가
- OnBoardingFeature에서 isGuest 플래그뿐만 아니라 accessToken 유무도 확인
- accessToken이 비어있거나 isGuest가 true인 경우 API 통신 건너뛰기
- UserSession에서 accessToken 필드 제거 (보안 강화)
- OnBoardingFeature에 KeychainManager 의존성 주입
- Keychain에서 accessToken 존재 여부로 회원/비회원 판단
- accessToken이 없거나 isGuest가 true인 경우 API 통신 건너뛰기
- TrainStationView에서 비회원일 때 즐겨찾기 버튼 숨김 처리
- TrainStationFeature에서 비회원일 때 API 실패 시 기본 주요 역 데이터로 폴백
- StationRowModel에 makeDefaultMajorStations() 메소드 추가
- 비회원도 주요 역(강남, 홍대입구, 신촌 등) 선택 가능
- 비회원도 API 응답을 받을 수 있도록 기본 데이터 폴백 제거
- publicProvider 사용하는 API가 비회원에게도 정상 응답하도록 수정 필요
- @shared userSession이 있을 때 Hashable 프로토콜 충돌 수정
- 비회원일 때 즐겨찾기 섹션 숨김 로직 복원
- 수동 Hashable 구현으로 @shared 프로퍼티 호환성 확보
- 복잡한 Dictionary 표현식을 별도 변수로 분리
- updateRowsWithFavoriteStatus 헬퍼 함수 추가
- 반복되는 StationEntity 생성 로직 모듈화로 컴파일 성능 향상
- allStation API는 notAccessTokenHeader 사용하여 Authorization 헤더 제거
- addFavoriteStation, deleteFavoriteStation은 여전히 baseHeader 사용
- 비회원도 역 목록 조회 가능하도록 개선
- accessToken 유무에 따라 동적으로 헤더 선택
- 비회원: notAccessTokenHeader (Authorization 헤더 없음)
- 회원: baseHeader (Authorization 헤더 포함)
- 같은 API 엔드포인트로 회원/비회원 모두 지원
* TokenProviding 프로토콜 및 구현에 clearToken() 메서드 추가
* 로그아웃/출금 흐름에서 APIHeader 토큰을 올바르게 삭제하도록 업데이트
* 동적 게스트/회원 인증을 지원하도록 서비스 리팩토링
* Splash 및 TrainStation 기능에서 UserSession.isGuest 상태 동기화
* 여행/초대 딥링크를 경로 기반 딥링크 처리 방식으로 대체
* 온보딩 4단계 지도 선택에 대한 유효성 검사 추가
feat: 위치 추적 및 경로 검색 기능 개선 #16
- 탐색 상세 화면에서 스크롤 기반 네비게이션 제목 추가
- 지도 좌표 처리 및 오류 상태 개선
- RouteNotificationFeature와 뷰 구조 생성
- 설정의 지도 타입 선택 UI 간소화
- Simplify Google Maps and Naver Maps URL handling with primary URLs
- Remove location request retry loops for cleaner error handling
- Extract common location creation logic to reduce code duplication
- Enhance Fastlane build number management and workspace generation
- Clean up code structure and improve maintainability
@Roy-wonji Roy-wonji merged commit 66f658c into develop Apr 1, 2026
@Roy-wonji Roy-wonji deleted the feature/Route branch April 1, 2026 18:10
Roy-wonji added a commit that referenced this pull request Apr 2, 2026
feat: 탐색 상세 네비게이션 개선 및 경로 찾기 기능 강화
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant