Skip to content

Conversation

@EM-H20
Copy link
Contributor

@EM-H20 EM-H20 commented Dec 4, 2025

Summary by CodeRabbit

릴리스 노트

  • 새로운 기능

    • 프로필 편집 기능 추가 (닉네임, 성별, 생년월일, 관심사 관리)
    • 정책 및 약관 상세 조회 페이지 개편
    • 마이페이지 화면 재설계 및 섹션 구조 개선
    • 앱 버전 정보 표시
  • 개선사항

    • 저장된 장소 목록 데이터 소스 개선
    • 백버튼 및 UI 스타일 개선
    • API 응답 데이터 필드 확장 (리뷰 수, 콘텐츠 정보)
    • 네트워크 요청 안정성 개선

✏️ Tip: You can customize this high-level summary in your review settings.

EM-H20 added 10 commits December 4, 2025 00:28
… 토큰 재발급 처리 개선 및 저장 장소 목록 버그 수정 #96
… 및 뒤로가기 아이콘 스타일 통일 #96

- CommonAppBar preferredSize에서 ScreenUtil(.h) 제거하여 Flutter 표준 높이(56px) 사용
- SliverAppBar 사용 화면들의 뒤로가기 아이콘을 CommonAppBar 스타일로 통일
  - sns_contents_list_screen: Icons.arrow_back_ios + AppSizes.iconDefault + Padding 적용
  - saved_places_list_screen: 동일하게 적용
- 화면 전환 시 AppBar가 위로 튀어오르는 현상 해결
@coderabbitai
Copy link

coderabbitai bot commented Dec 4, 2025

Caution

Review failed

The pull request is closed.

개요

Walkthrough

정책 및 약관 시스템, 프로필 편집 기능, 동시 요청 토큰 새로고침 처리를 추가했습니다. 새로운 정책 데이터 모델, 서비스, UI 화면을 도입하고, 인증 인터셉터의 동시성 안전성을 개선했습니다. MyPage 화면을 모듈식 위젯으로 재구성하고 라우팅을 업데이트했습니다.

Changes

콘텐츠 / 파일 변경 요약
정책 및 약관 자산
assets/terms/age_confirmation.json, assets/terms/marketing_consent.json, assets/terms/privacy_policy.json, assets/terms/terms_of_service.json
한국어 정책/약관 JSON 자산 4개 추가. 각 파일은 제목, 버전, 마지막 업데이트 날짜, 섹션 배열 포함.
API 문서
docs/BackendAPI.md
버전 날짜 업데이트(2025-11-24 → 2025-12-04). PlaceDto 및 관련 응답에 userRatingsTotal 필드 추가. ContentInfo에 contentUrl 및 platformUploader 필드 추가.
인증 및 네트워크
lib/core/network/auth_interceptor.dart, lib/core/utils/api_logger.dart
토큰 새로고침 중 동시 요청을 처리하기 위해 Completer 기반 대기 메커니즘 추가. onRequest를 Future로 변경. REFRESH_TOKEN_MISMATCH 에러 코드 추가.
라우팅
lib/core/router/router.dart, lib/core/router/routes.dart
PolicyDetailScreen으로 향하는 새로운 policyDetail 라우트 추가. profileEdit 및 settings 경로 업데이트(/profile-edit → /my-page/profile-edit, /settings → /my-page/settings).
정책 데이터 모델
lib/features/policy/data/models/policy_model.dart, policy_model.freezed.dart, policy_model.g.dart
PolicyModel, PolicySection 데이터 클래스(Freezed) 추가. PolicyType 열거형 정의(termsOfService, privacyPolicy, ageConfirmation, marketingConsent).
정책 서비스
lib/features/policy/data/services/policy_service.dart, policy_service.g.dart
PolicyService로 로컬 JSON 자산에서 정책 데이터 로드. 정책별 Riverpod 제공자(policyService, policy) 추가.
프로필 편집 제공자
lib/features/mypage/presentation/providers/profile_edit_provider.dart, profile_edit_provider.g.dart
ProfileEditNotifier 및 ProfileEditState로 프로필 업데이트, 닉네임 확인, 사용자 관심사 관리 기능 추가.
프로필 편집 화면
lib/features/mypage/presentation/screens/profile_edit_screen.dart
닉네임, 성별, 생년월일, 관심사 관리 기능이 있는 포괄적인 프로필 편집 화면 추가. 바텀 시트 기반 관심사 선택기 포함.
MyPage 화면 및 위젯
lib/features/mypage/presentation/screens/mypage_screen.dart, screens/profile_header.dart, widgets/menu_section.dart, widgets/menu_item.dart, widgets/toggle_menu_item.dart
MyPageScreen을 상태 기반 위젯으로 변경. 모듈식 MenuSection, MenuItem, ToggleMenuItem 위젯 추가. ProfileHeader를 수평 탭 가능 디자인으로 재설계.
정책 상세 화면
lib/features/policy/presentation/screens/policy_detail_screen.dart
정책 내용 표시 화면 추가. 데이터, 로딩, 에러 상태 처리.
온보딩
lib/features/onboarding/presentation/pages/terms_page.dart
정책 상세 대화창을 라우팅 기반 네비게이션으로 변경.
공유 컴포넌트
lib/shared/widgets/common/common_app_bar.dart, lib/shared/widgets/place_detail/place_info_section.dart, lib/core/utils/marker_icon_loader.dart
CommonAppBar.forSettings 동작 변경. 마이너 포맷 정리.
홈 화면
lib/features/home/presentation/screens/saved_places_list_screen.dart, sns_contents_list_screen.dart
데이터 소스 업데이트 및 스타일 지정된 뒤로가기 버튼 추가.
구성
pubspec.yaml, macos/Flutter/GeneratedPluginRegistrant.swift
package_info_plus ^9.0.0 의존성 추가. assets/terms/ 자산 디렉터리 추가. macOS 플러그인 등록 업데이트.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45분

주의 깊게 검토해야 할 영역:

  • lib/core/network/auth_interceptor.dart: 동시 토큰 새로고침 처리의 Completer 메커니즘이 정확하게 구현되었는지 확인 필요. 데드락 또는 누수 위험 검토.
  • lib/features/mypage/presentation/providers/profile_edit_provider.dart: Mock 데이터 로직과 실제 API 호출 경로가 올바르게 분리되었는지 확인.
  • lib/features/policy/data/services/policy_service.dart: JSON 자산 로딩 및 에러 처리 로직 검증.
  • lib/features/mypage/presentation/screens/profile_edit_screen.dart: 관심사 선택 바텀 시트의 상태 관리와 유효성 검사(최소 3개, 최대 10개) 확인.
  • 라우팅 변경사항: 프로필 편집 및 정책 상세 라우트가 모든 화면에서 올바르게 작동하는지 통합 테스트 필요.

Possibly related PRs

Poem

🐰 新しい약관と정책, 프로필도 편집해요,
동시 요청도 기다려주고,
모듈식 메뉴로 깔끔해졌네요!
정책의 토끼가 함께 뛰어다니며,
앱은 더욱 안전해졌어요. 🌟✨

✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch 20251123_#96_기능추가_컨텐츠_contentcontroller_API_사용해서_연결

📜 Recent review details

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 216fadb and c6266f8.

⛔ Files ignored due to path filters (2)
  • ios/Podfile.lock is excluded by !**/*.lock
  • pubspec.lock is excluded by !**/*.lock
📒 Files selected for processing (31)
  • assets/terms/age_confirmation.json (1 hunks)
  • assets/terms/marketing_consent.json (1 hunks)
  • assets/terms/privacy_policy.json (1 hunks)
  • assets/terms/terms_of_service.json (1 hunks)
  • docs/BackendAPI.md (8 hunks)
  • lib/core/network/auth_interceptor.dart (5 hunks)
  • lib/core/router/router.dart (2 hunks)
  • lib/core/router/routes.dart (1 hunks)
  • lib/core/utils/api_logger.dart (2 hunks)
  • lib/core/utils/marker_icon_loader.dart (1 hunks)
  • lib/features/home/presentation/screens/saved_places_list_screen.dart (3 hunks)
  • lib/features/home/presentation/screens/sns_contents_list_screen.dart (1 hunks)
  • lib/features/mypage/presentation/providers/profile_edit_provider.dart (1 hunks)
  • lib/features/mypage/presentation/providers/profile_edit_provider.g.dart (1 hunks)
  • lib/features/mypage/presentation/screens/mypage_screen.dart (1 hunks)
  • lib/features/mypage/presentation/screens/profile_edit_screen.dart (1 hunks)
  • lib/features/mypage/presentation/widgets/menu_item.dart (1 hunks)
  • lib/features/mypage/presentation/widgets/menu_section.dart (1 hunks)
  • lib/features/mypage/presentation/widgets/profile_header.dart (2 hunks)
  • lib/features/mypage/presentation/widgets/toggle_menu_item.dart (1 hunks)
  • lib/features/onboarding/presentation/pages/terms_page.dart (3 hunks)
  • lib/features/policy/data/models/policy_model.dart (1 hunks)
  • lib/features/policy/data/models/policy_model.freezed.dart (1 hunks)
  • lib/features/policy/data/models/policy_model.g.dart (1 hunks)
  • lib/features/policy/data/services/policy_service.dart (1 hunks)
  • lib/features/policy/data/services/policy_service.g.dart (1 hunks)
  • lib/features/policy/presentation/screens/policy_detail_screen.dart (1 hunks)
  • lib/shared/widgets/common/common_app_bar.dart (2 hunks)
  • lib/shared/widgets/place_detail/place_info_section.dart (1 hunks)
  • macos/Flutter/GeneratedPluginRegistrant.swift (2 hunks)
  • pubspec.yaml (2 hunks)

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.

@EM-H20 EM-H20 merged commit 0ebb44c into main Dec 4, 2025
1 of 2 checks passed
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.

2 participants