Skip to content

feat: analytics 개선 및 네이버 서치 어드바이저 등록#88

Merged
youngminss merged 4 commits intodevelopfrom
feature/add-group-id-to-analytics
Feb 16, 2026
Merged

feat: analytics 개선 및 네이버 서치 어드바이저 등록#88
youngminss merged 4 commits intodevelopfrom
feature/add-group-id-to-analytics

Conversation

@youngminss
Copy link
Member

@youngminss youngminss commented Feb 13, 2026

🎯 PR 제목

feat: analytics 개선 및 네이버 서치 어드바이저 등록

📑 작업 상세 내역

Analytics 개선

  • 의견수합 완료 페이지 (CompleteViewContainer.tsx)

    • view_page 이벤트에 group_id (accessKey) 파라미터를 추가합니다
    • useEffect 의존성 배열에 accessKey를 추가합니다
  • 의견수합 대기 페이지 (PendingViewContainer.tsx)

    • view_page 이벤트에 group_id (accessKey) 파라미터를 추가합니다
    • useEffect 의존성 배열에 accessKey를 추가합니다

SEO - 네이버 서치 어드바이저 등록

  • 루트 레이아웃 (app/layout.tsx)
    • 네이버 서치 어드바이저 사이트 소유 확인을 위한 verification 메타 태그를 추가합니다
    • Next.js Metadata API의 verification 필드를 활용합니다

🙏 리뷰 요청 사항

별도로 리뷰 드릴 사항은 없습니다.

📃 참고 자료

  • GA4 탐색 보고서에서 그룹(모임)별 분석이 가능하도록 개선하는 작업입니다
  • 기존에 group_id가 누락되어 있던 페이지들에 파라미터를 추가했습니다
  • 네이버 서치 어드바이저 등록을 통해 네이버 검색 노출을 개선합니다

- 의견수합 완료, 대기 페이지에 group_id (accessKey) 추가
- GA4에서 그룹별 분석이 가능하도록 개선

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@github-actions github-actions bot requested a review from RookieAND February 13, 2026 15:21
@github-actions github-actions bot added the ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 label Feb 13, 2026
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @youngminss, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

이 PR은 Google Analytics 4 (GA4)의 데이터 수집을 강화하여 그룹별 사용자 행동 분석을 더욱 정교하게 수행할 수 있도록 합니다. 기존에 group_id 파라미터가 누락되었던 특정 페이지들의 view_page 이벤트에 해당 파라미터를 추가함으로써, GA4 탐색 보고서에서 모임 단위의 심층적인 분석이 가능해집니다. 이는 사용자 경험 개선 및 서비스 최적화에 필요한 데이터를 확보하는 데 기여할 것입니다.

Highlights

  • GA4 이벤트 추적 개선: GA4 탐색 보고서에서 그룹(모임)별 분석을 개선하기 위해 view_page 이벤트에 group_id (accessKey) 파라미터가 추가되었습니다.
  • useEffect 의존성 업데이트: useEffect 훅의 의존성 배열에 accessKey가 추가되어 데이터 추적의 정확성과 안정성이 향상되었습니다.
  • 적용 페이지: 의견수합 완료 페이지 (CompleteViewContainer.tsx) 및 의견수합 대기 페이지 (PendingViewContainer.tsx)에 변경 사항이 적용되었습니다.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • app/gathering/[accessKey]/opinion/complete/CompleteViewContainer.tsx
    • trackViewPage 함수 호출 시 group_id: accessKey 파라미터가 추가되었습니다.
    • useEffect 의존성 배열에 accessKey가 추가되었습니다.
    • if 조건문에 accessKey 존재 여부 확인 로직이 추가되었습니다.
  • app/gathering/[accessKey]/opinion/pending/PendingViewContainer.tsx
    • trackViewPage 함수 호출 시 group_id: accessKey 파라미터가 추가되었습니다.
    • useEffect 의존성 배열에 accessKey가 추가되었습니다.
    • if 조건문에 accessKey 존재 여부 확인 로직이 추가되었습니다.
  • src/pageComponents/landing/LandingPage.tsx
    • trackViewPage 함수 호출의 가독성을 위해 포맷팅이 변경되었습니다. (기능 변경 없음)
Activity
  • 작성자가 PR을 생성하고 변경 사항에 대한 상세 내역을 제공했습니다.
  • 작성자는 별도로 리뷰 요청 사항이 없다고 언급했습니다.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@youngminss youngminss changed the title feat(analytics): view_page 이벤트에 group_id 파라미터 추가 feat: view_page 이벤트에 group_id 파라미터 추가 Feb 13, 2026
@github-actions github-actions bot added ✨ Feature 기능 개발 and removed ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 labels Feb 13, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

두 컨테이너 컴포넌트의 useEffect 훅에서 redirect 로직으로 인해 불필요한 조건 확인이 있습니다. 코드를 간소화하기 위해 관련 의견을 남겼습니다.

Comment on lines +33 to +43
useEffect(() => {
if (!isPending && capacity) {
if (!isPending && capacity && accessKey) {
trackViewPage({
page_id: PAGE_ID,
group_id: accessKey,
submit_progress: Math.round(
(capacity.currentCount / capacity.maxCount) * 100,
),
});
}
}, [capacity, isPending]);
}, [capacity, isPending, accessKey]);
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

isPendingtrue일 경우 컴포넌트 상단에서 redirect가 발생하므로, useEffect가 실행되는 시점에는 항상 isPendingfalse입니다. 따라서 useEffect 내부의 !isPending 조건과 의존성 배열의 isPending은 제거하여 코드를 간소화할 수 있습니다.

Suggested change
useEffect(() => {
if (!isPending && capacity) {
if (!isPending && capacity && accessKey) {
trackViewPage({
page_id: PAGE_ID,
group_id: accessKey,
submit_progress: Math.round(
(capacity.currentCount / capacity.maxCount) * 100,
),
});
}
}, [capacity, isPending]);
}, [capacity, isPending, accessKey]);
useEffect(() => {
if (capacity && accessKey) {
trackViewPage({
page_id: PAGE_ID,
group_id: accessKey,
submit_progress: Math.round(
(capacity.currentCount / capacity.maxCount) * 100,
),
});
}
}, [capacity, accessKey]);

Comment on lines +40 to +52
useEffect(() => {
if (!isComplete && capacity) {
if (!isComplete && capacity && accessKey) {
const progress = Math.round(
(capacity.currentCount / capacity.maxCount) * 100,
);

trackViewPage({
page_id: PAGE_ID,
group_id: accessKey,
submit_progress: progress,
});
}
}, [capacity, isComplete]);
}, [capacity, isComplete, accessKey]);
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

isCompletetrue일 경우 컴포넌트 상단에서 redirect가 발생하므로, useEffect가 실행되는 시점에는 항상 isCompletefalse입니다. 따라서 useEffect 내부의 !isComplete 조건과 의존성 배열의 isComplete는 제거하여 코드를 간소화할 수 있습니다.

Suggested change
useEffect(() => {
if (!isComplete && capacity) {
if (!isComplete && capacity && accessKey) {
const progress = Math.round(
(capacity.currentCount / capacity.maxCount) * 100,
);
trackViewPage({
page_id: PAGE_ID,
group_id: accessKey,
submit_progress: progress,
});
}
}, [capacity, isComplete]);
}, [capacity, isComplete, accessKey]);
useEffect(() => {
if (capacity && accessKey) {
const progress = Math.round(
(capacity.currentCount / capacity.maxCount) * 100,
);
trackViewPage({
page_id: PAGE_ID,
group_id: accessKey,
submit_progress: progress,
});
}
}, [capacity, accessKey]);

@youngminss youngminss added the 📤 In Progress 현재 작업 중인 PR 입니다. label Feb 13, 2026
@youngminss youngminss self-assigned this Feb 13, 2026
@youngminss youngminss changed the title feat: view_page 이벤트에 group_id 파라미터 추가 feat: analytics 개선 및 네이버 서치 어드바이저 등록 Feb 16, 2026
@github-actions github-actions bot added ✨ Feature 기능 개발 and removed 📤 In Progress 현재 작업 중인 PR 입니다. ✨ Feature 기능 개발 labels Feb 16, 2026
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@youngminss youngminss added 📤 In Progress 현재 작업 중인 PR 입니다. ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다 and removed 📤 In Progress 현재 작업 중인 PR 입니다. labels Feb 16, 2026
description: "다인원을 위한 맛집 추천 서비스",
verification: {
other: {
"naver-site-verification":
Copy link
Collaborator

Choose a reason for hiding this comment

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

요거까지는 환경변수에 추가하지 않아도 되겠지?

Copy link
Member Author

Choose a reason for hiding this comment

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

네, 환경변수 추가 없이 현재 방식대로 진행해도 됩니다.

이유:

  1. 보안상 민감하지 않음: 이 verification 코드는 어차피 HTML meta 태그로 공개되는 값이라 숨길 필요가 없습니다
  2. 변경 가능성이 낮음: 네이버 서치 어드바이저에 한 번 등록하면 변경될 일이 거의 없습니다
  3. 환경별 분리 불필요: 개발/스테이징 환경에서 별도의 네이버 사이트를 등록하지 않으므로 환경변수로 분리할 실익이 없습니다

일반적으로 이런 site verification 코드들(Google, Naver 등)은 하드코딩하는 것이 관례입니다.


useEffect(() => {
if (!isPending && capacity) {
if (!isPending && capacity && accessKey) {
Copy link
Collaborator

Choose a reason for hiding this comment

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

로직상 크진 않은데 이 세 개의 조건을 묶어서 isFlag 변수로 정의하면 어떨까?

Copy link
Member Author

Choose a reason for hiding this comment

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

gemini-code-assist의 리뷰를 수용하면서 조건이 3개에서 2개로 줄었습니다.

변경 전 (리뷰 당시):

if (!isPending && capacity && accessKey) {

변경 후 (현재):

if (capacity && accessKey) {

isPendingtrue일 경우 상단에서 redirect가 발생하므로 useEffect 실행 시점에는 항상 false라서 조건을 제거했습니다.

현재 2개 조건(capacity && accessKey)은 단순한 null/undefined 체크라 별도 변수로 추출하지 않아도 가독성에 문제가 없을 것 같아서, 이대로 유지하려고 합니다!

Copy link
Contributor

Choose a reason for hiding this comment

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

설명해주신 대로 isPending 조건은 redirect 로직으로 인해 useEffect 실행 시점에는 항상 false가 되므로 제거하는 것이 올바른 판단입니다. 또한, capacity && accessKey 두 조건은 명확하여 별도의 변수로 추출하지 않아도 가독성에 문제가 없다는 의견에 동의합니다.

- CompleteViewContainer: isPending 조건 제거 (redirect로 인해 항상 false)
- PendingViewContainer: isComplete 조건 제거 (redirect로 인해 항상 false)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@youngminss youngminss merged commit 4372aa5 into develop Feb 16, 2026
6 checks passed
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## [1.0.0-beta.2](v1.0.0-beta.1...v1.0.0-beta.2) (2026-02-16)

### Features

* analytics 개선 및 네이버 서치 어드바이저 등록 ([#88](#88)) ([4372aa5](4372aa5))
* 모임 생성 완료 페이지 UI 리뉴얼 ([#89](#89)) ([17a3fc1](17a3fc1))
github-actions bot pushed a commit that referenced this pull request Feb 16, 2026
## 1.0.0 (2026-02-16)

### Features

* [#70](#70) ([#72](#72)) ([b676e0e](b676e0e))
* [QA] 모임 생성 완료, 결과페이지 페이지 UI 개선 ([#66](#66)) ([f10225d](f10225d))
* [QA] 서비스 전체 배경색 및 Layout Root 그림자 효과 적용 ([#59](#59)) ([384b56f](384b56f))
* analytics 개선 및 네이버 서치 어드바이저 등록 ([#88](#88)) ([4372aa5](4372aa5))
* api client 모듈 생성 ([#37](#37)) ([a37b0a9](a37b0a9)), closes [#38](#38) [#39](#39) [#40](#40) [#41](#41)
* Button 컴포넌트 추가 ([#11](#11)) ([83b7607](83b7607))
* Chip Component 추가 ([#9](#9)) ([e9d8b8f](e9d8b8f))
* Color theme 초기화 ([#2](#2)) ([97f1dcc](97f1dcc))
* DotsLoader 컴포넌트 추가  ([#48](#48)) ([cfe4582](cfe4582)), closes [#49](#49)
* GA4 이벤트 트래킹 통합 ([#70](#70)) ([0c1b9fa](0c1b9fa))
* GTM(Google Tag Manager) 통합을 위한 Analytics 컴포넌트 추가 ([#57](#57)) ([87a6ded](87a6ded))
* IconBase 컴포넌트 및 아이콘 컴포넌트들 구축 ([#13](#13)) ([8557b75](8557b75)), closes [#FFCD00](https://github.com/Nexters/yogieat/issues/FFCD00) [#FFAD00](https://github.com/Nexters/yogieat/issues/FFAD00) [#15](#15) [#ff5a3c](https://github.com/Nexters/yogieat/issues/ff5a3c)
* InputField 컴포넌트 추가 ([#16](#16)) ([99b8aa2](99b8aa2))
* Landing / Opinion Form 페이지 분리 ([#61](#61)) ([0f11e71](0f11e71))
* Layout 컴포넌트 추가 ([#10](#10)) ([9efce6f](9efce6f))
* Semantic Color Token 추가 ([#19](#19)) ([fcaedaf](fcaedaf))
* Spacing utility 클래스 초기화 ([#8](#8)) ([2e38d7a](2e38d7a))
* Tag 컴포넌트 추가 ([#20](#20)) ([f69dd05](f69dd05))
* Toast 컴포넌트 추가 ([#21](#21)) ([76e84b0](76e84b0))
* 모임 생성 완료 페이지 UI 리뉴얼 ([#89](#89)) ([17a3fc1](17a3fc1))
* 모임 생성 퍼널 Step 1 (인원 선택) 구현 ([#23](#23)) ([7fc01a1](7fc01a1)), closes [#24](#24) [#1f2933](https://github.com/Nexters/yogieat/issues/1f2933) [#ff5a3c](https://github.com/Nexters/yogieat/issues/ff5a3c) [#25](#25) [#26](#26) [#27](#27) [#28](#28) [#29](#29) [#30](#30) [#31](#31) [#32](#32) [#34](#34)
* 프로젝트 기초 세팅 진행 ([aa0ec20](aa0ec20))
* 프로젝트 폴더 구조 반영 ([e54962d](e54962d))

### Bug Fixes

* 1순위를 1개라도 선택했다면 바로 CTA 가 활성화 되도록 수정 ([#60](#60)) ([e5758b4](e5758b4))
* 1차 MVP 배포 이전 최종 QA 항목 반영 ([#58](#58)) ([6574231](6574231))
* Button/Chip type 속성 추가 및 의견 수렴 UX 개선 ([#50](#50)) ([7e86e4a](7e86e4a)), closes [#51](#51) [#52](#52) [#53](#53) [#54](#54) [#55](#55) [#56](#56)
* cat 에서 echo 로 env.production 파일을 생성하도록 수정 ([f15307d](f15307d))
* CI/CD health check 타이밍 개선 및 수동 배포 기능 추가 ([54fd2b8](54fd2b8))
* Docker build-args로 환경 변수 전달 방식 변경 ([#77](#77)) ([e5fa0b9](e5fa0b9))
* Docker 이미지 강제 pull 및 컨테이너 재생성 ([#79](#79)) ([c253ec1](c253ec1))
* Health check 전략 개선 및 curl 기반으로 변경 ([765d3da](765d3da))
* nginx http2 deprecated 경고 해결 ([2fd9c75](2fd9c75))
* PendingView 내에서 ShareButton 을 렌더링 하지 않도록 수정 ([7bc3e12](7bc3e12))
* 결과 페이지 맛집 이미지 기본 placeholder, 공유하기 toast 미노출 ([#68](#68)) ([3c80844](3c80844))
* 동시 배포 방지를 위한 concurrency 설정 추가 ([e9bfd52](e9bfd52))
* 모임 생성 퍼널 필드 상태 초기화 버그 수정 ([#64](#64)) ([3934066](3934066)), closes [#65](#65)
* 모임 생성 폼 필드명 변경 (meetingDate → scheduledDate, location → region) ([#35](#35)) ([e90beed](e90beed))
* 배포 워크플로우에 GA4 환경 변수 추가 ([#73](#73)) ([835ae1f](835ae1f))
* 의견 수렴 페이지 내 UI 수정 및 인터렉션 개선 ([#36](#36)) ([a74f7da](a74f7da))
* 의견 수합 Form Capacity 폴링 제거 및 ErrorCode 타입 시스템 추가 ([#67](#67)) ([d55dba1](d55dba1))
* 인원 수 선택 Grid 및 의견 수렴 QA 수정 사항 반영 ([f01626e](f01626e))
* 테스트 용으로 추가했던 페이지 제거 및 icons 폴더 추가 ([4116025](4116025))

### Code Refactoring

* Button 컴포넌트 스펙을 Figma 명세에 맞춰 수정 ([#14](#14)) ([2e27f17](2e27f17))

### Build System

* Docker 빌드 시 NEXT_PUBLIC 환경변수 주입 프로세스 추가 ([#47](#47)) ([88ba163](88ba163))

### Documentation

* 프로젝트 개발 가이드 문서 추가 ([#84](#84)) ([4313145](4313145))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

✨ Feature 기능 개발 ☑️ Need Review 작업이 완료되어 리뷰를 기다리고 있는 PR 입니다

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants