Community Context 정의서

Context 정보

항목 내용
Context명 커뮤니티
영문명 Community
도메인 분류 Core
담당 팀 Backend Team
작성일 2025-12-28

개요

Community Context는 FanPulse의 팬 커뮤니티 기능을 담당합니다. 아티스트별 팬 페이지에서 게시글과 댓글을 작성하고, 좋아요와 공유를 통해 소통합니다. AI 기반 콘텐츠 필터링으로 부적절한 게시물을 자동으로 감지하고 관리합니다.

핵심 책임

  1. 게시글 관리: 게시글 CRUD, 이미지/태그 관리
  2. 댓글 관리: 댓글/대댓글 CRUD
  3. 소셜 인터랙션: 좋아요, 저장, 공유
  4. 콘텐츠 필터링: AI 기반 부적절 콘텐츠 감지
  5. 아티스트별 필터링: 팬 페이지 기반 콘텐츠 분류

Ubiquitous Language

한글 영문 정의
게시글 Post 팬이 작성한 커뮤니티 게시물
댓글 Comment 게시글에 대한 의견
대댓글 Reply 댓글에 대한 답글
좋아요 Like 게시글/댓글에 대한 호감 표시
팬 페이지 FanPage 특정 아티스트 전용 커뮤니티 공간
저장 Save 게시글을 보관함에 저장하는 기능

Aggregate 목록

Aggregate 설명 Root Entity
Post 게시글 및 이미지/태그 관리 Post
Comment 댓글 및 대댓글 관리 Comment
Like 좋아요 기록 관리 Like

Aggregate 상세

Post Aggregate

classDiagram
    class Post {
        <<Aggregate Root>>
        +PostId id
        +UserId userId
        +ArtistId artistId
        +Content content
        +List~ImageUrl~ images
        +List~Tag~ tags
        +LikeCount likeCount
        +CommentCount commentCount
        +Status status
        +CreatedAt createdAt
        +UpdatedAt updatedAt
        +create(command: CreatePostCommand): Post
        +update(command: UpdatePostCommand): void
        +delete(): void
        +incrementLikeCount(): void
        +decrementLikeCount(): void
        +incrementCommentCount(): void
        +decrementCommentCount(): void
    }

    class PostId {
        <<Value Object>>
        +UUID value
    }

    class Content {
        <<Value Object>>
        +String value
        +MAX_LENGTH = 2000
        +validate(): Boolean
    }

    class ImageUrl {
        <<Value Object>>
        +String value
        +validate(): Boolean
    }

    class Tag {
        <<Value Object>>
        +String value
        +MAX_LENGTH = 20
    }

    class Status {
        <<Value Object>>
        ACTIVE
        DELETED
        HIDDEN
    }

    class LikeCount {
        <<Value Object>>
        +Long value
        +increment(): LikeCount
        +decrement(): LikeCount
    }

    class CommentCount {
        <<Value Object>>
        +Long value
        +increment(): CommentCount
        +decrement(): CommentCount
    }

    Post *-- PostId
    Post *-- Content
    Post *-- Status
    Post *-- LikeCount
    Post *-- CommentCount
    Post "1" *-- "0..10" ImageUrl
    Post "1" *-- "0..5" Tag

불변식 (Invariants):

  1. 게시글 내용은 1~2000자 사이여야 한다
  2. 이미지는 최대 10개까지 첨부 가능
  3. 태그는 최대 5개, 각 태그는 20자 이하
  4. 삭제된 게시글은 수정 불가
  5. 좋아요/댓글 카운트는 음수가 될 수 없음