Skip to content

feat(afternote): 임시저장 조회·도메인·요청 payload 계약을 분리한다 #1762

Closed

Description

@OnlyReadOneBook

작업 유형

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

주 담당 모듈

afternote — 애프터노트

개요

서버 임시저장의 조회·도메인 변환·요청 payload를 구현한다(PR #1763). 목록 화면·홈 진입·이어쓰기 UI는 PM 결정 전 구현 범위에서 제외한다. #1792는 결정만 추적하며 #1791의 구현 예약과 PR #1827은 철회했다.

  • 발행 목록은 draftOnly=false, 임시저장은 true로 명시한다. FE API는 Boolean = false이며 null이라는 세 번째 조회 모드를 만들지 않는다(refactor(afternote): 목록 조회 draftOnly의 불필요한 nullable 제거 #1957).
  • 현재 wire DTO 하나에서 발행 Detail과 이어쓰기용 DraftDetail을 각각 변환한다. draft의 미작성 playlist·credentials를 허용한다.
  • 발행 PLAYLIST의 playlist 부재는 실패시킨다. 배포된 계약과의 호환을 위한 발행 계정의 빈 값 처리는 유지하며, credentials 필수값과 종류별 wire 계약의 최종 대조는 BE #288에 의존하는 #1959로 분리한다.
  • 생성·수정 payload에 isDraft를 전달한다(생성 기본 false, 수정 생략은 기존 상태 유지).
  • 현재 서버 계약의 목록 데이터는 PagingData로 제공한다. 화면·ViewModel·홈 헤더의 구현 방식은 미리 정하지 않는다.

완료 조건

  • 미작성 임시저장을 DraftDetail로 읽고 발행 경로와 구분한다.
  • 목록 API가 false/true 두 조회 모드를 명시한다.
  • Paging 목록 데이터와 isDraft 생성·수정 wire 계약을 제공한다.
  • 데이터·화면·아키텍처 검사와 앱 컴파일을 통과한다.

선행과 후속

참고

애프터노트 임시저장 시안 부재를 타임레터 패턴 차용 승인으로 간주하지 않는다. 표시 항목·총계·선택·삭제와 이동 흐름은 #1792에서 PM에게 확인하며, 이 이슈의 서버 계약 구현과 구분한다.

Activity

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

    @github-actions
    Contributor

    이 이슈를 맡은 PR 은 #1763 다 (base refactor/1746-memorial-content-flatten).

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

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

  3. OnlyReadOneBook commented on Sep 3, 2026

    @OnlyReadOneBook
    CollaboratorAuthor

    완료 조건 「발행 상세는 playlist·credentials 부재를 계약 위반으로 실패시킨다(폴백 없음)」는 지금 실서버 기준으로 위험합니다. PR #1763 리뷰에서 드러난 것을 남깁니다.

    그 조건의 근거는 서버가 응답을 조립하며 필수값을 강제한다는 것이었는데, 그 강제는 BE main 에만 있습니다.

    브랜치 AfternotedetailResponse
    origin/main oneOf 3분기(Draft/Published/PublishedPlaylist) + requirePublishedPlaylist + requirePublishedCredentials
    origin/release (실서버) 평면 레코드. oneOf 분리도 두 require* 도 없음

    main 이 release 보다 133커밋 앞서 있습니다. 그래서 지금 폴백을 걷으면 실서버에서 발행 SOCIAL·BUSINESS 상세가 영영 안 열릴 수 있습니다.

    이 PR 이 한 것

    기준을 「서버가 보장하는가」에서 **「빠졌을 때 화면이 성립하는가」**로 바꿔 매퍼 KDoc 에 적었습니다.

    • memorial(PLAYLIST 본문) — 없으면 보여줄 본문이 없으므로 실패로 옮긴다(이 조건은 닫힘)
    • credentials(SOCIAL·BUSINESS) — 없어도 제목·남기실 말씀·수신자·처리방법은 성립하므로 빈 값으로 낮춘다(열어 둠)

    참고로 credentials 를 읽는 경로는 SOCIAL_NETWORK·BUSINESS 두 갈래뿐이라 GALLERY 는 애초에 이 경로를 타지 않습니다. BE 의 강제 범위와도 같습니다.

    남은 일

    release 가 main 을 따라잡은 뒤 toPublishedCredentials() 를 실패로 좁히면 이 완료 조건이 원래 뜻대로 닫힙니다. 그 전에는 좁히지 않는 편이 맞습니다.

  4. changed the title [-]feat(afternote): 임시저장을 읽고 찾아가는 축 — 상세·목록 조회와 임시저장 목록 화면 (#808 분리)[/-] [+]feat(afternote): 임시저장 조회·도메인·요청 payload 계약을 분리한다[/+] on Sep 8, 2026
  5. github-actions commented on Sep 13, 2026

    @github-actions
    Contributor

    Auto-closed by merge of #1985 into feat/1745-draft-detail.

  6. removed
    pr-open이 이슈를 구현하는 PR 이 열려 있다 — base 가 기본 브랜치가 아니어도 드러낸다
    on Sep 13, 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