POP-SPOT v2.41 (1/2) — 랜딩 5종·의견 진입점·크롤 키워드 33개·배경영상 83% 감축
v2.41 릴리즈에 포함된 Git 기록을 빠짐없이 펼친 기술 기록이다. 전문 용어는 바로 풀어 쓰고, 바뀐 모든 코드 줄을 Before → After로 비교했다.
먼저 쉽게 설명하면
랜딩 5종·의견 진입점·크롤 키워드 33개·배경영상 83% 감축 작업이 중심이다. 이 릴리즈는 눈에 보이는 결과뿐 아니라 그 결과를 만든 파일과 코드까지 모두 추적했다.
읽는 법
Git 기준 범위
커밋 765bed7 — fix(build): Vercel 배포 실패(.next/package.json ENOENT) 해결 — 프로덕션 빌드를 webpack 으로변경 파일 2개
쉬운 설명: Vercel 배포 실패(.next/package.json ENOENT) 해결 — 프로덕션 빌드를 webpack 으로 작업이다.
바꾼 이유: 증상: v2.40(3ebd224)·핫픽스(12362de) 두 배포가 Vercel 에서 빌드는 정상 완료 후 "ENOENT: no such file or directory, lstat '/vercel/path0/.next/package.json'"(errorStep: buildStep)로 실패. 로컬 next build 는 통과해 놓쳤음. 라이브는 직전 정상배포(81de80d)를 계속 서비스 중이라 사용자 장애는 없었음.
파일 수: 2개이다.
파일 1. popspot-frontend/app/popup/[id]/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/package.json
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 1bd3b66 — fix(build): Next 16.1.6 으로 되돌려 Vercel 배포 복구 (16.2.11 @vercel/next 빌더 비호환)변경 파일 2개 · 자동 생성·보조 1개
쉬운 설명: Next 16.1.6 으로 되돌려 Vercel 배포 복구 (16.2.11 @vercel/next 빌더 비호환) 작업이다.
바꾼 이유: 앞선 webpack 전환(765bed7)으로도 동일하게 실패: Vercel 이 16.2.11 빌드 산출물을 패키징할 때 .next/package.json ENOENT. 로그상 Turbopack·webpack 둘 다 "Compiled successfully → Build Completed" 후 buildStep 에서 동일 실패 → 번들러 문제가 아니라 Next 16.2.11 자체가 현재 배포된 @vercel/next 빌더와 비호환으로 확정.
파일 수: 2개이다.
파일 2. popspot-frontend/package.json
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
자동 생성·보조 파일 1개 — Git 대조 기록
파일 1. popspot-frontend/package-lock.json
커밋 25287d8 — fix(홈): 배경 영상 복구 — v2.40 이 넣은 reduce-motion·모바일 media 게이트 제거변경 파일 1개
쉬운 설명: 배경 영상 복구 — v2.40 이 넣은 reduce-motion·모바일 media 게이트 제거 작업이다.
바꾼 이유: 증상: v2.40 배포 후 메인 배경 영상이 안 보임(특히 Windows '애니메이션 끄기' 등 prefers-reduced-motion 사용자, 그리고 모바일). "예전처럼 배경에 영상 나오게" 요청.
파일 수: 1개이다.
파일 1. popspot-frontend/src/components/LoopingBgVideo.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 1a210fb — fix(크롤러): 수집 시 지역 중심점(가짜 위치) 좌표 저장 제약변경 파일 2개
쉬운 설명: 수집 시 지역 중심점(가짜 위치) 좌표 저장 제약 작업이다.
바꾼 이유: 프론트 지도 링 문제의 근본 원인 = 주소 모호한 팝업을 카카오가 지역 중심점 하나로 찍어 같은 좌표에 수백 개가 몰림. 수집 시점에 그 좌표로의 추가 저장을 막는다.
파일 수: 2개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/repository/PopupStoreRepository.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/service/crawler/PopupCrawlOrchestrator.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 7948360 — merge(prod-live): 운영 브랜치 수정 6건을 v2.40 위로 이식 + CSP 누락 2건 보강변경 파일 4개
쉬운 설명: 운영 브랜치 수정 6건을 v2.40 위로 이식 + CSP 누락 2건 보강 작업이다.
바꾼 이유: main 을 그대로 배포하면 지도 링버그 재발·수집버튼 소실이 발생한다(main 에 prod-live 커밋 6개 없음). main 이 해당 파일을 Prettier 로 전면 재정렬해 cherry-pick 이 전부 충돌하므로, 백엔드 1건만 자동 이식하고 프론트 5건은 main 서식에 맞춰 손으로 옮겼다.
파일 수: 4개이다.
파일 1. popspot-frontend/app/HomeClient.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/app/admin/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-frontend/next.config.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-frontend/src/components/Map/InteractiveMap.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 b6e0418 — fix(홈): v2.40 이 배경영상을 가리던 회귀 복구 — page.tsx 를 운영 구조로변경 파일 1개
쉬운 설명: v2.40 이 배경영상을 가리던 회귀 복구 — page.tsx 를 운영 구조로 작업이다.
바꾼 이유: 증상: 병합본 로컬에서 메인 배경영상이 안 보임. 운영(popspot.co.kr)은 정상 재생(t=4.62s).
파일 수: 1개이다.
파일 1. popspot-frontend/app/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 160d50a — fix(보안/CSP): 이메일 로그인 토큰이 localStorage 에 남던 문제 + 유튜브 썸네일 허용변경 파일 2개
쉬운 설명: 이메일 로그인 토큰이 localStorage 에 남던 문제 + 유튜브 썸네일 허용 작업이다.
바꾼 이유: 1) 로그인 토큰 — v2.40 이 토큰을 sessionStorage(authStorage)로 옮겼는데, 이메일 로그인 경로가 응답을 통째로 localStorage['user'] 에 저장해 data.token 이 그대로 남았다. 소셜 콜백은 이미 필요한 필드만 골라 저장하고 있었다. 배포된 번들에서 실제로 확인된 사항. token 을 구조분해로 분리해 저장 대상에서 제외. 롤백은 해법이 아니다 — 이전 버전은 토큰이 애초에 localStorage 였다.
파일 수: 2개이다.
파일 1. popspot-frontend/app/login/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/next.config.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 5e08086 — fix(인증): Redis 6.0 에 없는 GETDEL 로 소셜로그인·이메일인증이 전부 실패하던 문제변경 파일 1개
쉬운 설명: Redis 6.0 에 없는 GETDEL 로 소셜로그인·이메일인증이 전부 실패하던 문제 작업이다.
바꾼 이유: 증상: v2.40 백엔드 배포 후 소셜 로그인이 마지막 단계(/api/v1/auth/oauth/exchange)에서 400. 응답 본문은 {"message":"Error in execution"} — 컨트롤러의 명시적 400("유효하지 않은 로그인 교환 코드이다")이 아니라 RuntimeException 이 GlobalExceptionHandler 를 탄 것.
파일 수: 1개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/controller/AuthController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 c941359 — style(백엔드): spotlessApply 서식 정리 (google-java-format JavaDoc reflow)변경 파일 5개
쉬운 설명: spotlessApply 서식 정리 (google-java-format JavaDoc reflow) 작업이다.
바꾼 이유: 사장님 로컬 빌드(./gradlew spotlessApply build)가 만든 서식 변경. 5개 파일 모두 JavaDoc 줄바꿈 위치 재배치뿐이며 기능 변화는 없다(공백 무시 diff 와 일반 diff 가 동일 = 코드 라인 변경 없음).
파일 수: 5개이다.
파일 1. popspot-backend/src/main/java/com/example/popspotbackend/controller/AuthController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/controller/PopupAdminReviewController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-backend/src/main/java/com/example/popspotbackend/repository/PopupStoreRepository.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-backend/src/main/java/com/example/popspotbackend/service/backup/DatabaseBackupScheduler.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-backend/src/main/java/com/example/popspotbackend/service/crawler/PopupCrawlOrchestrator.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 6e88aeb — feat(보안/성능): 플랜 7~11 — 감사 잔여 보안 4건·401 근본수정·부하절감·방침 정정·정리변경 파일 15개
쉬운 설명: 플랜 7~11 — 감사 잔여 보안 4건·401 근본수정·부하절감·방침 정정·정리 작업이다.
바꾼 이유: v2.40 배포 후에도 남아 있던 항목들을 일괄 처리한다. 각 항목은 2026-07-25 전수 감사와 배포 직후 라이브 점검에서 근거가 확인된 것들이다.
파일 수: 28개이다.
파일 1. popspot-app/src/api.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/config/RateLimitInterceptor.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-backend/src/main/java/com/example/popspotbackend/config/SecurityConfig.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-backend/src/main/java/com/example/popspotbackend/config/WebConfig.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-backend/src/main/java/com/example/popspotbackend/controller/PlanningController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 6. popspot-backend/src/main/java/com/example/popspotbackend/controller/PopupStoreController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 7. popspot-backend/src/main/java/com/example/popspotbackend/controller/SpotifyAuthController.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 8. popspot-backend/src/main/java/com/example/popspotbackend/dto/PopupPublicDetailDto.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 9. popspot-backend/src/main/java/com/example/popspotbackend/dto/PopupPublicListDto.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 10. popspot-backend/src/main/java/com/example/popspotbackend/entity/User.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 11. popspot-backend/src/main/java/com/example/popspotbackend/exception/GlobalExceptionHandler.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 12. popspot-backend/src/main/java/com/example/popspotbackend/service/AuthService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 13. popspot-backend/src/main/java/com/example/popspotbackend/service/CustomOAuth2UserService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 14. popspot-backend/src/main/java/com/example/popspotbackend/service/TicketService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 15. popspot-backend/src/main/resources/db/migration/V24__user_nickname_unique.sql
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.