Skip to content

[feature] 동소한 팝업 추가 #1301

Merged
seongwon030 merged 4 commits intodevelop-fefrom
feature/#1300-festival-popup-MOA-728
Mar 3, 2026
Merged

[feature] 동소한 팝업 추가 #1301
seongwon030 merged 4 commits intodevelop-fefrom
feature/#1300-festival-popup-MOA-728

Conversation

@seongwon030
Copy link
Copy Markdown
Member

@seongwon030 seongwon030 commented Mar 3, 2026

#️⃣연관된 이슈

ex) #1300

📝작업 내용

동소한 팝업 추가

  • 앱다운로드 팝업에서 동소한 팝업으로 변경 (3월 5일까지만 유지하고 다시 롤백)
  • 팝업 클릭 시 동소한 페이지 이동 핸들러 추가
  • 팝업 클릭 이벤트 추가

중점적으로 리뷰받고 싶은 부분(선택)

리뷰어가 특별히 봐주었으면 하는 부분이 있다면 작성해주세요

ex) 메서드 XXX의 이름을 더 잘 짓고 싶은데 혹시 좋은 명칭이 있을까요?

논의하고 싶은 부분(선택)

논의하고 싶은 부분이 있다면 작성해주세요.

🫡 참고사항

Summary by CodeRabbit

  • 새로운 기능

    • 축제 팝업이 추가되었습니다. 팝업을 클릭하면 축제 소개 페이지로 이동합니다.
    • 축제 팝업 클릭 이벤트가 새로 수집됩니다 (사용자 이벤트 트래킹 추가).
  • 문서/개발환경

    • 팝업 컴포넌트의 스토리북이 모바일 뷰포트와 라우터 환경을 반영하도록 업데이트되었습니다.

@seongwon030 seongwon030 self-assigned this Mar 3, 2026
@seongwon030 seongwon030 added ✨ Feature 기능 개발 💻 FE Frontend labels Mar 3, 2026
@vercel
Copy link
Copy Markdown

vercel bot commented Mar 3, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
moadong Ready Ready Preview, Comment Mar 3, 2026 3:18pm

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Mar 3, 2026

Warning

.coderabbit.yaml has a parsing error

The CodeRabbit configuration file in this repository has a parsing error and default settings were used instead. Please fix the error(s) in the configuration file. You can initialize chat with CodeRabbit to get help with the configuration file.

💥 Parsing errors (1)
Validation error: Invalid regex pattern for base branch. Received: "**" at "reviews.auto_review.base_branches[0]"
⚙️ Configuration instructions
  • Please see the configuration documentation for more information.
  • You can also validate your configuration using the online YAML validator.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Walkthrough

팝업 클릭 이벤트 상수 추가와 팝업 컴포넌트의 이미지/클릭 핸들러를 변경해 축제 팝업 클릭을 추적하고 /festival-introduction로 네비게이션하도록 구현했습니다. Storybook 뷰포트 및 라우터 래핑도 추가되었습니다.

Changes

Cohort / File(s) Summary
Event Constants
frontend/src/constants/eventName.ts
USER_EVENTFESTIVAL_POPUP_CLICKED: 'Festival Popup Clicked' 추가
Popup Component
frontend/src/pages/MainPage/components/Popup/Popup.tsx
팝업 이미지(AppDownload → FestivalImage) 교체, handleFestival 추가로 클릭 시 FESTIVAL_POPUP_CLICKED 추적 및 /festival-introduction로 네비게이션 처리; useNavigate 및 FestivalImage import 추가
Popup Storybook
frontend/src/pages/MainPage/components/Popup/Popup.stories.tsx
Storybook에 INITIAL_VIEWPORTS/defaultViewport: 'iphone6' 추가하고 데코레이터에서 MemoryRouter로 래핑; 모바일 시뮬레이션용 window resize 로직 제거

Sequence Diagram(s)

sequenceDiagram
  participant User as 사용자
  participant Popup as Popup 컴포넌트
  participant Const as eventName 상수
  participant Analytics as Analytics 서비스
  participant Router as 라우터

  User->>Popup: 팝업 이미지 클릭
  Popup->>Const: FESTIVAL_POPUP_CLICKED 참조
  Popup->>Analytics: track(FESTIVAL_POPUP_CLICKED)
  Popup->>Router: navigate('/festival-introduction')
  Router-->>User: /festival-introduction 로 이동
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20분

Possibly related PRs

Suggested reviewers

  • lepitaaar
  • oesnuj
  • suhyun113
🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목 '[feature] 동소한 팝업 추가'는 앱다운로드 팝업을 동소한 팝업으로 변경하는 주요 변경사항을 명확하게 요약하고 있습니다.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
  • 📝 Generate docstrings (stacked PR)
  • 📝 Generate docstrings (commit on current branch)
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feature/#1300-festival-popup-MOA-728

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.

Copy link
Copy Markdown
Collaborator

@suhyun113 suhyun113 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

빠른 추가 좋아요~

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
frontend/src/pages/MainPage/components/Popup/Popup.tsx (1)

45-54: ⚠️ Potential issue | 🟠 Major

popupType 값이 일관되지 않아 분석 데이터가 부정확해집니다.

팝업이 동소한(festival) 팝업으로 변경되었지만, MAIN_POPUP_VIEWEDMAIN_POPUP_NOT_SHOWN 이벤트의 popupType이 여전히 'app_download'로 설정되어 있습니다. 이로 인해 분석 데이터가 실제 팝업 유형과 일치하지 않게 됩니다.

handleClose, handleDontShowAgain 함수 내의 popupType 값도 동일한 문제가 있습니다 (Lines 69-72, 78-81).

🔧 제안하는 수정 사항
    if (isMobile && !isHidden && imageLoaded) {
      setIsOpen(true);
      trackEvent(USER_EVENT.MAIN_POPUP_VIEWED, {
-       popupType: 'app_download',
+       popupType: 'festival',
      });
    } else {
      trackEvent(USER_EVENT.MAIN_POPUP_NOT_SHOWN, {
-       popupType: 'app_download',
+       popupType: 'festival',
      });
    }

handleClosehandleDontShowAgain 함수에도 동일하게 적용:

  const handleClose = (
    action: 'close_button' | 'backdrop_click' = 'close_button',
  ) => {
    trackEvent(USER_EVENT.MAIN_POPUP_CLOSED, {
-     popupType: 'app_download',
+     popupType: 'festival',
      action: action,
    });
    // ...
  };

  const handleDontShowAgain = () => {
    trackEvent(USER_EVENT.MAIN_POPUP_CLOSED, {
-     popupType: 'app_download',
+     popupType: 'festival',
      action: 'dont_show_again',
    });
    // ...
  };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/src/pages/MainPage/components/Popup/Popup.tsx` around lines 45 - 54,
The popupType string is hardcoded as 'app_download' causing analytics to
mislabel festival popups; update the popupType to the correct value (e.g.,
'festival') wherever events are fired: in the isMobile branch that fires
USER_EVENT.MAIN_POPUP_VIEWED and USER_EVENT.MAIN_POPUP_NOT_SHOWN, and inside the
handleClose and handleDontShowAgain functions so their trackEvent calls use the
same 'festival' popupType string, ensuring all USER_EVENT.* calls related to
this popup are consistent.
🧹 Nitpick comments (1)
frontend/src/pages/MainPage/components/Popup/Popup.tsx (1)

86-93: 롤백을 위해 미사용 코드가 유지되고 있음을 확인합니다.

handleDownload 함수와 관련 import들(AppDownloadImage, detectPlatform, getAppStoreLink)이 현재 사용되지 않지만, PR 목표에 따르면 3월 5일 이후 롤백 예정이므로 유지하는 것이 적절합니다.

롤백 시 원활한 복원을 위해 TODO 주석을 추가하는 것을 고려해 보세요.

💡 롤백 관련 주석 추가 제안
+ // TODO: 3월 5일 이후 handleFestival 제거하고 handleDownload로 롤백 예정
  const handleDownload = () => {
    const storeLink = getAppStoreLink();
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/src/pages/MainPage/components/Popup/Popup.tsx` around lines 86 - 93,
The unused popup download logic (handleDownload) and related imports
(AppDownloadImage, detectPlatform, getAppStoreLink) are intentionally retained
for an upcoming rollback; add a clear TODO comment near the handleDownload
function and the related imports indicating these are preserved for rollback
after 2026-03-05 (or the specified date), include owner/contact and a short
reason so future reviewers know to keep them until the rollback window passes,
and ensure the comment references the function name handleDownload and the
imports AppDownloadImage, detectPlatform, getAppStoreLink so they’re easy to
locate later.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@frontend/src/pages/MainPage/components/Popup/Popup.tsx`:
- Around line 45-54: The popupType string is hardcoded as 'app_download' causing
analytics to mislabel festival popups; update the popupType to the correct value
(e.g., 'festival') wherever events are fired: in the isMobile branch that fires
USER_EVENT.MAIN_POPUP_VIEWED and USER_EVENT.MAIN_POPUP_NOT_SHOWN, and inside the
handleClose and handleDontShowAgain functions so their trackEvent calls use the
same 'festival' popupType string, ensuring all USER_EVENT.* calls related to
this popup are consistent.

---

Nitpick comments:
In `@frontend/src/pages/MainPage/components/Popup/Popup.tsx`:
- Around line 86-93: The unused popup download logic (handleDownload) and
related imports (AppDownloadImage, detectPlatform, getAppStoreLink) are
intentionally retained for an upcoming rollback; add a clear TODO comment near
the handleDownload function and the related imports indicating these are
preserved for rollback after 2026-03-05 (or the specified date), include
owner/contact and a short reason so future reviewers know to keep them until the
rollback window passes, and ensure the comment references the function name
handleDownload and the imports AppDownloadImage, detectPlatform, getAppStoreLink
so they’re easy to locate later.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 8a29cf6 and 563ad18.

⛔ Files ignored due to path filters (1)
  • frontend/src/assets/images/popup/festival.png is excluded by !**/*.png
📒 Files selected for processing (2)
  • frontend/src/constants/eventName.ts
  • frontend/src/pages/MainPage/components/Popup/Popup.tsx

Copy link
Copy Markdown
Member

@oesnuj oesnuj left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

팝업 추가 좋습니다

Copy link
Copy Markdown
Contributor

@lepitaaar lepitaaar left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

3월 5일 이후는 수동으로 삭제하시나요?

@seongwon030
Copy link
Copy Markdown
Member Author

3월 5일 이후는 수동으로 삭제하시나요?

api가 아니기에 수동 삭제 할 것 같네요

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 3, 2026

🎨 UI 변경사항을 확인해주세요

변경된 스토리를 Chromatic에서 확인해주세요.

구분 링크
🔍 변경사항 리뷰 https://www.chromatic.com/build?appId=67904e61c16daa99a63b44a7&number=42
📖 Storybook https://67904e61c16daa99a63b44a7-gemtzopwzu.chromatic.com/

8개 스토리 변경 · 전체 58개 스토리 · 23개 컴포넌트

Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (1)
frontend/src/pages/MainPage/components/Popup/Popup.stories.tsx (1)

16-23: ⚠️ Potential issue | 🟡 Minor

스토리 문서 설명을 현재 팝업 목적에 맞게 갱신해주세요.

docs.description.component가 아직 “앱 다운로드 팝업”으로 되어 있어, 현재 동소한(축제) 팝업 동작과 문서가 불일치합니다.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@frontend/src/pages/MainPage/components/Popup/Popup.stories.tsx` around lines
16 - 23, Update the story description in Popup.stories.tsx by changing
docs.description.component from the outdated "앱 다운로드 팝업" text to a concise
description matching the current festival/동소한 popup behavior (e.g., mention it's
the 모바일 축제/동소한 팝업 shown on mobile); locate the docs.description.component entry
in the story config (near viewport/INITIAL_VIEWPORTS and defaultViewport:
'iphone6') and replace the string so the story docs accurately describe the
popup's current purpose.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Outside diff comments:
In `@frontend/src/pages/MainPage/components/Popup/Popup.stories.tsx`:
- Around line 16-23: Update the story description in Popup.stories.tsx by
changing docs.description.component from the outdated "앱 다운로드 팝업" text to a
concise description matching the current festival/동소한 popup behavior (e.g.,
mention it's the 모바일 축제/동소한 팝업 shown on mobile); locate the
docs.description.component entry in the story config (near
viewport/INITIAL_VIEWPORTS and defaultViewport: 'iphone6') and replace the
string so the story docs accurately describe the popup's current purpose.

ℹ️ Review info

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Disabled knowledge base sources:

  • Jira integration is disabled

You can enable these sources in your CodeRabbit configuration.

📥 Commits

Reviewing files that changed from the base of the PR and between 563ad18 and c105505.

📒 Files selected for processing (1)
  • frontend/src/pages/MainPage/components/Popup/Popup.stories.tsx

@seongwon030 seongwon030 merged commit 0fadba3 into develop-fe Mar 3, 2026
5 checks passed
@seongwon030 seongwon030 deleted the feature/#1300-festival-popup-MOA-728 branch March 3, 2026 15:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

💻 FE Frontend ✨ Feature 기능 개발

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants