[feature] 네이버 맵 클릭 이벤트 트래킹 및 누락 이벤트 전반 추가, /jira-task 대화형 커맨드 신규 생성#1563
Conversation
- CLUB_MAP_CLICKED 이벤트명 추가 - 지도 카드 및 프로필 카드 내 지도 버튼 두 진입점 트래킹 적용
- jira-task.sh: gh issue create로 GitHub 이슈 생성 → Actions가 Jira 하위 작업 + 브랜치 자동 생성 - /jira-story 스킬에 GitHub 이슈 연동 플로우 추가
- SearchBox: 하드코딩 문자열 → USER_EVENT.SEARCH_BOX_CLICKED 교체 - ClubCard: mixpanel.track() 직접 호출 → useMixpanelTrack 훅으로 통일 - ClubDetailTopBar, PromotionDetailTopBar: 뒤로가기 버튼 BACK_BUTTON_CLICKED 추가 - useHeaderNavigation: handleMenuOpen 추가 (MOBILE_MENU_BUTTON_CLICKED) - Header: 모바일 메뉴 열 때 handleMenuOpen 호출
- /check-tracking: 정의된 USER_EVENT와 실제 trackEvent 호출 현황 비교 - 트래킹 중인 이벤트 / 누락 의심 인터랙션 / 미사용 이벤트 표 형식 출력
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Caution Review failedPull request was closed or merged during review Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
Warning
|
| Layer / File(s) | Summary |
|---|---|
이벤트 상수 정의 및 트래킹 감사·문서 src/constants/eventName.ts, frontend/.claude/commands/check-tracking.md, frontend/docs/features/club-detail/map-event-tracking.md, frontend/.claude/commands/prd.md, frontend/.claude/commands/jira-story.md, frontend/.claude/commands/jira-task.md |
USER_EVENT에 CLUB_MAP_CLICKED 추가, 검색 이벤트 키 교체(SEARCH_EXCUTED), 이벤트 정의 vs 사용 비교를 위한 감사(bash) 절차 문서 및 동아리 지도 트래킹 문서와 PRD/명령 문서들 추가·수정. |
Jira 스토리/태스크 스크립트 frontend/scripts/jira-story.sh, frontend/scripts/jira-task.sh |
jira-story.sh의 EPIC/Sprint 자동 조회, jq 의존성 체크 및 payload 확장(assignee/epic/sprint) 적용. jira-task.sh는 GitHub CLI(gh) 기반 이슈 생성, 본문 템플릿 및 라벨 처리 로직을 추가. |
헤더 모바일 메뉴 트래킹 src/hooks/Header/useHeaderNavigation.ts, src/components/common/Header/Header.tsx |
useHeaderNavigation에 handleMenuOpen 추가 및 Header의 toggle 로직을 열림/닫힘에 따라 적절한 핸들러 호출로 변경해 모바일 메뉴 오픈을 트래킹합니다. |
클럽 상세 페이지 지도·TopBar 트래킹 src/pages/ClubDetailPage/ClubDetailPage.tsx, src/pages/ClubDetailPage/components/ClubDetailTopBar/ClubDetailTopBar.tsx |
지도 카드 및 프로필 카드의 지도 클릭 핸들러가 모달 오픈과 함께 trackEvent(USER_EVENT.CLUB_MAP_CLICKED)를 호출하도록 변경되었고, TopBar의 뒤로가기 클릭에서 USER_EVENT.BACK_BUTTON_CLICKED를 트래킹합니다. |
컴포넌트 트래킹 통일 및 확장 src/pages/MainPage/components/ClubCard/ClubCard.tsx, src/pages/MainPage/components/SearchBox/SearchBox.tsx, src/pages/PromotionPage/components/detail/PromotionDetailTopBar/PromotionDetailTopBar.tsx |
ClubCard의 직접 mixpanel 호출을 useMixpanelTrack로 교체하고, SearchBox와 PromotionDetailTopBar에서 USER_EVENT 상수를 사용하도록 트래킹 호출을 통일했습니다. |
Estimated code review effort
🎯 4 (Complex) | ⏱️ ~45 minutes
Possibly related issues
- [refactor] MOA-878 Jira 스토리 생성 스크립트 개선 (Windows 호환성, 자동 스프린트/담당자/에픽 지정) #1568: jira-story.sh의 jq/스프린트/에픽/assignee 처리 개선과 중복되는 변경이 있습니다.
- Moadong/moadong#1567: jira-story.sh의 자동 스프린트 조회 및 EPIC/assignee 처리 구현 목표와 직접 연관됩니다.
Possibly related PRs
- Moadong/moadong#856: USER_EVENT 상수 및 트래킹 통일 관련 연관 변경.
- Moadong/moadong#1440: ClubDetailPage의 지도 관련 흐름과 관련된 변경.
- Moadong/moadong#1546: jira-story/jira-task 스크립트 연관 변경.
Suggested labels
💻 FE, 🚁AI
Suggested reviewers
- oesnuj
- lepitaaar
- suhyun113
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
| Check name | Status | Explanation |
|---|---|---|
| Description Check | ✅ Passed | Check skipped - CodeRabbit’s high-level summary is enabled. |
| Title check | ✅ Passed | PR 제목이 변경사항의 주요 내용을 명확하고 구체적으로 요약하고 있습니다. 네이버 맵 클릭 이벤트 트래킹, 누락 이벤트 추가, jira-task 대화형 커맨드 생성이라는 세 가지 핵심 변경사항이 간결하게 표현되어 있습니다. |
| Docstring Coverage | ✅ Passed | Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. |
| Linked Issues check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
| Out of Scope Changes check | ✅ Passed | Check skipped because no linked issues were found for this pull request. |
✏️ Tip: You can configure your own custom pre-merge checks in the settings.
✨ Finishing Touches
📝 Generate docstrings
- Create stacked PR
- Commit on current branch
🧪 Generate unit tests (beta)
- Create PR with unit tests
- Commit unit tests in branch
feature/#1562-add-naver-map-event-tracking-MOA-868
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.
✅ UI 변경사항 없음
전체 57개 스토리 · 22개 컴포넌트 |
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Nitpick comments (1)
frontend/scripts/jira-task.sh (1)
68-68: 💤 Low value레이블이 하드코딩되어 있습니다.
모든 이슈에
"✨ Feature"레이블을 고정으로 부여하는데, 버그 수정이나 문서 작업 등에는 적합하지 않을 수 있습니다. 필요시 레이블을 인자로 받거나 이슈 타입에 따라 분기하는 것을 고려하세요.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/scripts/jira-task.sh` at line 68, 현재 jira-task.sh에 하드코딩된 --label "✨ Feature"를 제거하고 --label 값을 커맨드라인 인자 또는 이슈 타입에 따른 매핑으로 받아오도록 변경하세요; 구체적으로 jira-task.sh에서 현재 사용중인 --label "✨ Feature" 토큰을 대체할 새 옵션(--label|-l) 파싱 로직을 추가하거나 이슈 생성 코드가 참조하는 변수(issue_type 또는 issue_label)를 기준으로 레이블을 결정하는 분기문을 넣어 버그/문서/기타 타입에 맞는 레이블을 할당하도록 구현하세요.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@frontend/scripts/jira-task.sh`:
- Around line 65-69: The script builds ISSUE_URL using gh issue create but never
passes the ASSIGNEE to GitHub, so issues are not actually assigned; update the
gh issue create invocation (the command that sets ISSUE_URL) to include the
--assignee "$ASSIGNEE" flag (and guard it so you only add the flag when ASSIGNEE
is non-empty) so the ASSIGNEE variable results in a real GitHub assignment when
invoking gh issue create.
In `@frontend/src/components/common/Header/Header.tsx`:
- Around line 57-61: The state updater passed to setIsMenuOpen currently calls
handleMenuOpen/handleMenuClose (which run Mixpanel trackEvent) inside the
updater, risking duplicate tracking; change the updater to only compute and
return the next boolean (e.g., setIsMenuOpen(prev => !prev)), then after calling
setIsMenuOpen, call handleMenuOpen or handleMenuClose based on the resulting
value (or move the side effects into a useEffect that watches isMenuOpen) so
that handleMenuOpen and handleMenuClose are invoked outside the state updater
and side effects are not executed during React's internal multiple updater
calls.
In `@frontend/src/pages/MainPage/components/SearchBox/SearchBox.tsx`:
- Around line 25-28: The event name used in the search execution handler is
semantically wrong: inside handleSearch you call trackEvent with
USER_EVENT.SEARCH_BOX_CLICKED even though the function executes a search; change
the reported event to a search-executed name (e.g., USER_EVENT.SEARCH_EXECUTED
or the original 'Search Executed') so Mixpanel records searches rather than
clicks—update the call site in handleSearch where
trackEvent(USER_EVENT.SEARCH_BOX_CLICKED, { inputValue, page: pathname }) is
invoked, or alternatively rename the USER_EVENT constant to reflect execution
semantics and ensure any downstream consumers use the new key.
---
Nitpick comments:
In `@frontend/scripts/jira-task.sh`:
- Line 68: 현재 jira-task.sh에 하드코딩된 --label "✨ Feature"를 제거하고 --label 값을 커맨드라인 인자
또는 이슈 타입에 따른 매핑으로 받아오도록 변경하세요; 구체적으로 jira-task.sh에서 현재 사용중인 --label "✨ Feature"
토큰을 대체할 새 옵션(--label|-l) 파싱 로직을 추가하거나 이슈 생성 코드가 참조하는 변수(issue_type 또는
issue_label)를 기준으로 레이블을 결정하는 분기문을 넣어 버그/문서/기타 타입에 맞는 레이블을 할당하도록 구현하세요.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 40444733-82cc-4c8d-8974-8b15a67a5049
📒 Files selected for processing (12)
frontend/.claude/commands/check-tracking.mdfrontend/.claude/commands/jira-story.mdfrontend/docs/features/club-detail/map-event-tracking.mdfrontend/scripts/jira-task.shfrontend/src/components/common/Header/Header.tsxfrontend/src/constants/eventName.tsfrontend/src/hooks/Header/useHeaderNavigation.tsfrontend/src/pages/ClubDetailPage/ClubDetailPage.tsxfrontend/src/pages/ClubDetailPage/components/ClubDetailTopBar/ClubDetailTopBar.tsxfrontend/src/pages/MainPage/components/ClubCard/ClubCard.tsxfrontend/src/pages/MainPage/components/SearchBox/SearchBox.tsxfrontend/src/pages/PromotionPage/components/detail/PromotionDetailTopBar/PromotionDetailTopBar.tsx
- /prd: 기능 인터뷰 → 하위 작업 분해 → Jira 스토리 + GitHub 이슈 일괄 생성 - jira-story.sh + jira-task.sh를 연계해 스토리-하위작업 전체 플로우 자동화
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@frontend/.claude/commands/prd.md`:
- Around line 43-48: Two fenced code blocks in frontend/.claude/commands/prd.md
(the block starting around line 43 and the block around line 86) lack language
identifiers causing markdownlint MD040; update each opening triple-backtick to
include an appropriate language tag (e.g., ```markdown for the table block and
```text or ```none for plain text lists) so that the blocks are explicitly typed
and the linter warning is resolved.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 8a89c63d-125c-466e-9636-bf5533eedfc2
📒 Files selected for processing (1)
frontend/.claude/commands/prd.md
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@frontend/.claude/commands/jira-task.md`:
- Line 29: The fenced code block in the Markdown snippet (the triple-backtick
block containing the "📋 자동 생성 결과:" sample) is missing a language tag which
triggers MD040; update the opening delimiter from ``` to ```text so the block is
explicitly marked as text (i.e., change the three backticks that begin that code
fence to ```text).
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 59cfc949-c180-4c69-b2c8-c86bc201717c
📒 Files selected for processing (2)
frontend/.claude/commands/jira-task.mdfrontend/scripts/jira-task.sh
🚧 Files skipped from review as they are similar to previous changes (1)
- frontend/scripts/jira-task.sh
…t-improve-MOA-878 Jira 스토리 생성 스크립트 개선 (Windows 호환성, 자동 스프린트/담당자/에픽 지정)
There was a problem hiding this comment.
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
frontend/scripts/jira-story.sh (1)
105-141:⚠️ Potential issue | 🟡 Minor | ⚡ Quick win임시 파일 정리를 위한
trap누락
set -e모드에서 Line 105와 131 사이에 오류가 발생하면 스크립트가 즉시 종료되어 임시 파일이 정리되지 않습니다.🛠️ 제안: trap을 사용한 자동 정리
# payload를 파일로 저장 (Windows 셸 호환) PAYLOAD_FILE=$(mktemp) +TMPFILE=$(mktemp) +trap 'rm -f "$PAYLOAD_FILE" "$TMPFILE" 2>/dev/null' EXIT + jq -n \ --arg summary "$SUMMARY" \그리고 Line 131의
TMPFILE=$(mktemp)는 제거합니다.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@frontend/scripts/jira-story.sh` around lines 105 - 141, Add a trap that removes the temporary files on EXIT/ERR so PAYLOAD_FILE and TMPFILE are always cleaned up if the script dies under set -e; create both temp files up front (using mktemp for PAYLOAD_FILE and TMPFILE), register a trap like trap 'rm -f "$PAYLOAD_FILE" "$TMPFILE"' EXIT, then proceed to build the payload and call curl, and remove the now-redundant second TMPFILE=$(mktemp) line (ensure the variables used by the curl -o and the final BODY=$(cat "$TMPFILE") refer to the mktemp-created TMPFILE).
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Outside diff comments:
In `@frontend/scripts/jira-story.sh`:
- Around line 105-141: Add a trap that removes the temporary files on EXIT/ERR
so PAYLOAD_FILE and TMPFILE are always cleaned up if the script dies under set
-e; create both temp files up front (using mktemp for PAYLOAD_FILE and TMPFILE),
register a trap like trap 'rm -f "$PAYLOAD_FILE" "$TMPFILE"' EXIT, then proceed
to build the payload and call curl, and remove the now-redundant second
TMPFILE=$(mktemp) line (ensure the variables used by the curl -o and the final
BODY=$(cat "$TMPFILE") refer to the mktemp-created TMPFILE).
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 54366a0d-97dd-4db3-bb85-5d00aebff2c7
📒 Files selected for processing (3)
frontend/.claude/commands/jira-task.mdfrontend/scripts/jira-story.shfrontend/scripts/jira-task.sh
✅ Files skipped from review due to trivial changes (1)
- frontend/.claude/commands/jira-task.md
🚧 Files skipped from review as they are similar to previous changes (1)
- frontend/scripts/jira-task.sh
- Header toggleMenu: handleMenuOpen/Close 호출을 setState 외부로 이동 (React Strict Mode에서 updater 중복 실행 시 이벤트 중복 발생 방지) - SEARCH_BOX_CLICKED → SEARCH_EXCUTED 이벤트명 수정
#️⃣ 연관된 이슈
#1562
📝작업 내용
Summary
1) 네이버 맵 클릭 이벤트 트래킹 및 누락 이벤트 추가 (기존)
Club Map ClickedMixpanel 이벤트 추가/check-tracking커맨드로 전체 이벤트 누락 감사 후 발견된 항목 일괄 수정SearchBox: 하드코딩 문자열 →USER_EVENT.SEARCH_BOX_CLICKEDClubCard:mixpanel.track()직접 호출 →useMixpanelTrack훅으로 통일ClubDetailTopBar,PromotionDetailTopBar: 뒤로가기 버튼BACK_BUTTON_CLICKED추가Header+useHeaderNavigation: 모바일 메뉴 열기MOBILE_MENU_BUTTON_CLICKED추가scripts/jira-task.sh: Jira 스토리 하위 작업 + 브랜치를 GitHub Actions으로 자동 생성하는 스크립트 추가.claude/commands/check-tracking.md: 이벤트 트래킹 감사 Claude 커맨드 추가2) /jira-task 대화형 커맨드 신규 생성 (추가)
Test plan
Club Map Clicked이벤트 확인Club Map Clicked이벤트 확인SearchBox Clicked이벤트 확인ClubCard Clicked이벤트 확인 (훅 방식으로 동작)Back Button Clicked이벤트 확인Mobile Menu Button Clicked이벤트 확인npm run typecheck통과 확인Summary by CodeRabbit