Commit Graph

27 Commits

Author SHA1 Message Date
JiWoong Sul
6f45c7b456 perf(app): 초기화 병렬 처리 및 UI 개선
## 성능 최적화

### main.dart
- 앱 초기화 병렬 처리 (Future.wait 활용)
- 광고 SDK, Hive 초기화 동시 실행
- Hive Box 오픈 병렬 처리
- 코드 구조화 (_initializeHive, _initializeNotifications)

### visit_provider.dart
- allLastVisitDatesProvider 추가
- 리스트 화면에서 N+1 쿼리 방지
- 모든 맛집의 마지막 방문일 일괄 조회

## UI 개선

### 각 화면 리팩토링
- AppDimensions 상수 적용
- 스켈레톤 로더 적용
- 코드 정리 및 일관성 개선
2026-01-12 15:16:05 +09:00
JiWoong Sul
21941443ee feat(core): 공통 UI 컴포넌트 및 상수 추가
## 새 파일

### AppDimensions (app_dimensions.dart)
- UI 관련 상수 중앙 집중화
- 패딩, 마진, 보더 레디우스, 아이콘 크기 등 정의
- 하드코딩된 값을 상수로 대체하여 일관성 확보

### InfoRow (info_row.dart)
- 레이블-값 쌍을 표시하는 공통 위젯
- 수평/수직 배치 지원

### SkeletonLoader (skeleton_loader.dart)
- Shimmer 효과를 가진 스켈레톤 로더
- RestaurantCardSkeleton, RestaurantListSkeleton 포함
- 로딩 상태 UX 개선
2026-01-12 15:15:56 +09:00
JiWoong Sul
32e25aeb07 refactor(cleanup): 사용하지 않는 코드 정리
## 삭제된 파일

### 미사용 예외 클래스
- 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 통과
2025-12-22 19:45:22 +09:00
JiWoong Sul
cf7e187985 fix(privacy): 개인정보 처리방침 및 지오코딩 동작 정리
- 스토어 설명에 네이버 지도앱 공유 링크를 수정하지 않고 그대로 붙여넣어야 한다는 안내를 추가하고, 실제 동작과 맞는 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 기반 추가 시에는 지오코딩 실패를 현재 위치/기본 좌표로 자동 대체하지 않고 명시적인 오류로 처리하여, 잘못된 주소로 저장되지 않도록 했습니다.
2025-12-05 19:26:11 +09:00
JiWoong Sul
0c6b10d4f6 fix(ad): 화면별 네이티브 광고 높이 조정 2025-12-05 16:13:54 +09:00
JiWoong Sul
753f578504 fix(ad): 높이에 따라 템플릿/최소높이 자동 조정 2025-12-05 16:06:30 +09:00
JiWoong Sul
887f1ad6fe fix(ad): 네이티브 템플릿 높이 보정 2025-12-05 15:52:16 +09:00
JiWoong Sul
0e45616dfd chore(app): 스플래시 권한 대기 시간을 3초로 축소
- 권한 요청 Future 타임아웃을 5초에서 3초로 줄여 스플래시 체류 시간을 단축
2025-12-04 16:40:37 +09:00
JiWoong Sul
99ad8a3bd5 chore(app): 추천 기록 탭 대응과 스플래시 대기 제한
- RecommendationRecordCard에 onTap 콜백을 추가하고 카드 전체를 InkWell로 감싸 탭 제스처를 받을 수 있게 함\n- _navigateToHome에서 권한 요청 Future를 5초 타임아웃으로 감싸 스플래시에서 무한 대기를 막고, 완료 여부와 관계없이 홈으로 이동하도록 정리\n- 변경 의도 주석을 추가해 동작 맥락을 명시
2025-12-04 16:35:27 +09:00
JiWoong Sul
bcc26f5e79 fix(ad): 스크린샷 모드에서 네이티브 광고 비활성화 2025-12-04 16:29:32 +09:00
JiWoong Sul
04b1c3e987 fix(splash): 배경 아이콘 겹침 최소화 2025-12-03 18:55:49 +09:00
JiWoong Sul
095222ef61 style(ad): 네이티브 광고 라운드 제거 2025-12-03 18:36:23 +09:00
JiWoong Sul
637507f02a fix(calendar): 월별 방문 카테고리 집계 반영 2025-12-03 18:31:37 +09:00
JiWoong Sul
3f659432e9 fix(ad): 전면 광고 몰입 모드 적용 2025-12-03 18:26:34 +09:00
JiWoong Sul
d733bf664b feat(ads): 네이티브 광고 적용 및 디버그 스위치 이동 2025-12-03 17:25:00 +09:00
JiWoong Sul
e4c5fa7356 fix(notification): harden local alerts 2025-12-03 14:48:21 +09:00
JiWoong Sul
3ff9e5f837 feat(app): add vworld geocoding and native ads placeholders 2025-12-03 14:30:20 +09:00
JiWoong Sul
df4c34194c feat(debug): add preview toggles and auto-close ads
- 기록/통계 탭에 디버그 토글 배너 추가 및 테스트 데이터 주입 로직 상태화\n- 리스트 공유 화면에 디버그 프리뷰 토글, 광고 관문, 디버그 전송 흐름 반영\n- 모의 전면 광고는 대기 시간 종료 시 자동 완료되도록 변경\n- AGENTS.md에 코멘트는 한국어로 작성 규칙 명시\n\n테스트: flutter analyze; flutter test
2025-12-02 15:24:34 +09:00
JiWoong Sul
69902bbc30 feat(category): add autocomplete for subcategories 2025-12-01 18:16:28 +09:00
JiWoong Sul
0e75a23ade feat(category): add autocomplete for category inputs 2025-12-01 18:02:09 +09:00
JiWoong Sul
c1aa16c521 feat(app): stabilize recommendation flow 2025-12-01 17:22:21 +09:00
JiWoong Sul
0e8c06bade feat(app): seed restaurants, geocode addresses, refresh sharing 2025-11-26 19:01:00 +09:00
JiWoong Sul
2a01fa50c6 feat(app): finalize ad gated flows and weather
- 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
2025-11-22 00:10:51 +09:00
JiWoong Sul
947fe59486 feat(app): add manual entry and sharing flows 2025-11-19 16:36:39 +09:00
JiWoong Sul
53ad14a8eb fix: NaverLocalSearchResult 좌표 필드 타입 오류 수정
- NaverLocalSearchResult에 latitude/longitude 필드가 없는 문제 해결
- 네이버 API는 mapx/mapy (네이버 좌표계) 사용
- 거리 계산 대신 네이버 API의 좌표 기반 정렬 기능 활용
- 불필요한 DistanceCalculator import 제거

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 19:38:32 +09:00
JiWoong Sul
9a61e2f391 fix: 맛집 중복 체크 및 카테고리 필터 로직 개선
1. placeId 기반 중복 체크 제거
   - 이전 대화에서 명확히 한 대로 placeId는 매칭에 사용하지 않음

2. 주소 기반 매칭 개선
   - 주소가 있을 때만 주소 기반 중복 체크 수행

3. 위치 기반 매칭 추가
   - 50m 이내 동일한 이름의 맛집 중복 체크 추가

4. 검색 결과 선택 로직 개선
   - 주소가 없을 때 가장 가까운 거리의 업체 선택

5. 카테고리 필터 버그 수정
   - 카테고리 표시명과 실제 값 불일치 문제 해결
   - 부분 일치 및 정규화된 비교 지원

6. 빈 상태 메시지 개선
   - 필터링 중일 때 적절한 안내 메시지 표시
   - 필터 초기화 버튼 추가

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 19:27:04 +09:00
JiWoong Sul
85fde36157 feat: 초기 프로젝트 설정 및 LunchPick 앱 구현
LunchPick(오늘 뭐 먹Z?) Flutter 앱의 초기 구현입니다.

주요 기능:
- 네이버 지도 연동 맛집 추가
- 랜덤 메뉴 추천 시스템
- 날씨 기반 거리 조정
- 방문 기록 관리
- Bluetooth 맛집 공유
- 다크모드 지원

기술 스택:
- Flutter 3.8.1+
- Riverpod 상태 관리
- Hive 로컬 DB
- Clean Architecture

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-30 19:03:28 +09:00