Skip to content

[fix] 예매 일정 호버 잘림 및 OG URL 버그 수정, 브랜드 키워드 노출 개선 - #143

Merged
You-Hyuk merged 6 commits into
mainfrom
fix/#142-ticketing-hover-og-url-branding
Aug 11, 2026
Merged

You-Hyuk merged 6 commits into
mainfrom
fix/#142-ticketing-hover-og-url-branding

Conversation

@You-Hyuk

@You-Hyuk You-Hyuk commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

관련 이슈

Closes #142


변경 개요

홈 화면 예매 일정 패널의 호버 잘림 버그, PR #141 self-review에서 지적된 og:url 고정 문제를 수정하고, "coming"(사전 단어라 검색 상위 노출이 사실상 불가능)이 아닌 "커밍"(경쟁이 적은 브랜드성 한글 키워드) 중심으로 사이트 전반의 브랜드 표기를 전환해 검색 노출 가능성을 높인다.

변경사항

파일 변경 내용
src/pages/HomePage.module.css .ticketingPanelList에 padding/margin 추가해 호버 시 카드 상단 잘림 수정
src/hooks/usePageMeta.js (신규) 상세 페이지용 title/OG meta 동적 갱신 훅 (언마운트 시 기본값 복원)
src/pages/ConcertDetailPage.jsx, ArtistDetailPage.jsx, ReleaseDetailPage.jsx usePageMeta 적용, 상세 페이지별 og:url/title/description 동적화
index.html, src/hooks/usePageTitle.js, src/hooks/usePageMeta.js, 8개 페이지, Footer.jsx, policy.js, SignupPage.jsx "Coming" → "커밍" 브랜드 표기 전환 (로고 워드마크, "COMING" 내한예정 배지/탭, 관리자 콘솔 문구는 제외)
src/utils/structuredData.js, src/App.jsx 사이트 전역 schema.org/WebSite JSON-LD 추가
public/sitemap.xml 하드코딩된 lastmod 날짜 제거

주요 구현 내용

  • 예매 일정 잘림 버그: .ticketingPanelListoverflow-y:auto인데 padding-top이 없어 .ticketCard:hovertranslateY(-1px)+box-shadow가 스크롤 컨테이너 상단 경계에 잘리던 문제. padding으로 여유 공간을 만들고 동일 크기의 음수 margin으로 바깥 레이아웃은 그대로 유지
  • OG URL 동적화: 처음에는 react-helmet-async 도입을 시도했으나, 이 라이브러리가 index.html의 정적 meta 태그를 덮어쓰지 않고 별도로 추가만 해서 <title>이 중복되고(브라우저는 첫 번째 title을 우선하므로 오히려 반영이 안 됨) og:url도 중복되는 문제를 발견해 제거함. 대신 기존 정적 meta 노드를 직접 갱신·복원하는 usePageMeta 훅으로 구현
  • 알려진 한계: 이 프로젝트는 SSR/프리렌더링이 없는 순수 CSR(Vite SPA)이라, 카카오톡·페이스북·트위터 등 JS를 실행하지 않는 공유 미리보기 봇에는 이번 OG URL 동적화가 반영되지 않는다. 브라우저 탭 제목과 JS를 렌더링하는 검색엔진(Googlebot 등) 인덱싱 정확도 개선용. 공유 미리보기까지 고치려면 봇 User-Agent를 감지해 서버측에서 별도 HTML을 반환하는 방식(예: Vercel Edge Middleware)이 필요하며, 범위가 커서 이번 이슈에서는 제외하기로 논의함

테스트

  • 로컬 실행 확인 (npm run lint, npm run build 통과 — 기존에 존재하던 무관한 18개 lint 에러 외 신규 에러 없음)
  • 단위 테스트 추가/수정 (프로젝트에 테스트 인프라 없음)
  • 예외 케이스 확인 (Playwright로 실제 dev 서버에서 상세 페이지 title/OG meta 동적 갱신 및 SPA 네비게이션 시 기본값 복원 확인, 컴파일된 스타일시트에서 호버 잘림 CSS 수정 반영 확인)

