Skip to content

feat(afternote): 수정 모드에서 서버 영정사진·추모 영상을 지울 수 있게 한다 — BE 삭제 계약 확장 반영 #1597

Closed

Description

@OnlyReadOneBook

작업 유형

enhancement — 신규 기능·기존 기능 개선

주 담당 모듈

afternote — 애프터노트

개요

수정 모드에서 서버에 이미 저장된 영정사진·추모 영상을 앱에서 지울 수 없다. 미디어 시트의 «삭제» 는 이 폼에서 새로 붙인 로컬 첨부에만 열린다 — removableMemorialMediaTargets() 가 서버 미디어를 대상에서 뺀다.

그 가드의 근거는 계약 한계였다. KDoc 이 그대로 적고 있다.

수정(PATCH) 계약이 삭제를 표현하지 못한다 — BE AfternotePlaylist.update 는 null 필드를 "기존 값 유지" 로 해석하므로, 폼만 비워 두면 저장 후 서버 미디어가 되살아나는 거짓 삭제가 된다. (…) 서버 미디어 삭제는 BE 계약 확장 후 후속.

그 계약 확장이 들어왔다 — Afternote-BE origin/main 72fee63(2026-08-30). PATCH 가 «필드 생략 = 유지» 와 «JSON null = 삭제(DB 참조 제거 + S3 객체 삭제)» 를 가른다. 근거가 사라졌으므로 가드도 사라져야 한다.

완료 조건:

  • 수정 모드에서 서버 영정사진·서버 추모 영상 슬롯에도 «삭제» 가 열린다.
  • 지우고 저장하면 서버 미디어가 실제로 제거된다 — 재진입해도 되살아나지 않는다.
  • removableMemorialMediaTargets() KDoc 에서 낡은 근거(«계약이 삭제를 표현하지 못한다»)를 지운다.
  • 회귀 테스트로 경로를 고정한다.

자식 이슈

No response

참고

Activity

  1. OnlyReadOneBook commented on Aug 30, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    선행 계약을 dev 실서버로 확인했습니다 (2026-08-30 21:4x KST, QA823 계정).

    presign → S3 PUT → PLAYLIST 생성 으로 관리 키를 하나 만들고 같은 노트에 세 갈래 PATCH 를 차례로 쏜 결과입니다.

    보낸 바디 HTTP 저장 후 memorialPhotoUrl
    서버가 내려준 permanent URL 되싣기 200 그대로 유지
    종전 FE 바디 — 미디어 키 생략 200 그대로 유지 (거짓 삭제 재현)
    명시적 "memorialPhotoUrl": null 200 null (삭제됨)

    S3 객체까지 회수됩니다 — 삭제 직전 오브젝트 URL 이 200, 명시적 null PATCH 직후 같은 URL 이 403.

    즉 이 이슈에 남은 것은 FE 화면 몫뿐입니다. 배선(#1596 / PR #1600)은 올라가 있고 CI 전부 초록입니다. 착수 조건은 이제 #1561(PR #1565) 머지 하나입니다 — 삭제가 picked/server 두 칸을 어떻게 비울지가 그 모양 위에서 정해지므로, 지금 손대면 같은 줄을 두 번 씁니다.

    참고로 #1565 가 머지되면 「삭제 = picked 만 비우고 표시는 서버 값으로 복귀」가 되므로, 이 이슈의 작업은 서버 칸까지 비우는 갈래를 추가하는 것이 됩니다 — 그래야 저장 시 videoMediaInput(null) → MediaInput.None → 페이로드 null → 위 표 셋째 줄로 이어집니다.

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

    @github-actions
    Contributor

    이 이슈를 맡은 PR 은 #1620 다 (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 5, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

area:afternote애프터노트 기능 영역enhancementNew feature or request

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions