콘텐츠로 이동

User Schema

사용자 정보를 저장하는 스키마입니다.

Fields

symId

  • 타입: String
  • 필수: true
  • 고유: true
  • 설명: Symverse 계정의 고유 ID

nickName

  • 타입: String
  • 필수: false
  • 설명: 사용자의 닉네임 (선택사항)
  • 제약: 도메인 내에서 유일해야 함

domain

  • 타입: ObjectId (Domain 참조)
  • 필수: true
  • 설명: 사용자가 속한 도메인 정보
  • 참조: Domain 컬렉션의 _id

role

  • 타입: String (enum)
  • 기본값: 'USER'
  • 가능한 값:
  • USER: 일반 사용자
  • DOMAIN_USER: 도메인 사용자
  • DOMAIN_ADMIN: 도메인 관리자
  • SUPER_ADMIN: 최고 관리자
  • 설명: 사용자의 권한 등급

referralCode

  • 타입: String
  • 고유: true
  • 설명: 자동 생성되는 5자리 숫자 추천 코드 (10000-99999)
  • 특징: 시스템 전체에서 유일한 값

referrerCode

  • 타입: String
  • 설명: 추천인의 추천 코드

parentId

  • 타입: ObjectId (User 참조)
  • 설명: 추천인의 사용자 ID
  • 참조: User 컬렉션의 _id
  • 특징: 도메인 관리자가 기본 추천인으로 설정됨

referralCount

  • 타입: Number
  • 기본값: 0
  • 설명: 사용자가 추천한 총 인원 수
  • 특징: 하위 사용자 추가 시 자동 증가

refreshToken

  • 타입: String
  • 설명: JWT 리프레시 토큰
  • 용도: 액세스 토큰 갱신에 사용

tronAddress

  • 타입: String
  • 필수: true
  • 설명: 사용자의 TRON 지갑 주소
  • 형식: TRC20 주소 형식

rewardBalance

  • 타입: Number
  • 기본값: 0
  • 설명: 사용자의 보상 잔액
  • 특징: 추천 보상 지급 시 증가

referralPath

  • 타입: [String]
  • 기본값: []
  • 설명: 추천인 경로 (추천 계보)
  • 용도: 다단계 추천 관계 추적

isActive

  • 타입: Boolean
  • 기본값: true
  • 설명: 사용자 계정 활성화 상태
  • 용도: 계정 잠금/활성화 관리

level

  • 타입: Number
  • 기본값: 0
  • 설명: 사용자의 레벨
  • 용도: 추천 트리에서의 깊이 표시

인덱스

복합 인덱스

  • { domain: 1, symId: 1 }: 도메인별 symId 유일성 보장
  • { domain: 1, nickName: 1 }: 도메인별 닉네임 유일성 보장

단일 인덱스

  • { domain: 1 }: 도메인별 조회 최적화
  • { parentId: 1 }: 추천인 기준 조회 최적화
  • { referralCode: 1 }: 추천 코드 유일성 보장

Virtual Fields

domainInfo

  • 참조: Domain
  • 로컬 필드: domain
  • 외래 필드: _id
  • 특징: justOne (1:1 관계)
  • 설명: 도메인 상세 정보를 가상 필드로 조회 가능
  • 용도: 도메인 정보 populate 시 사용

타임스탬프

  • createdAt: 사용자 생성 시간
  • updatedAt: 정보 수정 시간
  • 자동생성: true

참고사항

  1. symId와 referralCode는 시스템 전체에서 유일해야 함
  2. nickName은 도메인 내에서만 유일하면 됨
  3. 모든 사용자는 반드시 하나의 도메인에 속해야 함
  4. 추천인(parentId)은 같은 도메인 내의 사용자여야 함
  5. referralCode는 백엔드에서 자동 생성되며 수정 불가