Skip to content

방 메타에 커스텀 썸네일 존재·출처 신호 추가 #7

Description

@aryu1217

문제

GET /api/v1/rooms/{slug}thumbnailUrl / thumbnailUrls는 현재 다음 두 출처를 같은 필드로 합쳐 반환합니다.

  1. 방장이 업로드한 커스텀 방 썸네일
  2. 커스텀 썸네일이 없을 때의 현재 재생 곡 썸네일 fallback

프론트의 방 수정 화면은 기존 커스텀 썸네일 존재 여부를 알아야 업로드/기본 이미지 카드의 초기 선택과 DELETE /api/v2/rooms/{slug}/thumbnail 의도를 결정할 수 있지만, 현재 응답만으로는 출처를 신뢰성 있게 구분할 수 없습니다.

재현

  1. 커스텀 썸네일 없이 기본 이미지를 선택해 방을 생성합니다.
  2. 방에서 곡을 재생합니다.
  3. 방 메타 조회 시 현재 곡 이미지가 thumbnailUrl(s)에 반환됩니다.
  4. 방 수정 화면은 이를 업로드된 방 썸네일로 오인해 업로드 카드가 선택된 상태로 열립니다.
  5. 기본 이미지로 저장하면 실제 커스텀 이미지가 없는데도 DELETE 요청 의도가 만들어집니다.

관련 프론트 리뷰: Queuing-org/frontend#52 (comment)

요청 계약

URL 도메인이나 경로를 추론하지 않고 출처를 판별할 수 있는 명시적 응답 필드를 추가해 주세요.

권장안:

{
  "hasCustomThumbnail": true
}

또는:

{
  "thumbnailSource": "CUSTOM"
}

thumbnailSource를 사용하는 경우 CUSTOM | CURRENT_TRACK | NONE처럼 출처를 완전히 표현할 수 있으면 좋습니다. 별도 nullable customThumbnailUrl(s) 필드도 가능합니다.

수용 기준

  • 커스텀 방 썸네일이 있으면 명시적 필드로 식별할 수 있습니다.
  • 커스텀 썸네일 없이 현재 곡 fallback만 있으면 커스텀 썸네일 없음으로 식별됩니다.
  • 커스텀 썸네일과 현재 곡이 모두 없을 때도 구분됩니다.
  • 기존 thumbnailUrl(s) 표시 fallback 동작은 호환성을 위해 유지할 수 있습니다.
  • OpenAPI 설명과 응답/서비스 테스트에 세 상태가 고정됩니다.
  • 프론트는 이 신호를 기준으로 수정 화면 초기 카드와 DELETE 예약 여부를 결정합니다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions