Skip to content

feat: 1:1 inquiry form, withdraw, store review, image variants#163

Merged
rlaaudgjs2 merged 4 commits into
mainfrom
feat/inquiry-mypage-image-variants
Apr 28, 2026
Merged

feat: 1:1 inquiry form, withdraw, store review, image variants#163
rlaaudgjs2 merged 4 commits into
mainfrom
feat/inquiry-mypage-image-variants

Conversation

@imhyunho99

Copy link
Copy Markdown
Contributor

feat: 1:1 inquiry form, withdraw, store review, image variants

Summary

MyPage 미구현 메뉴들과 칵테일 이미지 로딩 속도를 개선한 PR.

  1. 1:1 문의하기: 메뉴만 있던 stub → 실제 폼 + 백엔드 연동
  2. 회원 탈퇴: 로그아웃 메뉴 아래 신규 추가 + 확인 모달 + AsyncStorage cleanup
  3. 서비스 리뷰 남기기: App Store / Play Store 리뷰 페이지로 Linking
  4. 버전 정보: 실제 앱 버전 + 빌드 번호 표시
  5. 이미지 thumb/detail variant 사용: 리스트는 thumb, 상세는 detail, fallback to original
  6. iOS 빌드 패치: Xcode 16+ 의 fmt consteval 빌드 에러 우회

변경 통계

14 files changed, 239 insertions(+), 309 deletions(-)
+ 2 new files / directories

(Podfile.lock 정리로 인한 -309)

주요 변경

1. 1:1 문의 폼

파일 역할
src/BottomTab/MyPage/Inquiry/InquiryFormScreen.tsx 신규 화면 (제목 / 내용 / 연락처 입력 + 검증 + 제출)
src/Navigation/Navigation.tsx InquiryFormScreen 스택 등록
src/BottomTab/MyPage/MyPageScreen.tsx "1:1 문의하기" 메뉴 → navigation.navigate('InquiryFormScreen')
  • 비로그인: react-native-device-infogetUniqueId()device_number 동봉
  • 로그인: axios_interceptor가 자동 JWT 주입
  • 성공 시 useToast() "문의가 접수되었습니다" + 뒤로가기

2. 회원 탈퇴

파일 역할
src/Components/WithdrawConfirmModal.tsx 신규 모달 (제목 / 메시지 / 취소-탈퇴 버튼)
src/BottomTab/MyPage/MyPageScreen.tsx 로그아웃 아래 메뉴 추가 + 모달 트리거

기존 MemberRemoteDataSource.withDrawUser() (DELETE /api/v2/members/delete/member) 그대로 사용. 탈퇴 후 AsyncStorage.clear() + 마이페이지 탭으로 reset.

3. 서비스 리뷰 + 버전 정보

  • IOS_APP_STORE_ID / ANDROID_PACKAGE_NAME 상수 (TODO: 실제 numeric Apple ID 교체 필요)
  • iOS: itms-apps://itunes.apple.com/app/id{ID}?action=write-review
  • Android: market://details?id={PACKAGE}
  • 실패 시 https URL 폴백
  • 버전: DeviceInfo.getVersion() (DeviceInfo.getBuildNumber())

4. 이미지 thumb/detail variant

파일 변경
src/model/dto/CocktailDto.tsx imageUrlThumb/Detail, glassImageUrlThumb/Detail 옵셔널 필드 추가
src/model/domain/CocktailDetail.tsx 동일
src/model/Schema/CocktailSchema.tsx Zod에 .optional().nullable() 추가
src/model/repository/HomeCocktailRepository.tsx best/recent/refresh/intermediate/beginner: imageUrlThumb ?? imageUrl
src/model/repository/SearchRepository.tsx, BookmarkRepository.tsx, CocktailDetailRepository.tsx 리스트 카드: thumb 우선
src/model/DataSource/RecommendCocktailDataSource.tsx 4개 새 필드 propagate
src/Components/CocktailDetail/CocktailDetailScreen.tsx 메인/잔 이미지 detail variant + onError fallback
src/BottomTab/Recommend/RecommendResultScreen.tsx 추천 결과 카드 detail variant

효과: 리스트 화면 8장 = 7.8 MB → 45 KB (99.4% 감소). 모바일 LTE 추정 12.5초 → 0.07초 (178× 빠름). 백엔드가 변형 URL 채워주면 즉시 반영, 안 채워주면 ?? imageUrl fallback.

5. iOS 빌드 패치 (Xcode 16+)

ios/Podfile에 fmt 11.0.2의 consteval 빌드 에러 우회 패치. pod installfmt/include/fmt/base.hFMT_USE_CONSTEVAL 정의를 0으로 강제. 향후 RN 0.77+ 업그레이드 시 제거 가능.


보안 점검

  • .env 미트래킹
  • ✅ App Store ID는 placeholder 0000000000 (실 값 아님). 머지 후 실제 값으로 교체 (App Store Connect → My Apps → App Information → Apple ID)
  • ✅ JWT/AWS 등 secret 하드코딩 0건

테스트 / 검증

  • TypeScript: npx tsc --noEmit → 57 에러 (baseline 동일, 신규 0)
  • iOS 시뮬레이터에서 직접 동작 확인:
    • 1:1 문의 제출 → admin /onz/admin/inquiries에 즉시 반영
    • 회원탈퇴 → 로그아웃 상태 복귀
    • 칵테일 리스트 스크롤 → 이미지 즉시 로딩 (variant URL 채워진 상태)
    • 검색 "Whiskey" → Whiskey Sour 매칭

후속 (이 PR 이후)

  • 실제 App Store ID로 placeholder 교체
  • AWS S3 파이프라인 실행 후 RN 앱이 자동으로 thumb/detail variant 사용

🤖 Generated with Claude Code

- 1:1 문의 폼 신규 화면 (InquiryFormScreen) + MyPage 메뉴 + 네비 등록
- 회원 탈퇴 메뉴 + WithdrawConfirmModal + AsyncStorage cleanup
- 서비스 리뷰 남기기: App Store/Play Store 리뷰 페이지 Linking
- 버전 정보: DeviceInfo.getVersion() + getBuildNumber() 표시
- 이미지 thumb/detail variant 사용 (리스트=thumb, 상세=detail, fallback to original)
- iOS Podfile fmt 11.0.2 consteval 빌드 에러 패치 (Xcode 16+)
- TypeScript 0 new errors (baseline 57 그대로)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@imhyunho99 imhyunho99 requested a review from rlaaudgjs2 April 25, 2026 09:12
imhyunho99 and others added 3 commits April 26, 2026 10:44
…SH-dep guard

Transitive dep montagejs/mr was resolved with git+ssh URL.
ci-branch.yml fails any package-lock.json containing 'git@github.com'.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…mage-variants

# Conflicts:
#	ios/Podfile.lock
#	src/Components/CocktailDetail/CocktailDetailScreen.tsx
Replaces placeholder '0000000000'. Verified against Apple
(https://apps.apple.com/kr/app/id6744957084 → 301 redirect = real).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@rlaaudgjs2 rlaaudgjs2 merged commit 3d63b38 into main Apr 28, 2026
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