v2.41change journal

POP-SPOT v2.41 (1/2) — 랜딩 5종·의견 진입점·크롤 키워드 33개·배경영상 83% 감축

김동현235
#백엔드#프론트엔드#회고#트러블슈팅
v2.41 릴리즈에 포함된 Git 기록을 빠짐없이 펼친 기술 기록이다. 전문 용어는 바로 풀어 쓰고, 바뀐 모든 코드 줄을 Before → After로 비교했다.

먼저 쉽게 설명하면

랜딩 5종·의견 진입점·크롤 키워드 33개·배경영상 83% 감축 작업이 중심이다. 이 릴리즈는 눈에 보이는 결과뿐 아니라 그 결과를 만든 파일과 코드까지 모두 추적했다.

읽는 법

  • Before는 바뀌기 전 줄이다.
  • After는 바뀐 뒤 줄이다.
  • ‘해당 코드 없음’은 새로 추가했거나 완전히 지운 구간이라는 뜻이다.
  • 영상·이미지처럼 글자로 비교할 수 없는 파일은 Git의 추가·수정·삭제 상태로 기록했다.
  • Git 기준 범위

  • 릴리즈: v2.41
  • 기준 날짜: 2026-07-26
  • 커밋: 11개
  • 파일 변경 기록: 65개
  • 추가한 줄: 1776줄
  • 삭제한 줄: 784줄
  • 검증 ID: fe55e9a84af2f319ad478c3806023ba09824823f89382deecdb334ca3218d434
  • 기준 커밋: 1ae2ef3d5776

  • 커밋 765bed7 — fix(build): Vercel 배포 실패(.next/package.json ENOENT) 해결 — 프로덕션 빌드를 webpack 으로변경 파일 2

    GitHub에서 이 커밋 보기

    쉬운 설명: 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개

    GitHub에서 이 커밋 보기

    쉬운 설명: 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
    Git 이력 대조에는 포함했다. 도구가 자동으로 만들거나 사람이 직접 읽기 어려운 파일이라 본문 코드 비교에서는 접었다.
    커밋 25287d8 — fix(홈): 배경 영상 복구 — v2.40 이 넣은 reduce-motion·모바일 media 게이트 제거변경 파일 1

    GitHub에서 이 커밋 보기

    쉬운 설명: 배경 영상 복구 — v2.40 이 넣은 reduce-motion·모바일 media 게이트 제거 작업이다.

    바꾼 이유: 증상: v2.40 배포 후 메인 배경 영상이 안 보임(특히 Windows '애니메이션 끄기' 등 prefers-reduced-motion 사용자, 그리고 모바일). "예전처럼 배경에 영상 나오게" 요청.

    파일 수: 1개이다.


    파일 1. popspot-frontend/src/components/LoopingBgVideo.tsx

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    커밋 1a210fb — fix(크롤러): 수집 시 지역 중심점(가짜 위치) 좌표 저장 제약변경 파일 2

    GitHub에서 이 커밋 보기

    쉬운 설명: 수집 시 지역 중심점(가짜 위치) 좌표 저장 제약 작업이다.

    바꾼 이유: 프론트 지도 링 문제의 근본 원인 = 주소 모호한 팝업을 카카오가 지역 중심점 하나로 찍어 같은 좌표에 수백 개가 몰림. 수집 시점에 그 좌표로의 추가 저장을 막는다.

    파일 수: 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

    GitHub에서 이 커밋 보기

    쉬운 설명: 운영 브랜치 수정 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

    GitHub에서 이 커밋 보기

    쉬운 설명: v2.40 이 배경영상을 가리던 회귀 복구 — page.tsx 를 운영 구조로 작업이다.

    바꾼 이유: 증상: 병합본 로컬에서 메인 배경영상이 안 보임. 운영(popspot.co.kr)은 정상 재생(t=4.62s).

    파일 수: 1개이다.


    파일 1. popspot-frontend/app/page.tsx

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    커밋 160d50a — fix(보안/CSP): 이메일 로그인 토큰이 localStorage 에 남던 문제 + 유튜브 썸네일 허용변경 파일 2

    GitHub에서 이 커밋 보기

    쉬운 설명: 이메일 로그인 토큰이 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

    GitHub에서 이 커밋 보기

    쉬운 설명: 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

    GitHub에서 이 커밋 보기

    쉬운 설명: 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

    GitHub에서 이 커밋 보기

    쉬운 설명: 플랜 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

    파일 전체 문맥

    조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.

    공유XLinkedIn

    댓글