리뷰어 참고사항

  • OG URL 동적화의 한계(공유 미리보기 봇에는 미반영)는 위 "주요 구현 내용"에 명시. 필요시 별도 이슈로 봇 프리렌더링 작업 논의 가능
  • AdminPage.jsx의 "Coming 관리자 콘솔" 문구는 관리자 전용(robots.txt 차단) 페이지라 브랜드 전환 범위에서 제외함

코드 리뷰

변경사항 요약

예매 일정 패널 호버 잘림 버그 수정, 상세 페이지 OG URL 동적화(usePageMeta 훅 신규), "Coming"→"커밍" 브랜드 표기 전환, 사이트 전역 WebSite JSON-LD 추가, sitemap.xml lastmod 정리. 총 18개 파일 변경, 신규 훅 1개(usePageMeta.js) 추가.


검토 결과

🔵 suggestion

  • src/hooks/usePageMeta.js / src/hooks/usePageTitle.js: 두 훅이 title 설정 로직을 일부 중복하고 있음(하나는 title만, 하나는 title+OG meta)
    → 현재는 상세 페이지 3곳만 OG meta가 추가로 필요해 분리했지만, 대상 페이지가 늘어나면 하나로 통합하는 것을 고려할 만함

✅ 그 외 특이사항 없음.

Summary by CodeRabbit

  • Branding

    • Updated site-wide branding from “Coming” to “커밍,” including page titles, footer text, policies, and signup messaging.
  • SEO & Metadata

    • Added page-specific titles, descriptions, images, canonical paths, and social sharing metadata.
    • Added website structured data to improve search presentation.
    • Simplified sitemap entries by removing outdated modification dates.
  • Visual Improvements

    • Adjusted ticketing panel spacing for a smoother page layout.

You-Hyuk and others added 5 commits August 10, 2026 18:00
.ticketingPanelList가 overflow-y:auto인데 padding-top이 없어
.ticketCard:hover의 translateY(-1px)+box-shadow가 스크롤 컨테이너
상단 경계에 잘리던 문제. padding으로 여유 공간을 만들고 동일한 크기의
음수 margin으로 바깥 레이아웃은 그대로 유지했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
콘서트/아티스트/발매 상세 페이지를 공유해도 og:url 등이 항상 홈으로
고정 노출되던 문제(PR #141 self-review 지적)를 해소한다.

react-helmet-async는 index.html의 정적 meta 태그를 덮어쓰지 못하고
별도로 추가만 해서 title 요소가 중복되는 문제가 있어(첫 title 우선
규칙 때문에 오히려 반영이 안 됨) 채택하지 않았다. 대신 기존 정적
meta 노드를 직접 갱신하고 언마운트 시 기본값으로 복원하는
usePageMeta 훅을 추가했다.

SSR/프리렌더링이 없는 CSR 환경이라 JS를 실행하지 않는 카카오톡/
페이스북 등 공유 미리보기 봇에는 여전히 반영되지 않는다. 브라우저
탭 제목과 JS를 렌더링하는 검색엔진(Googlebot 등) 대상 개선.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
"coming"은 사전 단어라 검색 상위 노출이 사실상 불가능하지만 "커밍"은
브랜드성 한글 키워드라 경쟁이 적어 색인 시 상위 노출 가능성이 높다.
index.html 메타 태그, 브라우저 탭 타이틀, 이용약관/개인정보처리방침,
Footer, 회원가입 안내 문구를 "커밍"으로 전환했다.

좌측 상단 로고 워드마크(Logo.jsx)와 "COMING" 배지/탭(내한 예정
아티스트를 뜻하는 도메인 라벨이지 브랜드명이 아님)은 변경 대상에서
제외했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
모든 라우트에서 렌더링되는 schema.org/WebSite JSON-LD를 추가해
구글이 "커밍" 브랜드 키워드 검색 시 사이트 정체성을 명확히 인식하도록
한다. name/alternateName으로 "커밍"/"Coming" 둘 다 매핑했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
PR #141 self-review 지적사항. 빌드 시점 자동 생성 인프라가 없는
상태에서 고정 날짜를 유지하면 시간이 지날수록 실제 갱신 시점과
어긋나 오히려 신뢰도를 떨어뜨린다. lastmod는 sitemap 스펙상 선택
필드라 제거했다.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@You-Hyuk You-Hyuk added Bug 🐛 버그 수정 Feat ✨ 새 기능 추가 UI/UX 💄 UI/UX 레이아웃·스타일·컴포넌트 시각적 변경 labels Aug 10, 2026
@You-Hyuk You-Hyuk self-assigned this Aug 10, 2026
- index.html <title>을 "커밍 - Jpop 아티스트 내한 공연 정보"에서 "커밍"으로 변경
- usePageMeta document.title 복원 기본값도 동일하게 축소
- og:title 복원 기본값은 DEFAULT_OG_TITLE로 분리해 기존 키워드 문구 유지 (공유 미리보기·SEO 영향 최소화)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Review Change Stack

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Free

Run ID: 825202e9-5a39-46ec-8921-12b21a273685

📥 Commits

Reviewing files that changed from the base of the PR and between 2fd5edc and 62b9360.

📒 Files selected for processing (18)
  • index.html
  • public/sitemap.xml
  • src/App.jsx
  • src/components/layout/Footer.jsx
  • src/constants/policy.js
  • src/hooks/usePageMeta.js
  • src/hooks/usePageTitle.js
  • src/pages/ArtistDetailPage.jsx
  • src/pages/ArtistsPage.jsx
  • src/pages/CalendarPage.jsx
  • src/pages/ConcertDetailPage.jsx
  • src/pages/ConcertsPage.jsx
  • src/pages/HomePage.module.css
  • src/pages/MyPage.jsx
  • src/pages/ReleaseDetailPage.jsx
  • src/pages/ReleasesPage.jsx
  • src/pages/SignupPage.jsx
  • src/utils/structuredData.js
💤 Files with no reviewable changes (1)
  • public/sitemap.xml

📝 Walkthrough

Walkthrough

The change standardizes the brand name as “커밍”, adds shared page and website metadata, removes sitemap lastmod values, updates detail-page metadata handling, and adjusts ticketing panel spacing.

Changes

Branding and metadata

Layer / File(s) Summary
Site metadata contracts and document integration
index.html, src/utils/structuredData.js, src/App.jsx, src/hooks/usePageMeta.js
Site metadata now uses “커밍”. The application renders Website JSON-LD. usePageMeta updates page title and Open Graph metadata and restores defaults during cleanup.
Detail-page metadata integration
src/pages/ArtistDetailPage.jsx, src/pages/ConcertDetailPage.jsx, src/pages/ReleaseDetailPage.jsx
Detail pages use usePageMeta for conditional titles, descriptions, paths, and images.
Branding across application surfaces
src/components/layout/Footer.jsx, src/constants/policy.js, src/hooks/usePageTitle.js, src/pages/ArtistsPage.jsx, src/pages/CalendarPage.jsx, src/pages/ConcertsPage.jsx, src/pages/MyPage.jsx, src/pages/ReleasesPage.jsx, src/pages/SignupPage.jsx, public/sitemap.xml
Visible branding and page-title values now use “커밍”. Sitemap URL entries no longer contain lastmod dates.

Ticketing panel spacing

Layer / File(s) Summary
Scrollable ticketing panel spacing
src/pages/HomePage.module.css
.ticketingPanelList now applies 4px vertical padding and a -4px vertical margin.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant DetailPage as Detail page
  participant PageMeta as usePageMeta
  participant Document as Document head
  DetailPage->>PageMeta: provide dynamic page metadata
  PageMeta->>Document: set title and Open Graph tags
  PageMeta->>Document: restore site defaults on cleanup
Loading

Note

🎁 Summarized by CodeRabbit Free

Your organization is on the Free plan. CodeRabbit will generate a high-level summary and a walkthrough for each pull request. For a comprehensive line-by-line review, please upgrade your subscription to CodeRabbit Pro by visiting https://app.coderabbit.ai/login.

Comment @coderabbitai help to get the list of available commands.

@You-Hyuk
You-Hyuk merged commit fc56eb8 into main Aug 11, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Bug 🐛 버그 수정 Feat ✨ 새 기능 추가 UI/UX 💄 UI/UX 레이아웃·스타일·컴포넌트 시각적 변경

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[fix] 예매 일정 호버 잘림 및 OG URL 버그 수정, 브랜드 키워드 노출 개선

1 participant