Skip to content

요구 사항 목록

seokjin8678 edited this page Dec 1, 2023 · 3 revisions

회원(Member)

  • 닉네임, 프로필 사진, 등급, 자기소개, 회원 스탯, 경험치, 가입일, 탈퇴 유무를 가진다.
  • 닉네임
    • 공백이 아닌 문자열이다.
    • 변경할 수 있다.
    • 중복될 수 없다.
  • 프로필 사진
    • png, jpg로 끝나는 문자열이다.
    • null 값이 될 수 있다.
  • 자기 소개
    • null 또는 공백일 수 있는 문자열이다.
  • Naver OAuth2를 사용한다.
  • Soft Delete를 사용한다.

등급(Grade)

  • 회원의 등급(권한)을 나타내는 Enum이다.
  • 회원(MEMBER), 관리자(MODERATOR), 최고관리자(ADMIN)으로 나뉜다.

회원 스탯(MemberStatus)

  • 레벨, 경험치를 가진다.
  • 회원과 1:1 관계를 가지며, 같은 생명 주기를 가진다.
  • 레벨
    • 1 이상의 정수이다.
    • 자신의 최대 경험치 수치를 계산할 수 있다.
  • 경험치
    • 0 이상의 정수이다.
  • 경험치가 현재 레벨의 최대 경험치 수치를 넘으면 레벨을 증가시킨다.
    • 레벨이 증가되면, 현재 경험치 = (이전 레벨 최대 경험치 수치 - 현재 경험치) 수식을 적용한다.

게시판(Board)

  • 이름, 분류 목록을 가진다.
  • 이름
    • null 또는 공백일 수 없는 문자열이다.
  • 분류 목록
    • 분류 목록이다.

분류(Category)

  • 게시판의 분류를 나타내는 Enum이다.

게시글(Post)

  • 제목, 작성자(회원), 게시판, 분류, 댓글 허용 유무, 조회수, 추천, 비추천, 작성일, 삭제 유무를 가진다.
  • 생성 시 분류게시판이 가진 분류의 목록에 포함되지 않으면 예외를 던진다.

게시글 상세(PostDetail)

  • 내용을 가진다.
  • 게시글과 1:1 관계를 가지며, 같은 생명 주기를 가진다.

게시글 사진(PostImage)

  • 링크 주소, 첨부 상태, 삭제 유무를 가진다.
  • 게시글과 N:1 관계를 가지며, 같은 생명 주기를 가진다.

첨부 상태(AttachedStatus)

  • 게시글 사진의 상태를 나타내는 Enum이다.
  • PRE_ATTACHED, ATTACHED로 나뉜다.

댓글(Comment)

  • 내용, 작성자(회원), 삭제 유무를 가진다.
  • TODO: 대댓글을 구현한다.

Clone this wiki locally