POP-SPOT v2.36 (8/8) — 드롭다운 문구를 실제 이동처와 맞춤 — 모달에선 "상세 보기"
v2.36 변경 기록의 이어지는 부분이다. 같은 검증 ID 590e20db98242f22e4a45da12224890db871396b7f34af4a61b4afe6a190865c를 사용한다.
커밋 da9d0cd — perf(지도): 타일 캐싱 되살려 렌더 속도 개선변경 파일 5개
파일 1. popspot-frontend/app/basemap/route.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/app/basemap/shared.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/app/basemap/version/route.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-frontend/src/components/Map/MapGL.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-frontend/src/components/Map/mapStyle.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 9a1eeba — feat(SEO): 트렌드 급상승 IP 랜딩 20종 추가 (외모지상주의·전독시·스파이더맨 등)변경 파일 1개
쉬운 설명: 트렌드 급상승 IP 랜딩 20종 추가 (외모지상주의·전독시·스파이더맨 등) 작업이다.
바꾼 이유: 최근 1달·1주 구글 트렌드(KR) 급상승 '팝업' 검색어를 웹리서치로 정체 확인 후 추가. 정체 불명 약어를 정확히 식별: 외지주=외모지상주의, 하투하=하츠투하츠, 에이스테=에일리언 스테이지, 큐스토=큐티 스트리트, 괴출=괴담출근, 미니브=아이브 캐릭터 등. 충돌 없는 키워드만 사용(예: "ive"는 olive/live 오매칭 → "아이브"만).
파일 수: 1개이다.
파일 1. popspot-frontend/src/lib/popupSlices.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 a485f4e — seo(메타): 홈 페이지·OG 설명 80자 이내로 압축 (네이버 최적화 진단 ⚠️ 해소)변경 파일 2개
쉬운 설명: 홈 페이지·OG 설명 80자 이내로 압축 (네이버 최적화 진단 ⚠️ 해소) 작업이다.
바꾼 이유: 네이버 서치어드바이저 웹페이지 최적화 진단에서 '페이지 설명'·'Open Graph 설명'이 80자 초과로 경고. 핵심 키워드(서울 팝업스토어·일정·지도·오늘·성수/홍대/강남·마감·무료)는 유지하고 압축. - 홈 description(page.tsx): 130자 → 68자 - 기본/OG/Twitter description(layout.tsx): ~90자 → 59자
파일 수: 2개이다.
파일 1. popspot-frontend/app/layout.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/app/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 c64337c — fix(보안/지도): /basemap Range 크기 상한 + 마커 backdrop-blur 제거로 렌더 개선변경 파일 2개
쉬운 설명: /basemap Range 크기 상한 + 마커 backdrop-blur 제거로 렌더 개선 작업이다.
바꾼 이유: 보안(코드리뷰 지적): /basemap 이 Range 존재 여부만 보고 크기를 검증하지 않아, 인증 없는 공개 엔드포인트에서 Range: bytes=0-1073741823 한 번으로 1GB 를 arrayBuffer 에 적재해 서버리스 함수를 OOM 시킬 수 있었다. no-range(416)만 막고 명시적 대용량 range 경로를 남긴 미봉이었음. - bytes=start-end 단일 닫힌 범위만 허용(다중·열린·suffix 거부), 길이 상한 4MB. - pmtiles 조각(헤더 16KB·디렉터리·타일)은 전부 상한 훨씬 아래라 정상 트래픽 영향 없음.
파일 수: 2개이다.
파일 1. popspot-frontend/app/basemap/route.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/src/components/Map/InteractiveMap.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 bb2ca4c — refactor(프론트): 코드리뷰 지적 정리 — 중복 출처 통합·죽은 코드 제거·캐시 안전변경 파일 13개 · 자동 생성·보조 1개
쉬운 설명: 코드리뷰 지적 정리 — 중복 출처 통합·죽은 코드 제거·캐시 안전 작업이다.
바꾼 이유: 코드리뷰(max)에서 확인된 유지보수/정합 지적을 정리: - 갱신주기 카피 단일 출처(src/lib/siteCopy.ts) — 홈·랜딩 이중 하드코딩 제거(사실 불일치 위험). - 카테고리 단일 출처(CATEGORY_META) — 라벨/핀색/범례를 한 곳에서 파생. 범례 '기타'가 lime-400 인데 핀은 lime-300 이던 색 불일치 해소(범례가 핀 색을 잘못 설명하던 문제). - 테마+마운트 게이트를 useMapMode 훅으로 통합(InteractiveMap·DetailMap 중복 제거). 준비 판정을 mounted state 대신 resolvedTheme 확정으로 — setState-in-effect 제거. - 랜딩: CrossSell 죽은 조건절 제거 + /popups/today 자기링크 버그 수정, minDday 이중 패스 → rank() 단일 기준, kicker 삼항 → Record(신규 종류 시 타입검사). - 지도: fitToPoints 헬퍼로 통합 + 코스(PLAN) 모드도 경로가 화면에 들어오게 fitBounds. mapStyle THEMES 의 브랜드 hex 를 globals.css 토큰에서 읽어 팔레트 드리프트 방지. MapGL: 렌더 중 ref 쓰기 제거(React 19), 폴리라인 id Math.random → useId, 불필요 centerRef 제거. - basemap: OVERRIDE(정적 파일) 버전을 ETag/Last-Modified 로 파생 — 파일 교체 시 캐시 자동 무효화(v="static" 고정으로 immutable 캐시가 옛 조각을 섞어 pmtiles 깨지던 위험 제거), 서버 캐시 키에 v 포함. - SearchBox blur 지연 타이머 제거(onMouseDown preventDefault 로 이미 안전). - 죽은 의존성 react-kakao-maps-sdk 제거.
파일 수: 13개이다.
파일 1. popspot-frontend/app/basemap/route.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/app/basemap/shared.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/app/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-frontend/app/popups/[slug]/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 6. popspot-frontend/package.json
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 7. popspot-frontend/src/components/Map/DetailMap.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 8. popspot-frontend/src/components/Map/InteractiveMap.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 9. popspot-frontend/src/components/Map/MapGL.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 10. popspot-frontend/src/components/Map/mapStyle.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 11. popspot-frontend/src/components/Map/useMapMode.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 12. popspot-frontend/src/features/popup/SearchBox.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 13. popspot-frontend/src/lib/siteCopy.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
자동 생성·보조 파일 1개 — Git 대조 기록
파일 5. popspot-frontend/package-lock.json
커밋 a4a2aea — feat(계측): Speed Insights 연결 — 켜져만 있고 수집 0이던 상태 해소변경 파일 3개 · 자동 생성·보조 1개
쉬운 설명: Speed Insights 연결 — 켜져만 있고 수집 0이던 상태 해소 작업이다.
바꾼 이유: Vercel 대시보드에는 Speed Insights 가 활성화돼 있어 /_vercel/speed-insights/script.js 가 200 으로 서빙되고 있었지만, @vercel/speed-insights 패키지가 설치돼 있지 않아 아무도 그 스크립트를 부르지 않았다. 즉 "켜져 있는데 데이터는 0" 상태였다.
파일 수: 3개이다.
파일 1. popspot-frontend/app/layout.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/package.json
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
자동 생성·보조 파일 1개 — Git 대조 기록
파일 2. popspot-frontend/package-lock.json
커밋 bfff8cd — perf(API): 브라우저 호출을 동일 출처 프록시로 이관 — TLS 재핸드셰이크·preflight 제거변경 파일 4개
쉬운 설명: 브라우저 호출을 동일 출처 프록시로 이관 — TLS 재핸드셰이크·preflight 제거 작업이다.
바꾼 이유: 브라우저가 백엔드(ts.net)를 직접 호출하느라 페이지 커넥션과 별개로 TLS 핸드셰이크 (≈190ms)를 매번 새로 맺고, JSON POST 마다 CORS preflight(≈260ms)를 물었다. next.config 에 /api/:path* 리라이트가 이미 있었으므로 브라우저에서는 상대 경로를 그대로 둬서 동일 출처로 태운다. 리라이트는 icn1(서울) 엣지에서 처리된다.
파일 수: 4개이다.
파일 1. popspot-frontend/app/popups/[slug]/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/src/components/LiveChatTicker.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/src/components/VisitTracker.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-frontend/src/lib/api.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 0300c79 — perf(API): apiFetch 를 우회하던 직접 호출 3곳도 동일 출처로 — 검색어 인코딩 버그 동반 수정변경 파일 2개
쉬운 설명: apiFetch 를 우회하던 직접 호출 3곳도 동일 출처로 — 검색어 인코딩 버그 동반 수정 작업이다.
바꾼 이유: bfff8cd 는 apiFetch 경유 호출만 덮었다. raw fetch 로 절대 URL 을 직접 조합하던 클라이언트 호출이 남아 있어 해당 화면에서는 크로스오리진 비용이 그대로였다.
파일 수: 2개이다.
파일 1. popspot-frontend/app/planning/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/src/components/AIReportModal.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 d418cbb — chore(프론트): 도달 불가능한 TicketingSimulation 제거변경 파일 1개
쉬운 설명: 도달 불가능한 TicketingSimulation 제거 작업이다.
바꾼 이유: 어떤 코드도 import 하지 않는 죽은 컴포넌트였다. 동적 import(dynamic())도 없어 런타임에 렌더될 경로가 존재하지 않았고, 참조는 자기 정의와 문서 언급뿐이었다.
파일 수: 1개이다.
파일 1. popspot-frontend/src/components/TicketingSimulation.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 c7d044b — fix(검색): 검색 모달이 무엇을 쳐도 0건이던 문제 — 이름 검색 드롭다운 복구변경 파일 2개
쉬운 설명: 검색 모달이 무엇을 쳐도 0건이던 문제 — 이름 검색 드롭다운 복구 작업이다.
바꾼 이유: 헤더 돋보기·Ctrl+K 로 열리는 GlobalSearchModal 이 <SearchZone /> 를 props 없이 마운트하고 있었다. SearchBox 의 canSuggest 는 onSelectPopup 이 함수일 때만 켜지므로 이름 부분일치 드롭다운이 아예 렌더되지 않았고, 남은 경로는 자연어 AI 검색뿐이었다. 그 백엔드(/api/search/ai)는 아직 배포 전이라 결과가 항상 빈 배열로 돌아왔고, 사용자에게는 에러가 아니라 "맞는 팝업을 못 찾았어요" 로 보였다.
파일 수: 2개이다.
파일 1. popspot-frontend/app/HomeClient.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/src/features/popup/GlobalSearchModal.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 53525ff — fix(검색): 드롭다운 문구를 실제 이동처와 맞춤 — 모달에선 "상세 보기"변경 파일 1개
쉬운 설명: 드롭다운 문구를 실제 이동처와 맞춤 — 모달에선 "상세 보기" 작업이다.
바꾼 이유: 이름 검색 드롭다운이 어느 맥락에서든 "지도에서 보기" 로 고정돼 있었다. 지도 모드에선 맞지만, 글로벌 검색 모달에서는 상세 페이지(/popup/{id})로 이동하므로 문구가 실제 동작과 어긋났다. mapMode 로 분기한다.
파일 수: 1개이다.
파일 1. popspot-frontend/src/features/popup/SearchBox.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.