You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Photo.markThumbnailReady(String thumbnailObjectKey)가 null 또는 공백 키를 허용하므로, 썸네일 상태는 READY지만 실제 URL 발급에 사용할 수 있는 오브젝트 키가 없는 잘못된 상태가 만들어질 수 있다.
현재 DB 제약조건은 thumbnail_status의 enum 값만 검증하고 READY 상태와 thumbnail_object_key의 관계는 보장하지 않는다. 또한 PhotoService, ReactionService, SharedGroupInviteService 등 썸네일 URL을 발급하는 경로마다 사용 가능 여부 판단이 분산되어 있고, 일부 경로는 null만 확인해 공백 키로 URL 발급을 시도할 수 있다.
기대 동작은 다음과 같다.
READY 상태는 비어 있지 않은 유효한 thumbnail_object_key를 반드시 가진다.
썸네일 사용 가능 여부 판단을 공통화해 모든 API가 같은 기준을 적용한다.
애플리케이션과 PostgreSQL 양쪽에서 상태·키 정합성을 보장한다.
✅ Tasks
기존 데이터에서 READY이면서 키가 null 또는 공백인 행이 있는지 점검하고 정리 방안을 수립한다.
Photo.markThumbnailReady()가 null·공백 키를 허용하지 않도록 도메인 불변식을 추가한다.
READY 상태와 thumbnail_object_key 관계를 보장하는 PostgreSQL check constraint 마이그레이션을 추가한다.
썸네일 사용 가능 여부를 엔티티 메서드 또는 공통 정책으로 통일한다.
PhotoService, ReactionService, SharedGroupInviteService 등 모든 썸네일 URL 발급 경로에 공통 기준을 적용한다.
엔티티 단위 테스트와 PostgreSQL 제약조건 테스트, 서비스 회귀 테스트를 추가한다.
Activity