POP-SPOT v2.50 — /en·/ja 접근 차단 해소 · 화면 언어 표시 교정 · CI 검사 순서
v2.50 릴리즈에 포함된 Git 기록을 빠짐없이 펼친 기술 기록이다. 전문 용어는 바로 풀어 쓰고, 바뀐 모든 코드 줄을 Before → After로 비교했다.
공식 릴리즈 노트부터 쉽게 읽기
v2.49에서 영어와 일본어 페이지를 만들었지만 실제 방문자는 해당 주소에 들어가면 로그인 화면으로 밀려났다. 검색 서비스는 정상 페이지로 보았지만 사람이 브라우저로 열 때만 접근 검사가 작동해 발견하기 어려운 문제였다.
1. 영어·일본어 주소를 로그인 없이 열 수 있게 했다
/en과 /ja를 허용 목록에 하나씩 더하는 방식은 다음 언어가 추가되면 또 빠뜨릴 수 있다. 그래서 주소 앞의 언어 표시를 잠시 떼고 원래 공개 주소인지 판단하도록 바꿨다. /ja/popups/seongsu를 /popups/seongsu와 같은 공개 페이지로 보는 방식이다.
2. 화면 언어와 문서 언어 표시를 맞췄다
일본어 화면인데 문서 언어가 한국어로 표시되던 문제를 고쳤다. 이 값이 어긋나면 화면 읽기 도구가 일본어 문장을 한국어 발음으로 읽을 수 있다. 주소가 언어를 정하는 구간에서는 그 구간의 설정만 문서 언어를 바꾸도록 했다.
3. Next.js 보안 업데이트는 배포 문제 때문에 되돌렸다
보안 권고를 해결하려고 Next.js 16.2.12로 올렸고 로컬 검사와 자동 검사도 통과했다. 그러나 Vercel에서 빌드가 끝나도 실제 서비스 배포로 올라가지 않았다. 현재 사용자에게 직접 영향을 주는 접근 차단 문제를 먼저 배포하기 위해 16.1.6으로 되돌렸다. 보안 권고 28건은 해결되지 않은 과제로 남아 있다.
4. 자동 검사가 서로를 가리지 않게 했다
예전에는 보안 감사가 첫 단계에서 실패하면 타입 검사, 서식 검사, 테스트, 빌드가 모두 건너뛰어졌다. 이제 코드 검사를 먼저 모두 실행하고 보안 감사 결과는 마지막에 별도로 남긴다. 보안 문제를 숨긴 것이 아니라 다른 고장까지 함께 볼 수 있게 순서를 바꾼 것이다.
5. 같은 사진이 다시 저장되는 길을 한 번 더 막았다
사진 번호가 비어 있는 과거 데이터에서는 기존 중복 방지가 작동하지 않았다. 이제 사진 주소까지 비교하고, 저장 직전에도 같은 주소가 있는지 다시 확인한다. 이미 쌓인 중복 사진 116건은 별도 정리가 필요하지만 새 중복이 늘어나는 것은 막았다.
두 가지 숫자가 다른 이유
릴리즈 뒤에 남은 과제
먼저 쉽게 설명하면
Next 16.1.6 롤백 — 배포 승격 문제 우회, /en·/ja 접근 차단 해소 반영 작업이 중심이다. 이 릴리즈는 눈에 보이는 결과뿐 아니라 그 결과를 만든 파일과 코드까지 모두 추적했다.
읽는 법
Git 기준 범위
커밋 bc76478 — fix(사진/포매팅): 같은 사진을 URL 기준으로도 막는다 + spotless 위반 해소변경 파일 12개
쉬운 설명: 같은 사진을 URL 기준으로도 막는다 + spotless 위반 해소 작업이다.
바꾼 이유: ## 사진 중복 2차 방어
파일 수: 12개이다.
파일 1. .github/workflows/quality.yml
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-backend/src/main/java/com/example/popspotbackend/config/HttpClients.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 3. popspot-backend/src/main/java/com/example/popspotbackend/config/LogSafe.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-backend/src/main/java/com/example/popspotbackend/repository/MateChatMessageRepository.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-backend/src/main/java/com/example/popspotbackend/repository/PopupImageRepository.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 6. popspot-backend/src/main/java/com/example/popspotbackend/service/AccountDeletionService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 7. popspot-backend/src/main/java/com/example/popspotbackend/service/PopupPhotoService.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 8. popspot-backend/src/main/java/com/example/popspotbackend/service/UploadedFileCleaner.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 9. popspot-backend/src/main/resources/db/migration/V26__pexels_url_uniqueness.sql
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 10. popspot-backend/src/test/java/com/example/popspotbackend/controller/AuthControllerTest.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 11. popspot-backend/src/test/java/com/example/popspotbackend/service/AccountDeletionServiceTest.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 12. popspot-backend/src/test/java/com/example/popspotbackend/service/PopupPhotoServiceTest.java
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
커밋 6c01d1b — fix(보안/접근): Next.js 16.2.12 + /en·/ja 가 사람을 로그인으로 튕기던 문제변경 파일 8개 · 자동 생성·보조 1개
쉬운 설명: Next.js 16.2.12 + /en·/ja 가 사람을 로그인으로 튕기던 문제 작업이다.
바꾼 이유: ## Next.js 16.2.12
파일 수: 8개이다.
파일 1. .gitignore
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/app/popups/[slug]/page.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-frontend/package.json
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 5. popspot-frontend/src/components/AuthGuard.paths.test.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 6. popspot-frontend/src/components/AuthGuard.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 7. popspot-frontend/src/components/ThemeToggle.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 8. popspot-frontend/src/lib/i18n.tsx
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
자동 생성·보조 파일 1개 — Git 대조 기록
파일 3. popspot-frontend/package-lock.json
커밋 c027aca — merge: Next.js 16.2.12 + /en·/ja 접근 차단 해소변경 파일 0개
쉬운 설명: Next.js 16.2.12 + /en·/ja 접근 차단 해소 작업이다.
바꾼 이유: 커밋 제목에 적힌 문제를 해결하기 위해 코드를 바꿨다.
파일 수: 0개이다.
커밋 cd71547 — chore: 재배포 유발 — 19:24 빌드가 운영에 반영되지 않음변경 파일 0개
쉬운 설명: 재배포 유발 — 19:24 빌드가 운영에 반영되지 않음 작업이다.
바꾼 이유: 빌드는 성공했는데(741 페이지) 운영 도메인은 계속 이전 배포를 서비스한다. / · /en · /ja 모두 X-Vercel-Cache HIT 로 옛 청크를 가리키고, 배포본 어디에도 이번 수정이 들어 있지 않다. 승격이 안 된 것으로 보여 새 배포를 유발한다.
파일 수: 0개이다.
커밋 14f6e0c — fix(배포): Next.js 16.1.6 으로 되돌림 — 16.2.12 가 배포로 승격되지 않음변경 파일 4개 · 자동 생성·보조 1개
쉬운 설명: Next.js 16.1.6 으로 되돌림 — 16.2.12 가 배포로 승격되지 않음 작업이다.
바꾼 이유: ## 왜 되돌리나
파일 수: 4개이다.
파일 1. .github/workflows/quality.yml
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 2. popspot-frontend/next-env.d.ts
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
파일 4. popspot-frontend/package.json
파일 전체 문맥
조각만 보면 알기 어려운 코드를 파일 처음부터 끝까지 보여 준다. 초록은 추가·수정, 빨강은 삭제된 줄이다.
자동 생성·보조 파일 1개 — Git 대조 기록
파일 3. popspot-frontend/package-lock.json
커밋 65ee141 — merge: Next 16.1.6 롤백 — 배포 승격 문제 우회, /en·/ja 접근 차단 해소 반영변경 파일 0개
쉬운 설명: Next 16.1.6 롤백 — 배포 승격 문제 우회, /en·/ja 접근 차단 해소 반영 작업이다.
바꾼 이유: 커밋 제목에 적힌 문제를 해결하기 위해 코드를 바꿨다.
파일 수: 0개이다.
자동 대조 결과
이 글 묶음은 Git 커밋 6개와 파일 변경 24개를 원본 이력에서 직접 읽어 만들었다.
검증 ID는 6153dad274979d386180e17075e40df43c39063ca382c6f1a4b1a5b0f70130c5이다. 이 값은 포함된 커밋 순서와 해시가 하나라도 달라지면 함께 달라진다.
포함 커밋: bc7647850930e115f82f5313dbee7874a1b59765, 6c01d1b0025dacfa2e07823ac0999b2c6846dac9, c027aca6f28dc632f4728e52fc709d3d8de76f62, cd715476e23d3030542b272357d359613566d288, 14f6e0c9753a93774e207a0898643136e5d29020, 65ee1410013703f6efd141e183a8ffa3ec33fae2