- 레이블 "네이버 지도 URL" → "네이버 지도 링크" 변경
- add_restaurant_form: URL 입력 필드 추가 (공유 텍스트 붙여넣기 지원)
- edit_restaurant_dialog: URL 필드 항상 표시, URL 추출 로직 추가
- add_restaurant_dialog: naverUrl을 FetchedRestaurantJsonView에 전달
- fetched_restaurant_json_view.dart: _launchNaverUrl try-catch 패턴 적용
- restaurant_card.dart: 카드 클릭 시 URL 열기, 상세보기 팝업 제거
- 웹 환경 호환성 개선 (platformDefault 폴백)
## 성능 최적화
### main.dart
- 앱 초기화 병렬 처리 (Future.wait 활용)
- 광고 SDK, Hive 초기화 동시 실행
- Hive Box 오픈 병렬 처리
- 코드 구조화 (_initializeHive, _initializeNotifications)
### visit_provider.dart
- allLastVisitDatesProvider 추가
- 리스트 화면에서 N+1 쿼리 방지
- 모든 맛집의 마지막 방문일 일괄 조회
## UI 개선
### 각 화면 리팩토링
- AppDimensions 상수 적용
- 스켈레톤 로더 적용
- 코드 정리 및 일관성 개선
## 삭제된 파일
### 미사용 예외 클래스
- lib/core/errors/app_exceptions.dart
- lib/core/errors/data_exceptions.dart
- 정의만 되어 있고 실제 코드에서 사용되지 않음
- network_exceptions.dart는 활발히 사용 중이므로 유지
### 미사용 공통 위젯
- lib/core/widgets/empty_state_widget.dart
- lib/core/widgets/loading_indicator.dart
- 정의만 되어 있고 다른 화면에서 import하지 않음
- error_widget.dart는 share_screen에서 사용 중이므로 유지
### 미사용 디버그 위젯
- lib/presentation/pages/calendar/widgets/debug_test_data_banner.dart
- 테스트 데이터 배너 위젯이지만 calendar_screen에서 사용하지 않음
### 백업 파일
- lib/data/api/naver_api_client.dart.backup
- lib/presentation/pages/restaurant_list/widgets/add_restaurant_dialog.dart.backup
- 불필요한 백업 파일 정리
## 검증
- flutter analyze 통과
- 스토어 설명에 네이버 지도앱 공유 링크를 수정하지 않고 그대로 붙여넣어야 한다는 안내를 추가하고, 실제 동작과 맞는 URL 사용 조건을 명시했습니다.
- doc/store_desc/privacy_policy.md에 현재 구현 기준(키 기반 네이버 로컬 검색 미사용, 네이버 지도 웹/GraphQL 파싱, VWorld+Nominatim 지오코딩, 기상청 Open API, Google AdMob)을 반영한 개인정보 처리방침을 추가/정리했습니다.
- lib/data/api/naver_api_client.dart에서 searchLocal 구현을 변경하여 네이버 로컬 검색 Open API를 더 이상 호출하지 않고, 항상 빈 결과를 반환하면서 디버그 로그만 남기도록 비활성화했습니다.
- 네이버 URL/검색으로 가져온 식당 정보를 편집하는 뷰에서 위도/경도 필드를 선택 입력으로 완화하여, 지오코딩 실패 시에도 폼 검증만으로 저장이 막히지 않도록 조정했습니다.
- AddRestaurantViewModel._resolveCoordinates에 allowFallbackWhenGeocodingFails 플래그를 추가하고, 네이버 URL 기반 추가 시에는 지오코딩 실패를 현재 위치/기본 좌표로 자동 대체하지 않고 명시적인 오류로 처리하여, 잘못된 주소로 저장되지 않도록 했습니다.
- RecommendationRecordCard에 onTap 콜백을 추가하고 카드 전체를 InkWell로 감싸 탭 제스처를 받을 수 있게 함\n- _navigateToHome에서 권한 요청 Future를 5초 타임아웃으로 감싸 스플래시에서 무한 대기를 막고, 완료 여부와 관계없이 홈으로 이동하도록 정리\n- 변경 의도 주석을 추가해 동작 맥락을 명시
- 기록/통계 탭에 디버그 토글 배너 추가 및 테스트 데이터 주입 로직 상태화\n- 리스트 공유 화면에 디버그 프리뷰 토글, 광고 관문, 디버그 전송 흐름 반영\n- 모의 전면 광고는 대기 시간 종료 시 자동 완료되도록 변경\n- AGENTS.md에 코멘트는 한국어로 작성 규칙 명시\n\n테스트: flutter analyze; flutter test
- add AppLogger and replace scattered print logging\n- implement ad-gated recommendation flow with reminder handling and calendar link\n- complete Bluetooth share pipeline with ad gate and merge\n- integrate KMA weather API with caching and dart-define decoding\n- add NaverUrlProcessor refactor and restore restaurant repository tests
1. placeId 기반 중복 체크 제거
- 이전 대화에서 명확히 한 대로 placeId는 매칭에 사용하지 않음
2. 주소 기반 매칭 개선
- 주소가 있을 때만 주소 기반 중복 체크 수행
3. 위치 기반 매칭 추가
- 50m 이내 동일한 이름의 맛집 중복 체크 추가
4. 검색 결과 선택 로직 개선
- 주소가 없을 때 가장 가까운 거리의 업체 선택
5. 카테고리 필터 버그 수정
- 카테고리 표시명과 실제 값 불일치 문제 해결
- 부분 일치 및 정규화된 비교 지원
6. 빈 상태 메시지 개선
- 필터링 중일 때 적절한 안내 메시지 표시
- 필터 초기화 버튼 추가
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
LunchPick(오늘 뭐 먹Z?) Flutter 앱의 초기 구현입니다.
주요 기능:
- 네이버 지도 연동 맛집 추가
- 랜덤 메뉴 추천 시스템
- 날씨 기반 거리 조정
- 방문 기록 관리
- Bluetooth 맛집 공유
- 다크모드 지원
기술 스택:
- Flutter 3.8.1+
- Riverpod 상태 관리
- Hive 로컬 DB
- Clean Architecture
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>