Skip to content

fix(afternote): 곡을 전부 빼도 서버 곡이 남는다 — 빈 songs 가 키째 생략돼 「유지」로 흡수된다 #1599

Closed

Description

@OnlyReadOneBook

작업 유형

bug — 버그·오동작

주 담당 모듈

afternote — 애프터노트

개요

추억 노트에서 곡을 전부 빼고 저장하면 서버 곡이 그대로 남는다. 폼은 빈 목록인데 재진입하면 지웠던 곡이 되살아난다 — 미디어 슬롯에서 났던 거짓 삭제(#1596)와 같은 결함이 곡 목록에서 남아 있는 것이다.

원인: AfternotePlaylistRequestDto.songs 가 기본값 emptyList() 를 들고 있고, 앱 Json 은 encodeDefaults = false 다. 그래서 빈 목록은 키째 빠진다. BE PlaylistRelationStrategy.update 는 songs != null 일 때만 항목을 갈아 끼우므로, 키가 없으면 기존 곡을 그대로 둔다.

// Afternote-BE PlaylistRelationStrategy.update
if (playlistRequest.getSongs() != null) {
    playlist.getItems().clear();   // ← 빈 배열이 오면 여기서 전부 삭제된다
    ...
}

즉 BE 는 이미 「빈 배열 = 전부 삭제」를 받을 준비가 돼 있고, FE 가 그 배열을 못 보내고 있다.

도달 경로: 수정 모드 진입 → 곡을 전부 제거(clearMemorialPlaylistSongs · removeMemorialPlaylistSongs) → 저장 → 재진입하면 곡이 남아 있다.

완료 조건:

  • 곡을 전부 뺀 수정 요청이 "songs": [] 를 싣는다.
  • 곡이 있을 때의 바디는 그대로다.
  • 회귀 테스트로 고정한다.

자식 이슈

No response

참고

Activity

  1. github-actions commented on Aug 30, 2026

    @github-actions
    Contributor

    bug 이슈는 사이드바 Fields > Priority 로 심각도를 지정해야 합니다. 판정 기준:

    • Urgent: 치명 — 크래시·데이터 소실·보안 무력화·핵심 경로 차단·가짜 성공
    • High: 심각 — 실패·틀린 값의 정상 위장, 핵심 기능 무동작
    • Medium: 불편 — 우회로가 있는 오동작·틀린 표시, 핵심 흐름은 유지
    • Low: 경미 — 문구·정렬·마감 품질 흠, 기능 영향 없음

    값이 비어 있어도 이슈를 닫지는 않습니다. 이 안내는 이슈당 한 번만 답니다.

  2. added
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Aug 30, 2026
  3. github-actions commented on Aug 30, 2026

    @github-actions
    Contributor

    이 이슈를 맡은 PR 은 #1602 다 (base fix/1596-explicit-null-media-patch).

    base 가 기본 브랜치(develop)가 아니라서 GitHub 은 이 이슈의 Development 칸에
    아무것도 표시하지 않는다. 본문에 Closes #N 이 있어도 마찬가지다 — 그 링크는 기본 브랜치를
    target 하는 PR 에서만 만들어진다.

    PR 이 닫히거나 머지되면 이 이슈의 pr-open 라벨은 다음 리컨사일에서 떨어진다.

  4. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:afternote애프터노트 기능 영역bugSomething isn't working

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions