Skip to content

refactor(afternote): 종류별 생성 payload를 sealed interface로 묶는다 #1956

Closed

Description

@OnlyReadOneBook

작업 유형

refactor — 동작 변경 없는 구조·책임·경계 개선

주 담당 모듈

afternote — 애프터노트

개요

애프터노트의 종류별 생성 payload를 sealed interface로 묶어, 생성 요청이 지원되는 종류 중 하나라는 계약을 도메인 타입으로 표현한다. 각 종류의 전용 필드는 개별 구현체에 유지하고, 생성 요청을 공통 타입으로 전달·처리하는 경계에서 exhaustive when으로 분기 누락을 확인할 수 있게 한다.

현재 CreateAccountPayload는 SOCIAL·BUSINESS가 공유하고, CreateGalleryPayload 및 추억 노트 생성 payload는 별도로 존재한다. 필드가 비슷하다는 이유로 모든 필드를 하나의 data class에 합치는 것이 아니라, 종류별 유효한 데이터 조합을 보존하는 합 타입으로 정리한다.

작업 범위

  • 기존 CreateAfternoteInput 등 생성 요청을 묶는 타입의 현황을 먼저 확인하고, 역할이 겹치는 sealed 계층을 중복 도입하지 않는다.
  • 지원하는 생성 종류를 sealed interface의 구현체로 표현하고, 에디터에서 생성 요청을 만드는 경계와 이를 소비하는 저장 경로에 적용한다.
  • SOCIAL·BUSINESS를 어떻게 구별할지 명시한다. 동일한 계정 필드는 공통 데이터 객체로 재사용할 수 있지만, Account 하나로 묶어 종류 구분이 사라지지 않게 한다.
  • 공통 필드를 부모 인터페이스에 일괄 노출하지 않고, 실제 공통 소비 계약에 필요한 경우에만 올린다.
  • 종류별 전용 필드와 기존 서버 요청 계약을 보존한다.

완료 조건

  • 기존 생성 입력 타입과 책임이 중복되지 않는 sealed 생성 요청 모델이 적용된다.
  • 종류별 필수 데이터와 전용 필드가 각 구현체에 유지된다.
  • SOCIAL·BUSINESS를 포함한 지원 종류의 매핑이 명확하고, 공통 처리 지점에서 분기를 빠짐없이 처리한다.
  • 생성 요청 소비 경로가 새 모델을 사용하며, 불필요해진 기존 래퍼·변환은 제거된다.
  • 종류별 서버 요청 매핑과 생성 동작이 유지되는지 적절한 컴파일·회귀 검증으로 확인한다.

참고

2026-09-08 현재 구현을 다시 대조한 결과 아래 완료 조건은 기존 CreateAfternoteInput과 소비 경로가 이미 충족한다. 중복 sealed 계층이나 종류별 payload 평탄화를 새로 도입하지 않고 완료한다.

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

Metadata

Metadata

Labels

area:afternote애프터노트 기능 영역refactor동작 변경 없이 코드 구조·책임·경계를 개선하는 작업

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions