Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning
|
| Cohort / File(s) | Summary |
|---|---|
Event Constants Definitionfrontend/src/constants/eventName.ts |
EVENT_NAME → USER_EVENT로 명칭 변경 및 키 재구성, 페이지 식별자용 PAGE_VIEW 상수 추가(APPLICATION_FORM_PAGE, CLUB_DETAIL_PAGE, MAIN_PAGE, INTRODUCE_PAGE, CLUB_UNION_PAGE) |
Header & Header Hooksfrontend/src/components/common/Header/Header.tsx, frontend/src/hooks/Header/useHeaderNavigation.ts |
EVENT_NAME 임포트→USER_EVENT로 변경; 헤더 관련 버튼(홈/도입/클럽연합/패치노트/모바일메뉴 등) 이벤트 트래킹 키 참조 업데이트 |
Photo Navigation Hookfrontend/src/hooks/PhotoList/usePhotoNavigation.ts |
EVENT_NAME → USER_EVENT 교체; PHOTO_NAVIGATION_CLICKED 트래킹 호출 업데이트 |
Application & Page Viewsfrontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx, frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx, frontend/src/pages/ClubUnionPage/ClubUnionPage.tsx, frontend/src/pages/IntroducePage/IntroducePage.tsx, frontend/src/pages/MainPage/MainPage.tsx |
하드코딩 페이지명 → PAGE_VIEW.* 상수로 대체; ApplicationFormPage 제출 이벤트에서 이벤트 네임 및 페이로드 필드(club_id, club_name)로 변경 |
Club Detail Componentsfrontend/src/pages/ClubDetailPage/components/...ClubApplyButton/ClubApplyButton.tsx, ClubCard/ClubCard.tsx, InfoTabs/InfoTabs.tsx, ShareButton/ShareButton.tsx, SnsLinkIcons/SnsLinkIcons.tsx |
EVENT_NAME → USER_EVENT로 변경; 관련 이벤트 키(CLU B_APPLY_BUTTON_CLICKED, RECOMMENDED_CLUB_CLICKED, TAB_CLICKED, SHARE_BUTTON_CLICKED, SNS_LINK_CLICKED 등)로 트래킹 호출 업데이트; 불필요한 mixpanel import 제거(일부 파일) |
Main Page Componentsfrontend/src/pages/MainPage/components/...CategoryButtonList/CategoryButtonList.tsx, ClubCard/ClubCard.tsx, StatusRadioButton/StatusRadioButton.tsx |
이벤트 상수 소스 변경(EVENT_NAME → USER_EVENT), 하드코딩 이벤트명 → USER_EVENT.* 상수로 대체 |
Sequence Diagram(s)
(변경 내용이 상수명·트래킹 호출 일괄 교체와 페이지 뷰 상수 도입에 국한되어 제어 흐름 변경이 크지 않으므로 시퀀스 다이어그램은 생략합니다.)
Estimated code review effort
🎯 3 (Moderate) | ⏱️ ~20 minutes
- 이유: 동일한 리팩토링 패턴이 여러 파일에 반복 적용되었으나, 파일 수와 페이로드 변경(ApplicationFormPage) 때문에 검토 포인트가 몇 곳 존재함.
- 추가 검토 포인트:
frontend/src/constants/eventName.ts의 USER_EVENT 및 PAGE_VIEW 키 명세가 실제 사용처와 정확히 일치하는지 확인ApplicationFormPage.tsx의 제출 이벤트 페이로드 변경(club_id, club_name)과 백엔드/analytics 수집 스키마 호환성 검증- 불필요해진 mixpanel 직접 임포트 제거로 영향받는 파일(예:
ClubCard.tsx) 검증
Possibly related issues
- MOA-358: 믹스패널 이벤트 이름을 통일한다 — 본 PR은 이벤트명 통일 및 PAGE_VIEW 도입 목표와 직접적으로 연관됩니다.
- [refactor] MOA-358 믹스패널 이벤트 이름을 통일한다 #853: 이벤트명 리팩터링 관련 — EVENT_NAME→USER_EVENT 및 상수 중앙화 목표를 구현합니다.
Possibly related PRs
- PR
#676— 동일 모듈(eventName) 및 이벤트명 사용 영역을 변경한 PR로 코드 레벨 연관성 높음. - PR
#641— 기존EVENT_NAME도입 및 하드코딩 대체 작업을 수행한 PR로 직접적 연관. - PR
#746— ApplicationFormPage의 이벤트 정의·페이로드를 수정한 PR로 ApplicationForm 관련 변경과 연관.
Suggested reviewers
- lepitaaar
- Zepelown
- oesnuj
Pre-merge checks and finishing touches
✅ Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | PR 제목은 주요 변경 사항을 명확하게 요약하고 있습니다. 믹스패널 이벤트 이름 통일이라는 핵심 목표를 잘 나타냅니다. |
| Linked Issues check | ✅ Passed | PR의 모든 코드 변경 사항이 연결된 이슈 MOA-358의 목표인 '이벤트 이름 규칙 정하고 통일'을 충족하고 있습니다. |
| Out of Scope Changes check | ✅ Passed | 모든 변경 사항이 믹스패널 이벤트 이름 통일이라는 정의된 범위 내에 있으며, 범위를 벗어난 변경 사항이 없습니다. |
| Docstring Coverage | ✅ Passed | No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. |
✨ 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
refactor/#853-unify-mixpanel-event-name-MOA-358
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.
Comment @coderabbitai help to get the list of available commands and usage tips.
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (18)
frontend/src/components/common/Header/Header.tsx(2 hunks)frontend/src/constants/eventName.ts(1 hunks)frontend/src/hooks/Header/useHeaderNavigation.ts(3 hunks)frontend/src/hooks/PhotoList/usePhotoNavigation.ts(3 hunks)frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx(3 hunks)frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx(2 hunks)frontend/src/pages/ClubDetailPage/components/BackNavigationBar/BackNavigationBar.tsx(1 hunks)frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx(2 hunks)frontend/src/pages/ClubDetailPage/components/ClubCard/ClubCard.tsx(2 hunks)frontend/src/pages/ClubDetailPage/components/InfoTabs/InfoTabs.tsx(2 hunks)frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx(2 hunks)frontend/src/pages/ClubDetailPage/components/SnsLinkIcons/SnsLinkIcons.tsx(2 hunks)frontend/src/pages/ClubUnionPage/ClubUnionPage.tsx(1 hunks)frontend/src/pages/IntroducePage/IntroducePage.tsx(1 hunks)frontend/src/pages/MainPage/MainPage.tsx(1 hunks)frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.tsx(2 hunks)frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx(1 hunks)frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.tsx(2 hunks)
🧰 Additional context used
🧠 Learnings (3)
📚 Learning: 2025-03-19T05:18:07.818Z
Learnt from: seongwon030
Repo: Moadong/moadong PR: 195
File: frontend/src/pages/AdminPage/AdminPage.tsx:7-7
Timestamp: 2025-03-19T05:18:07.818Z
Learning: AdminPage.tsx에서 현재 하드코딩된 클럽 ID('67d2e3b9b15c136c6acbf20b')는 로그인 기능 구현 후 동적으로 가져오는 방식으로 수정될 예정입니다.
Applied to files:
frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsxfrontend/src/pages/ClubDetailPage/components/ClubCard/ClubCard.tsxfrontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsxfrontend/src/pages/ClubDetailPage/ClubDetailPage.tsxfrontend/src/pages/MainPage/components/ClubCard/ClubCard.tsxfrontend/src/pages/ClubUnionPage/ClubUnionPage.tsxfrontend/src/pages/MainPage/MainPage.tsx
📚 Learning: 2025-09-21T02:23:27.796Z
Learnt from: seongwon030
Repo: Moadong/moadong PR: 744
File: frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx:47-48
Timestamp: 2025-09-21T02:23:27.796Z
Learning: ClubApplyButton 컴포넌트에서 ShareButton은 항상 렌더링되어야 하므로 정적 import를 사용하는 것이 적절함. 동적 import는 불필요함.
Applied to files:
frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx
📚 Learning: 2025-07-19T05:05:10.196Z
Learnt from: seongwon030
Repo: Moadong/moadong PR: 548
File: frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx:17-57
Timestamp: 2025-07-19T05:05:10.196Z
Learning: ClubDetailPage.tsx에서 notJoinedClubNames 배열의 하드코딩은 의도적인 설계 결정입니다. 개발자가 명시적으로 하드코딩을 선택했으므로 이에 대한 리팩토링 제안을 하지 않아야 합니다.
Applied to files:
frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx
🧬 Code graph analysis (17)
frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ClubDetailPage/components/ClubCard/ClubCard.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/hooks/PhotoList/usePhotoNavigation.ts (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ClubDetailPage/components/InfoTabs/InfoTabs.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx (1)
frontend/src/constants/eventName.ts (2)
PAGE_VIEW(33-39)USER_EVENT(1-31)
frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ClubDetailPage/components/BackNavigationBar/BackNavigationBar.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx (1)
frontend/src/constants/eventName.ts (1)
PAGE_VIEW(33-39)
frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx (2)
frontend/src/types/club.ts (1)
Club(3-12)frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ClubUnionPage/ClubUnionPage.tsx (1)
frontend/src/constants/eventName.ts (1)
PAGE_VIEW(33-39)
frontend/src/pages/IntroducePage/IntroducePage.tsx (1)
frontend/src/constants/eventName.ts (1)
PAGE_VIEW(33-39)
frontend/src/pages/MainPage/MainPage.tsx (1)
frontend/src/constants/eventName.ts (1)
PAGE_VIEW(33-39)
frontend/src/hooks/Header/useHeaderNavigation.ts (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/components/common/Header/Header.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
frontend/src/pages/ClubDetailPage/components/SnsLinkIcons/SnsLinkIcons.tsx (1)
frontend/src/constants/eventName.ts (1)
USER_EVENT(1-31)
🔇 Additional comments (19)
frontend/src/pages/ClubDetailPage/components/ClubCard/ClubCard.tsx (1)
10-10: 이벤트 상수 리팩토링이 올바르게 적용되었습니다.
EVENT_NAME에서USER_EVENT로의 변경이 정확하게 반영되었으며, 이벤트 추적 로직은 동일하게 유지됩니다.Also applies to: 20-20
frontend/src/pages/ClubDetailPage/components/SnsLinkIcons/SnsLinkIcons.tsx (1)
6-6: 이벤트 네임스페이스 변경이 정확하게 적용되었습니다.
USER_EVENT.SNS_LINK_CLICKED로의 업데이트가 올바르게 반영되어 있으며, 추적 페이로드(platform, clubName)는 변경 없이 유지됩니다.Also applies to: 30-30
frontend/src/constants/eventName.ts (1)
33-39: PAGE_VIEW 분리가 잘 구조화되었습니다.페이지 추적 이벤트를
USER_EVENT와 별도의PAGE_VIEW객체로 분리한 것은 좋은 설계입니다. 이벤트 유형을 명확하게 구분하여 유지보수성을 향상시킵니다.frontend/src/pages/ClubDetailPage/components/InfoTabs/InfoTabs.tsx (1)
4-4: 탭 클릭 이벤트 추적이 올바르게 업데이트되었습니다.
USER_EVENT.TAB_CLICKED로의 변경이 정확하게 적용되었으며, 이벤트 페이로드(tabName, tabIndex)는 유지됩니다.Also applies to: 17-17
frontend/src/pages/MainPage/components/StatusRadioButton/StatusRadioButton.tsx (1)
4-4: 상태 라디오 버튼 이벤트가 정확하게 업데이트되었습니다.
USER_EVENT네임스페이스로의 마이그레이션이 올바르게 적용되었으며, 상태 추적 로직(OPEN/ALL)은 변경 없이 유지됩니다.Also applies to: 19-19
frontend/src/pages/MainPage/components/CategoryButtonList/CategoryButtonList.tsx (1)
6-6: 카테고리 버튼 이벤트 추적이 일관되게 리팩토링되었습니다.
USER_EVENT.CATEGORY_BUTTON_CLICKED로의 업데이트가 정확하며, 카테고리 정보를 포함한 이벤트 페이로드는 그대로 유지됩니다.Also applies to: 29-29
frontend/src/pages/ClubDetailPage/components/ClubApplyButton/ClubApplyButton.tsx (1)
6-6: 동아리 지원 버튼 이벤트가 올바르게 업데이트되었습니다.
USER_EVENT.CLUB_APPLY_BUTTON_CLICKED로의 변경이 정확하게 반영되었으며, 지원 버튼 클릭 추적 로직은 동일하게 유지됩니다.Also applies to: 54-54
frontend/src/pages/ClubDetailPage/components/ShareButton/ShareButton.tsx (1)
5-5: 공유 버튼 이벤트가 정확하게 업데이트되었습니다.
USER_EVENT.SHARE_BUTTON_CLICKED로의 변경이 올바르게 적용되었으며, 카카오톡 공유 기능과 이벤트 추적이 정상적으로 동작합니다.Also applies to: 48-48
frontend/src/pages/ClubUnionPage/ClubUnionPage.tsx (1)
8-11: 변경 사항이 올바릅니다.페이지 뷰 추적을 중앙화된
PAGE_VIEW.CLUB_UNION_PAGE상수로 변경하여 이벤트 이름 관리가 일관되게 개선되었습니다.frontend/src/pages/IntroducePage/IntroducePage.tsx (1)
12-16: 페이지 뷰 추적 추가가 적절합니다.중앙화된
PAGE_VIEW.INTRODUCE_PAGE상수를 사용하여 페이지 뷰 추적을 추가했습니다. 다른 페이지들과 일관된 패턴입니다.frontend/src/hooks/PhotoList/usePhotoNavigation.ts (1)
3-3: 이벤트 상수 업데이트가 올바릅니다.
EVENT_NAME에서USER_EVENT로의 마이그레이션이 일관되게 적용되었습니다. 이벤트 추적 로직은 변경되지 않았습니다.Also applies to: 38-41, 47-50
frontend/src/pages/ApplicationFormPage/ApplicationFormPage.tsx (2)
18-18: 페이지 뷰 추적 상수화가 적절합니다.중앙화된
PAGE_VIEW.APPLICATION_FORM_PAGE상수를 사용하도록 변경되었습니다.Also applies to: 38-40
92-95: Mixpanel 대시보드에서clubName속성 사용 여부 확인 필수이 이벤트 추적 페이로드 변경은
ApplicationFormPage.tsx라인 92-95에만 영향을 미칩니다. 코드베이스에서APPLICATION_FORM_SUBMITTED이벤트는 이 위치에서만 호출되므로 다른 코드 영역에는 영향을 주지 않습니다.다만, 기존 Mixpanel 대시보드나 쿼리에서
clubName속성을 사용하고 있다면 분석 데이터 수집이 중단될 수 있으므로 다음을 확인하세요:
- Mixpanel 대시보드에서 이 이벤트의
clubName속성을 사용하는 쿼리/차트 존재 여부- 필요시 대시보드를
club_name으로 업데이트하거나 마이그레이션 계획 수립frontend/src/pages/MainPage/MainPage.tsx (1)
16-19: 페이지 뷰 추적 상수화가 올바릅니다.하드코딩된 문자열을 중앙화된
PAGE_VIEW.MAIN_PAGE상수로 교체하여 일관성이 향상되었습니다.frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx (1)
17-17: 페이지 뷰 추적 상수화가 적절합니다.중앙화된
PAGE_VIEW.CLUB_DETAIL_PAGE상수를 사용하도록 변경되었습니다. 클럽 이름을 두 번째 파라미터로 전달하는 기존 로직도 유지되었습니다.Also applies to: 35-35
frontend/src/components/common/Header/Header.tsx (1)
6-6: 이벤트 상수 마이그레이션이 올바릅니다.
EVENT_NAME에서USER_EVENT로의 변경이 일관되게 적용되었습니다.Also applies to: 40-40
frontend/src/pages/MainPage/components/ClubCard/ClubCard.tsx (1)
10-10: 이벤트 이름 상수화가 적절합니다.하드코딩된 이벤트 이름 문자열을
USER_EVENT.CLUB_CARD_CLICKED상수로 교체하여 관리가 개선되었습니다.Also applies to: 18-22
frontend/src/pages/ClubDetailPage/components/BackNavigationBar/BackNavigationBar.tsx (1)
5-12: LGTM! 일관된 리팩토링입니다.
EVENT_NAME에서USER_EVENT로의 변경이 import와 사용처 모두에서 올바르게 적용되었습니다. 이벤트 이름 문자열은 그대로 유지되어 기존 Mixpanel 추적 데이터와의 호환성도 보장됩니다.frontend/src/hooks/Header/useHeaderNavigation.ts (1)
5-36: LGTM! 모든 이벤트 추적이 일관되게 업데이트되었습니다.헤더 네비게이션 훅의 모든 이벤트 추적 호출(HOME_BUTTON_CLICKED, INTRODUCE_BUTTON_CLICKED, CLUB_UNION_BUTTON_CLICKED, PATCH_NOTE_BUTTON_CLICKED)이
USER_EVENT로 올바르게 변경되었습니다. 리팩토링이 완전하고 일관되게 적용되었습니다.
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
frontend/src/constants/eventName.ts (1)
15-15: 클릭 이벤트의 네이밍 패턴 일관성을 유지하세요.다른 클릭 이벤트들은 "Clicked" 접미사를 포함하고 있으나, 이 이벤트는 누락되어 있습니다.
다음과 같이 수정하여 일관성을 유지하세요:
- PHOTO_NAVIGATION_CLICKED: 'Photo Navigation' as const, + PHOTO_NAVIGATION_CLICKED: 'Photo Navigation Clicked' as const,
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (1)
frontend/src/constants/eventName.ts(1 hunks)
🧰 Additional context used
🧠 Learnings (2)
📚 Learning: 2025-08-24T17:33:23.092Z
Learnt from: suhyun113
Repo: Moadong/moadong PR: 698
File: frontend/src/hooks/queries/applicants/useDeleteApplicants.ts:10-16
Timestamp: 2025-08-24T17:33:23.092Z
Learning: The codebase has inconsistent console logging patterns across files - mixing console.log/console.error for errors, using both Korean and English messages, and various formatting styles (template literals vs separate arguments, with/without emojis). A unified logging format like `console.error('[ModuleName] Operation failed:', error)` should be established for better debugging consistency.
Applied to files:
frontend/src/constants/eventName.ts
📚 Learning: 2025-07-19T05:05:10.196Z
Learnt from: seongwon030
Repo: Moadong/moadong PR: 548
File: frontend/src/pages/ClubDetailPage/ClubDetailPage.tsx:17-57
Timestamp: 2025-07-19T05:05:10.196Z
Learning: ClubDetailPage.tsx에서 notJoinedClubNames 배열의 하드코딩은 의도적인 설계 결정입니다. 개발자가 명시적으로 하드코딩을 선택했으므로 이에 대한 리팩토링 제안을 하지 않아야 합니다.
Applied to files:
frontend/src/constants/eventName.ts
🔇 Additional comments (3)
frontend/src/constants/eventName.ts (3)
1-3: EVENT_NAME에서 USER_EVENT로의 리네이밍이 적절합니다.사용자 상호작용 이벤트와 페이지 뷰를 명확히 구분하여 이벤트 추적의 의도를 더 명확하게 전달합니다.
23-25: 이전 리뷰에서 지적된 언어 혼용 문제가 해결되었습니다.공유 버튼 이벤트명이 모두 영어로 통일되어 일관성이 확보되었습니다.
33-39: PAGE_VIEW 상수 분리가 명확한 관심사 분리를 제공합니다.페이지 트래킹 이벤트를 사용자 상호작용 이벤트와 분리하여 코드의 의도를 명확히 하고 유지보수성을 향상시켰습니다. 모든 페이지 식별자가 일관된 네이밍 패턴을 따릅니다.
lepitaaar
left a comment
There was a problem hiding this comment.
이벤트 정리 하신거 좋네요. 이벤트이름 한글로 설정할 수있다 하셨는데 어디서할수있나요?
https://mixpanel.com/project/3611536/view/4111120/app/lexicon/transformations/events 여기 렉시콘에서 각 이벤트의 display name을 설정할 수 있어요. 겸사겸사 Description도 추가했습니다. |
#️⃣연관된 이슈
📝작업 내용
중점적으로 리뷰받고 싶은 부분(선택)
논의하고 싶은 부분(선택)
🫡 참고사항
Summary by CodeRabbit