Skip to content

fix(places): 사진·미리보기 조회 실패 시 반복 요청하지 않도록 재시도·batch 조회 정리 - #248

Open
KangShinGyu98 wants to merge 18 commits into
devfrom
fix/place-photo-retry
Open

KangShinGyu98 wants to merge 18 commits into
devfrom
fix/place-photo-retry

Conversation

@KangShinGyu98

Copy link
Copy Markdown
Collaborator

노션

변경 내용

  • 재시도: 조회 전역 기본값을 "일시적 네트워크 오류(TypeError)만 1회"로 바꿔 429·4xx·5xx(502 포함)는 다시 보내지 않음. 장소 API는 status가 담긴 HttpError를 던짐
  • batch: 같은 순간 요청된 사진·미리보기를 로더가 모아 batch로 보냄(1곳이면 단건, 100곳씩 나눔). 항목 실패는 실패한 것만 1회 더, 요청 실패는 다시 보내지 않음. 일정·북마크·채팅 사진, 지도 북마크 핀, 북마크 미리보기에 적용
  • 일정: 불러오기는 batch + 실패분 1회까지만(일차별 단건 없음), 자리표시자는 다음 진입 때 다시 받음. 불러오는 동안 일차는 스켈레톤. 경로 batch의 "경로 없음" 답(NO_ROUTE 등)은 다시 묻지 않음
  • 사진을 다시 받아도 못 불러오면 깨진 이미지 대신 사진 없음 모양(일정 카드·장소 상세 회색 칸, 북마크·채팅 카드 핀 아이콘). 북마크 폴더는 내부 에러 문구 대신 안내 문구
  • 참고: #247과 src/lib/rooms.ts·src/lib/plan/schedule-bulk-hydration.ts가 충돌함. 나중에 병합되는 쪽에서 dev를 merge해 해결(일차별 목록은 캐시만 읽도록 맞춰야 함)

변경 이유

  • Google 429·백엔드 502 때 사진 카드 1장당 요청이 3~4건씩 반복돼 장애·비용이 커짐. 기준: batch 429 → 총 1건, 항목 오류 + 단건 429 → 총 2건

테스트

  • npm run lint
  • npm test
  • npm run build
  • 화면 확인: pc-chrome, android
  • 그 외 수동 검증: 로컬 화면 테스트(사진 batch 요청, *://*places/photos** 차단 시 재시도 1회, 차로 갈 수 없는 장소 추가 등)

🤖 Generated with Claude Code

KangShinGyu98 and others added 15 commits October 25, 2026 18:35
- 전역 재시도를 일시적 네트워크 오류 1회로 제한 (429·4xx·5xx는 재시도하지 않음)
- 장소 API 실패를 status가 담긴 HttpError로 던짐
- 사진 retry 2·미리보기 retry 1 개별 설정 제거

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 같은 커밋에 보이는 사진 2장 이상은 batch, 1장은 단건 API로 보냄
- batch 항목 실패는 실패한 장만 한 번 더 보내고 그래도 실패하면 끝냄
- 요청 자체가 실패하면 단건으로 나눠 보내지 않음
- 쓰이지 않던 사진 batch 시딩 코드 제거

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 같은 커밋에 마운트된 미리보기는 batch로 모으고 실패한 곳만 한 번 더 조회
- 지도 핀이 batch를 먼저 보낸 뒤 실패하면 전부 단건으로 다시 받던 단계 제거

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- NO_ROUTE·LAST_ITEM·SCHEDULE_ITEM_NOT_FOUND 구간은 경로 없음(null)으로 시딩

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 모든 일차 장소를 batch 한 번으로 받고 실패한 곳만 batch로 한 번 더 조회, 단건 조회 제거
- 일차 블록은 일정 불러오기가 끝난 뒤 켜서 같은 장소를 다시 받지 않음
- 자리표시자가 남은 일차는 다시 들어올 때 그 장소만 batch로 다시 조회
- 미리보기 batch가 실패해도 일정 전체를 실패로 만들지 않고 자리표시자로 표시

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 일차 쿼리를 일정 불러오기 중에도 켜고, 진행 중인 불러오기를 기다려 그 결과를 사용
- 같은 진입 안에서 장소 미리보기를 다시 받지 않음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 로더가 서버 한도(100곳)씩 나눠 차례로 보내고, 받은 묶음은 바로 씀
- 요청이 실패하면 그 묶음과 남은 묶음은 그 에러로 끝내고, 실패 항목도 다시 보내지 않음(요청 수는 이전과 같음)
- 마지막 묶음이 1곳이면 단건 API로 보냄

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 취소된 불러오기를 기다리던 일차 조회가 '조회 중'으로 멈춰 그 일차 경로를 받지 않던 문제 방지
- 진행 중인 일정 불러오기를 취소하고 다시 받는 변경(#247)과 함께 쓰일 때를 대비

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 응답 id의 `places/` 접두를 떼고 요청 id 기준으로 결과를 돌려줌
- id가 빈 항목이 있어도 batch 전체를 실패로 처리하지 않음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 레거시 응답(status 없음)을 예전처럼 받아 일정·북마크 핀이 자리표시자로 남지 않게 함

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 요청 id·API 오류 코드가 담긴 에러 메시지를 화면에 그대로 보여 주지 않음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 사진 오류 처리에 다시 받기까지 실패했을 때 알리는 `onPhotoUnavailable` 추가
- 못 불러온 사진 주소는 그리지 않는 `useVisiblePlacePhotoUrl` 추가(주소가 바뀌면 다시 그림)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 북마크·채팅 장소 카드는 지도 핀 아이콘, 장소 상세는 회색 칸으로 둠

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 훅이 아닌 함수에서 훅을 부르던 테스트의 lint 오류(react-hooks/rules-of-hooks) 수정
- 조회 키·queryFn·캐시 설정은 그대로

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- lint 오류(react-hooks/globals) 수정

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vercel

vercel Bot commented Oct 26, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
frontend-server Ready Ready Preview Oct 27, 2026 7:58am UTC

Request Review

KangShinGyu98 and others added 3 commits October 27, 2026 16:19
- 순서 변경 등으로 다시 받던 "경로 없음" 구간이 429를 받으면 "경로 조회 오류"로 바뀌던 문제 수정
- 받은 답 없이 실패하면 지금처럼 오류 표시

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 목록 요청이 429 등으로 실패한 구간을 지도가 fetchQuery로 한 번 더 보내던 문제 수정
- 진행 중인 요청에 합류하고, 받은 적 없는 구간은 지금처럼 받음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- 일차 목록이 있으면 room-schedules의 장소 목록으로 다시 만들지 않고 자리표시자 장소의 미리보기만 다시 받아 채움
- room-schedules의 장소 목록은 장소 추가·삭제·수정을 따라가지 않아, 다시 만들면 지운 장소가 되살아났음

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

This branch was successfully deployed

1 active deployment
Preview — 035b6b6b Deployed Oct 27, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant