Skip to content

[FEAT] 내 곡 목록을 곡(root) 단위 최종본 1건으로 변경 #41

Closed as not planned

Description

@seoyeoki

선행: #26, #39 (PR #40 머지 후 진행)

#️⃣ 요청 유형

  • 새로운 기능 추가
  • 기존 기능 개선
  • 성능 개선

#️⃣ 기능 개요 (Summary)

  • 기능(What): /me/songs를 버전마다 한 건씩이 아니라 곡(root)당 최종본 1건만 보여주고, 프론트가 버전 목록·되돌리기 API를 쓸 수 있게 응답에 root_generation_id를 추가
  • 이유(Why): 사용자는 곡의 최종본 하나만 접근하고 이력은 버전 목록으로 본다. 확정 단계는 두지 않고 "삭제되지 않은 완료 버전 중 가장 최신"을 최종본으로 간주 (되돌리기가 이후 버전을 삭제하므로 성립)

#️⃣ 기술적 설계

GET /api/v1/me/songs

  • 같은 root_generation_id 중 status = COMPLETED AND deleted_at IS NULL인 행의 최댓값 generation_id 1건만 조회
  • total_count, total_pages는 곡(root) 수 기준. 장르 필터는 기존대로 (수정본이 부모의 장르를 물려받으므로 최종본 기준과 동일)
  • 정렬은 기존 유지(created_at 내림차순). 최종본 기준이라 수정하면 목록 위로 올라옴
  • 응답 항목에 root_generation_id 추가. song_id는 최종본 버전의 ID (오디오 재생용)

SSE complete 결과

  • result에 root_generation_id 추가 (생성·수정 직후 프론트가 root를 알 수 있도록). 최초 생성곡은 song_id와 같은 값

곡 이름

  • 수정본 생성 시 이름에 (수정본)을 덧붙이지 않고 부모 이름을 그대로 사용
    • name이 30자 컬럼이라 여러 번 수정하면 넘칠 수 있는 기존 문제도 함께 해소
  • 이름은 모든 버전이 같으므로 목록은 최종본 행의 name을 사용 (원본 행 조회 불필요)

#️⃣ 작업 상세 내용 (To-Do)

  • /me/songs 쿼리를 곡(root)당 최신 유효 버전 1건으로 변경 (장르 필터 유/무 2개)
  • SongItemResponse, CompletionResult에 root_generation_id 추가
  • 수정본 이름에 (수정본)을 붙이지 않도록 변경
  • 통합 테스트 갱신/추가: 곡당 1건, 되돌리기 후 최종본 변경, 수정본 이름, 장르 필터, 페이징 개수
  • Swagger 갱신: MeControllerDocs(곡 단위 목록), SSE 완료 예시에 root_generation_id
  • 프론트 공유: 목록이 곡 단위로 바뀜, root_generation_id로 버전 목록·되돌리기 호출

참고 / 범위 외

Activity

  1. self-assigned this
    on Oct 9, 2026
  2. seoyeoki commented on Oct 12, 2026

    @seoyeoki
    ContributorAuthor

    내 곡 목록(/me/songs)은 작업하지 않고 더미 화면으로 남겨두기로 해서 진행하지 않습니다. 본문은 설계 기록으로 남겨 두고, 목록과 무관한 버그였던 '수정본 이름이 30자를 넘는 문제'는 #44 으로 분리했습니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions