배경
record 상세(API 명세 11.1)에서 place 썸네일 이미지를 함께 내려준다. 카카오 로컬 API는 장소 사진을 제공하지 않으므로, 이번 단계는 시연용 목업이다: 백엔드 정적 리소스 이미지 몇 장을 두고 시연 대상 place에 SQL로 수동 연결한다. 실사진 수집(카카오 이미지 검색 API GET /v2/search/image)은 다음 단계이며, 이번에 만드는 컬럼·응답 계약을 그대로 재사용한다.
작업 내용
- Flyway
V7__place_thumbnail_url.sql: ALTER TABLE core.place ADD COLUMN thumbnail_url varchar(300); (nullable, 길이는 place_url 규약과 동일)
Place 엔티티에 thumbnailUrl 필드 + getter. create() 시그니처는 불변 — 생성 시점엔 항상 null이고 값은 시연 준비 SQL로만 채운다
PlaceSummaryResponse에 thumbnailUrl 필드 추가 (record 상세 11.1, by-place 5.3 등 이 DTO를 쓰는 응답에 자동 반영. null이어도 필드 생략하지 않음)
src/main/resources/static/images/places/에 무료 스톡(상업적 사용 가능) 이미지 4~6장 커밋 — WebP, 가로 1200px, 4:3 고정 비율, 장당 ≤100KB
- 저장값 형식: context-path 포함 절대 경로
/api/core/images/places/<파일>.webp (프론트가 <img src>에 그대로 사용, 같은 origin이라 CORS 없음)
완료 조건
- record 상세 응답의
place에 thumbnailUrl이 포함된다 (값 있음 / null 두 케이스 테스트)
- 정적 이미지가
/api/core/images/places/*.webp로 서빙된다
- 시연 준비 SQL(
UPDATE core.place SET thumbnail_url = ... WHERE id = ...) 절차가 PR 본문에 기록된다
참고
- 착수 시 Jira 티켓 발행 후 진행 (개인 워크플로우 규칙)
- 문서: docs 레포 §2.3 place·§11.1 PlaceSummary 반영 PR 별도
- front: 반응형 표시(aspect-ratio 4/3 + object-fit: cover)와 null/onError 폴백은 front 레포 이슈로 전달
배경
record 상세(API 명세 11.1)에서 place 썸네일 이미지를 함께 내려준다. 카카오 로컬 API는 장소 사진을 제공하지 않으므로, 이번 단계는 시연용 목업이다: 백엔드 정적 리소스 이미지 몇 장을 두고 시연 대상 place에 SQL로 수동 연결한다. 실사진 수집(카카오 이미지 검색 API
GET /v2/search/image)은 다음 단계이며, 이번에 만드는 컬럼·응답 계약을 그대로 재사용한다.작업 내용
V7__place_thumbnail_url.sql:ALTER TABLE core.place ADD COLUMN thumbnail_url varchar(300);(nullable, 길이는place_url규약과 동일)Place엔티티에thumbnailUrl필드 + getter.create()시그니처는 불변 — 생성 시점엔 항상 null이고 값은 시연 준비 SQL로만 채운다PlaceSummaryResponse에thumbnailUrl필드 추가 (record 상세 11.1, by-place 5.3 등 이 DTO를 쓰는 응답에 자동 반영. null이어도 필드 생략하지 않음)src/main/resources/static/images/places/에 무료 스톡(상업적 사용 가능) 이미지 4~6장 커밋 — WebP, 가로 1200px, 4:3 고정 비율, 장당 ≤100KB/api/core/images/places/<파일>.webp(프론트가<img src>에 그대로 사용, 같은 origin이라 CORS 없음)완료 조건
place에thumbnailUrl이 포함된다 (값 있음 / null 두 케이스 테스트)/api/core/images/places/*.webp로 서빙된다UPDATE core.place SET thumbnail_url = ... WHERE id = ...) 절차가 PR 본문에 기록된다참고