Skip to content

dev#445

Merged
slz6k merged 877 commits into
mainfrom
dev
May 15, 2026
Merged

dev#445
slz6k merged 877 commits into
mainfrom
dev

Conversation

@slz6k
Copy link
Copy Markdown
Member

@slz6k slz6k commented May 15, 2026

resolved #443

slz6k and others added 30 commits March 12, 2024 11:19
Feat/#330 ๋‹ต๋ณ€ ์ฑ„ํƒ ํ™•์ธ ํŒ์—…
feat: ํ™”์ดํŠธ๋ณด๋“œ ๋‹ค์ด์–ผ๋กœ๊ทธ ๋ณ€๊ฒฝ(#340)
slz6k and others added 28 commits April 29, 2026 15:49
- mypage_profile: Kakao FeedTemplate์œผ๋กœ ํ”„๋กœํ•„ ๊ณต์œ  (peeroreum://profile/{nickname})
- MainActivity: getInitialNickname cold start / onDeepLinkProfile warm start ์ฒ˜๋ฆฌ
- AndroidManifest: peeroreum://profile intent filter ์ถ”๊ฐ€
- main: extractNickname, onDeepLinkProfile ํ•ธ๋“ค๋Ÿฌ / Android uriLinkStream ์ค‘๋ณต ์ œ๊ฑฐ
- pending_deep_link: profileNickname ํ•„๋“œ ์ถ”๊ฐ€
- bottomNaviBar: profileNickname ๋”ฅ๋งํฌ ๋ผ์šฐํŒ… ์ถ”๊ฐ€
- wedu_room_info_sheet: showModalBottomSheet โ†’ Get.bottomSheet() ๊ต์ฒด
  (GetX Navigator ์ดˆ๊ธฐํ™” ์ค‘ ๋™์ผ GlobalKey<NavigatorState>๊ฐ€ Navigator์™€
   _FocusInheritedScope์— ์ค‘๋ณต ๋“ฑ๋ก๋˜๋Š” ๋ฌธ์ œ ๋ฐฉ์ง€)
- bottomNaviBar: wedu roomId ์ฒ˜๋ฆฌ์— 300ms delay ์ถ”๊ฐ€
- nested Scaffold ์ œ๊ฑฐ: mypage.dart, wedu_detail_screen.dart, mypage_profile.dart
- WeduRoomInfoSheet.onShare ์ฝœ๋ฐฑ ํƒ€์ž…์„ VoidCallback โ†’ void Function(Rect?)์œผ๋กœ ๋ณ€๊ฒฝ
- ๊ณต์œ  ๋ฒ„ํŠผ์„ Builder๋กœ ๊ฐ์‹ธ RenderBox ์œ„์น˜๋ฅผ ๊ณ„์‚ฐ, ์ฝœ๋ฐฑ์— Rect ์ „๋‹ฌ
- wedu_home, wedu_search_result: sharePositionOrigin: shareRect ์ถ”๊ฐ€
- mypage_profile: GlobalKey(_shareButtonKey)๋กœ ๊ณต์œ  ๋ฒ„ํŠผ ์œ„์น˜ ์ถ”์  ํ›„ sharePositionOrigin ์ „๋‹ฌ
- iOS์—์„œ ์นด์นด์˜คํ†ก ๋ฏธ์„ค์น˜ ์‹œ fallback Share.share() ํ˜ธ์ถœ ์‹œ PlatformException ํ•ด๊ฒฐ
- changeDetailWedu() ๋ฐฉ์žฅ/์ผ๋ฐ˜ ์ฐธ์—ฌ์ž ๋ฉ”๋‰ด ๋ชจ๋‘์— ๊ณต์œ ํ•˜๊ธฐ ํ•ญ๋ชฉ ์ถ”๊ฐ€
- ์นด์นด์˜คํ†ก ์„ค์น˜ ์‹œ FeedTemplate ๊ณต์œ , ๋ฏธ์„ค์น˜ ์‹œ Share.share() fallback
- iOS sharePositionOrigin: dots ๋ฒ„ํŠผ(_dotsButtonKey)์„ ์•ต์ปค๋กœ ์‚ฌ์šฉ
- ๊ณต์œ ํ•˜๊ธฐ ํƒญ ์‹œ ๋ฐ”ํ…€์‹œํŠธ ์ž๋™ ๋‹ซํž˜(Get.back()) ํ›„ ๊ณต์œ  ์‹คํ–‰
- ์ผ๋ฐ˜ ์ฐธ์—ฌ์ž ๋ฉ”๋‰ด: GestureDetector โ†’ Column+TextButton์œผ๋กœ ๋ฆฌํŒฉํ„ฐ
- SafeArea ์ œ๊ฑฐ ํ›„ ๋ช…์‹œ์  bottom ํŒจ๋”ฉ ์ ์šฉ
- ๊ณต์‹: viewPadding.bottom > 20 ? viewPadding.bottom : 20
  - iOS ํ™ˆ ์ธ๋””์ผ€์ดํ„ฐ(~34pt): viewPadding ๊ฐ’ ์‚ฌ์šฉ
  - Android ์ œ์Šค์ฒ˜ ๋‚ด๋น„๊ฒŒ์ด์…˜(0): 20px ๊ณ ์ •
  - Android 3๋ฒ„ํŠผ ๋‚ด๋น„๊ฒŒ์ด์…˜(~48dp): viewPadding ๊ฐ’ ์‚ฌ์šฉ
- shareDefault โ†’ shareCustom (templateId: 102956)
- ๊ฐ™์ด๋ฐฉ ์ƒ์„ธ์—์„œ invitationUrl fetch ์ถ”๊ฐ€
- templateArgs: RoomName, ImageUrl(์ดˆ๋Œ€์žฅ ์ด๋ฏธ์ง€), Link(๋”ฅ๋งํฌ)
- wedu_detail_screen.dart, wedu_home.dart ๋™์ผ ์ ์šฉ
- shareDefault โ†’ shareCustom (templateId: 102993)
- templateArgs: UserName
- ๋”ฅ๋งํฌ: ์นด์นด์˜ค ์ฝ˜์†” ํ…œํ”Œ๋ฆฟ์—์„œ nickname=${UserName} ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฒ˜๋ฆฌ
- AppDelegate์— kakaoa://kakaolink ์Šคํ‚ด ํ•ธ๋“ค๋Ÿฌ ์ถ”๊ฐ€
  - ์›œ ์Šคํƒ€ํŠธ: application(_:open:options:)์—์„œ MethodChannel๋กœ ์ „๋‹ฌ
  - ์ฝœ๋“œ ์Šคํƒ€ํŠธ: launchOptions URL ํŒŒ์‹ฑ ํ›„ getInitialRoomId/getInitialNickname์œผ๋กœ ์‘๋‹ต
- main.dart: iOS ์ฝœ๋“œ ์Šคํƒ€ํŠธ getInitialLink() ํ˜ธ์ถœ ์ถ”๊ฐ€
- AppDelegate: super.application() ํ˜ธ์ถœ ํ›„ MethodChannel ์„ค์ •ํ•˜๋„๋ก ์ˆœ์„œ ์ˆ˜์ • (window ์ดˆ๊ธฐํ™” ๋ณด์žฅ)
- AppDelegate: FlutterViewController ์บ์ŠคํŒ…์„ force cast์—์„œ optional cast๋กœ ๋ณ€๊ฒฝ (ํฌ๋ž˜์‹œ ๋ฐฉ์ง€)
- main.dart: iOS getInitialLink() ์ œ๊ฑฐ โ€” AppDelegate MethodChannel์ด cold start ์ฒ˜๋ฆฌํ•˜๋ฏ€๋กœ ์ค‘๋ณต ๋ฐฉ์ง€
- main.dart: uriLinkStream์—์„œ kakaoa:// ์Šคํ‚ด ํ•„ํ„ฐ๋ง โ€” AppDelegate MethodChannel๊ณผ ์ค‘๋ณต ์ฒ˜๋ฆฌ ๋ฐฉ์ง€
- fetchSocialLogin: http.get โ†’ http.post, email์„ query param ๋Œ€์‹  JSON body๋กœ ์ „์†ก
- ApiClient.dart ์‹ ๊ทœ ์ถ”๊ฐ€: Dio ์‹ฑ๊ธ€ํ†ค, ์ž๋™ ํ† ํฐ ๊ฐฑ์‹  ์ธํ„ฐ์…‰ํ„ฐ
  (401 ์‘๋‹ต ์‹œ /token/reissue ํ˜ธ์ถœ ํ›„ ์›๋ž˜ ์š”์ฒญ ์žฌ์‹œ๋„)
- ๊ธฐ์กด Authorization ํ—ค๋”๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ์ธํ„ฐ์…‰ํ„ฐ๊ฐ€ ๋ฎ์–ด์“ฐ์ง€ ์•Š๋„๋ก ์ฒ˜๋ฆฌ
  (๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์„ค์ • ๋“ฑ ํŠน์ˆ˜ ํ† ํฐ ์‚ฌ์šฉ ์ผ€์ด์Šค ๋Œ€์‘)
- main.dart์— ApiClient().init() ์ดˆ๊ธฐํ™” ์ถ”๊ฐ€
- ์†Œ์…œ ๋กœ๊ทธ์ธ GET โ†’ POST ๋ณ€๊ฒฝ, ์‘๋‹ต์—์„œ accessToken/refreshToken ๋“ฑ ์ •์ƒ ์ €์žฅ
- ์•„๋ž˜ ์ „์ฒด ํ™”๋ฉด์˜ ์ง์ ‘ Dio/http ํ˜ธ์ถœ์„ ApiClient()๋กœ ์ผ๊ด„ ์ „ํ™˜:
  iedu: iedu_create, iedu_home, iedu_detail, iedu_in, iedu_search_result
  wedu: wedu_home, wedu_create_screen, wedu_create_invitation, wedu_modify_screen,
        wedu_detail_screen, wedu_detail_calendar, wedu_in, wedu_search_result_screen,
        wedu_room_info_sheet, management_checklist_screen
  mypage: mypage, mypage_account, mypage_acount_ps, mypage_profile, mypage_scrap,
          follower_api, following_api
  ranking: ranking_api
  sign: signin_screen, signin_email_screen, signup_grade/subject/school/nickname/email,
        password_change (email, validate, new_password)
  ๊ธฐํƒ€: NotificationApi, bottomNaviBar, alert_controller, VisitCount
- ์นด์นด์˜ค: loginWithKakaoTalk/Account() ๋ฐ˜ํ™˜ OAuthToken.accessToken ์„œ๋ฒ„ ์ „์†ก
- ๊ตฌ๊ธ€: GoogleSignInAuthentication.accessToken ์„œ๋ฒ„ ์ „์†ก
- fetchSocialLogin ์‹œ๊ทธ๋‹ˆ์ฒ˜ ๋ณ€๊ฒฝ: email โ†’ (provider, token, emailForSignup)
- 404(์‹ ๊ทœ ๊ฐ€์ž…) ์ผ€์ด์Šค๋Š” SDK์—์„œ ๊ฐ€์ ธ์˜จ ์ด๋ฉ”์ผ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ
- Apple Sign-In ๋ณ„๋„ ๊ตฌํ˜„ ํ•„์š”๋กœ ๋ฏธ์ง€์› ์ฒ˜๋ฆฌ
@slz6k slz6k merged commit 3c47bba into main May 15, 2026
1 check passed
@github-actions
Copy link
Copy Markdown

๐Ÿค– Claude Code Review

๐Ÿค– Claude Code Review

๐Ÿ”ด ๋ฒ„๊ทธ/๋ณด์•ˆ ์ด์Šˆ

  1. ๋ฏผ๊ฐํ•œ ์ •๋ณด ๋…ธ์ถœ: google-services.json ํŒŒ์ผ์— Firebase API ํ‚ค์™€ OAuth ํด๋ผ์ด์–ธํŠธ ์ •๋ณด๊ฐ€ ํ‰๋ฌธ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํŒŒ์ผ์ด ๊ณต๊ฐœ ์ €์žฅ์†Œ์— ์ปค๋ฐ‹๋˜๋ฉด ๋ณด์•ˆ ์œ„ํ—˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฒ€์ฆ ๋ถ€์žฌ: claude_review.py์—์„œ ANTHROPIC_API_KEY ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์กด์žฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•˜์ง€ ์•Š์•„ ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

  3. ํŒŒ์ผ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ: Python ์Šคํฌ๋ฆฝํŠธ์—์„œ ํŒŒ์ผ ์ฝ๊ธฐ/์“ฐ๊ธฐ ์‹œ ์ธ์ฝ”๋”ฉ์„ ๋ช…์‹œํ•˜์ง€ ์•Š์•„ ํ•œ๊ธ€ ์ฒ˜๋ฆฌ ์‹œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐ŸŸก ๊ฐœ์„  ๊ถŒ์žฅ ์‚ฌํ•ญ

  1. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐ•ํ™”:

    • Claude API ํ˜ธ์ถœ ์‹คํŒจ ์‹œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ถ”๊ฐ€ ํ•„์š”
    • Git diff ๋ช…๋ น์–ด ์‹คํŒจ ์‹œ ์ฒ˜๋ฆฌ ๋กœ์ง ํ•„์š”
  2. ์ฝ”๋“œ ์ •๋ฆฌ:

    • MainActivity.kt ํŒŒ์ผ์ด ์ž˜๋ฆฐ ์ƒํƒœ๋กœ ๋ณด์ด๋ฏ€๋กœ ์™„์ „ํ•œ ์ฝ”๋“œ ํ™•์ธ ํ•„์š”
    • .gitignore์— .env ํ•ญ๋ชฉ์ด ์ค‘๋ณต๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค
  3. ๊ถŒํ•œ ์ตœ์†Œํ™”: GitHub Actions workflow์—์„œ ํ•„์š”ํ•œ ์ตœ์†Œ ๊ถŒํ•œ๋งŒ ๋ถ€์—ฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

  4. ์„ค์ • ๊ฐ’ ์™ธ๋ถ€ํ™”: ํ•˜๋“œ์ฝ”๋”ฉ๋œ ๊ฐ’๋“ค(MAX_DIFF_CHARS, ๋ชจ๋ธ๋ช… ๋“ฑ)์„ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ์„ค์ • ํŒŒ์ผ๋กœ ๋ถ„๋ฆฌ ๊ถŒ์žฅ

๐ŸŸข ์ž˜๋œ ์ 

  1. ์ž๋™ํ™”๋œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ: GitHub Actions๋ฅผ ํ†ตํ•œ ์ž๋™ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ๊ตฌํ˜„์ด ์ž˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  2. ์กฐ๊ฑด๋ถ€ ์‹คํ–‰: PR๊ณผ ์ฝ”๋ฉ˜ํŠธ ์ด๋ฒคํŠธ์— ๋Œ€ํ•œ ์ ์ ˆํ•œ ์กฐ๊ฑด ์ฒ˜๋ฆฌ๊ฐ€ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  3. Firebase ํ†ตํ•ฉ: Android ์•ฑ์— Firebase ์„œ๋น„์Šค๊ฐ€ ์ฒด๊ณ„์ ์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  4. ๋”ฅ๋งํฌ ์„ค์ •: ์นด์นด์˜ค ๋กœ๊ทธ์ธ๊ณผ ์•ฑ ๋‚ด ๋”ฅ๋งํฌ๊ฐ€ ์ž˜ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

  5. ํŒจํ‚ค์ง€๋ช… ๋ณ€๊ฒฝ: ์˜ˆ์ œ์—์„œ ์‹ค์ œ ์•ฑ์œผ๋กœ ํŒจํ‚ค์ง€๋ช…์ด ์ ์ ˆํžˆ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ์„ ์ˆœ์œ„ ์š”์•ฝ ํ…Œ์ด๋ธ”

์šฐ์„ ์ˆœ์œ„ ํ•ญ๋ชฉ ๋ถ„๋ฅ˜ ์„ค๋ช…
๐Ÿ”ฅ ๋†’์Œ Firebase ์„ค์ • ํŒŒ์ผ ๋ณด์•ˆ ๋ณด์•ˆ google-services.json ๋ณด์•ˆ ๊ฒ€ํ†  ํ•„์š”
๐Ÿ”ฅ ๋†’์Œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๊ฒ€์ฆ ๋ฒ„๊ทธ API ํ‚ค ์กด์žฌ ์—ฌ๋ถ€ ํ™•์ธ ๋กœ์ง ์ถ”๊ฐ€
๐ŸŸก ์ค‘๊ฐ„ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์•ˆ์ •์„ฑ API ํ˜ธ์ถœ ๋ฐ ํŒŒ์ผ ์ฒ˜๋ฆฌ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ฐ•ํ™”
๐ŸŸก ์ค‘๊ฐ„ ํŒŒ์ผ ์ธ์ฝ”๋”ฉ ๋ฒ„๊ทธ UTF-8 ์ธ์ฝ”๋”ฉ ๋ช…์‹œ์  ์ง€์ •
๐ŸŸข ๋‚ฎ์Œ ์ฝ”๋“œ ์ •๋ฆฌ ํ’ˆ์งˆ ์ค‘๋ณต ์ œ๊ฑฐ ๋ฐ ์„ค์ • ์™ธ๋ถ€ํ™”

์ด PR์€ ์ž๋™ํ™”๋œ ์ฝ”๋“œ ๋ฆฌ๋ทฐ ์‹œ์Šคํ…œ๊ณผ Firebase ํ†ตํ•ฉ์„ ์ถ”๊ฐ€ํ•˜๋Š” ์˜๋ฏธ์žˆ๋Š” ๋ณ€๊ฒฝ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๋‹ค๋งŒ ๋ณด์•ˆ ๊ด€๋ จ ์ด์Šˆ๋“ค์„ ์šฐ์„  ํ•ด๊ฒฐํ•˜์‹œ๊ธฐ ๋ฐ”๋ž๋‹ˆ๋‹ค.

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.

[refactor] ์†Œ์…œ ๋กœ๊ทธ์ธ

3 participants