User 도메인 개요
1. 소개
User 도메인은 시스템 사용자의 핵심 정보(계정, 프로필, 상태, 유형 등)를 관리하고, 서비스 이용 기간, 개인정보 보호 관련 기능을 제공하며, 다른 도메인과의 사용자 관련 상호작용의 중심점 역할을 수행합니다.
2. 폴더 구조
- technical-docs/ - 기술 문서 (구현 상세, 오류 처리 가이드 등)
- business-rules.md - 비즈니스 규칙
- bounded-context.md - 바운디드 컨텍스트 정의
- domain-model.md - 도메인 모델 (엔티티, 값 객체, Prisma 스키마 등)
- endpoints.md - API 엔드포인트 목록
- event-storming.md - 이벤트 스토밍 결과
- glossary.md - 용어 사전 (필요시 생성)
- overview.md - 도메인 개요 (현재 문서)
- requirements.md - 요구사항
- test-spec.md - 테스트 명세 (필요시 생성)
기술 문서는
technical-docs/디렉토리 내에 구현, 오류 처리, 특정 기능 구현 가이드 등으로 구성됩니다.
3. 유비쿼터스 언어 (Ubiquitous Language)
- User: 시스템 사용자 계정 엔티티
- UserProfile: 사용자 프로필 정보 (언어, 타임존 등)
- UserStatus: 사용자 계정 상태 (ACTIVE, INACTIVE, PENDING, LOCKED, SUSPENDED, BANNED)
- UserType: 사용자 유형 (USER, SERVICE_ACCOUNT)
- UserId: 사용자 고유 식별자 (UUID)
- Email: 사용자 이메일 주소 (Auth 도메인 관리, User는 참조)
- UserName: 사용자 이름
- ServiceUsagePeriod: 사용자 서비스 이용 기간 관련 정보 집합 (시작일, 만료일, 중단/재개 이력 등)
- isSuspended: 서비스 이용 기간 중단 여부 플래그
- expiresAt: (계산된) 서비스 만료일
- UserSuspensionHistory: 서비스 이용 기간 중단/재개 상세 이력
상세 도메인 모델은 도메인 모델 문서를 참조하세요.
4. 주요 기능
- 사용자 계정 관리: 생성, 조회, 수정, 상태 관리 (ACTIVE, INACTIVE 등)
- 사용자 프로필 관리: 이름, 언어, 타임존 등 개인화 정보 관리
- 사용자 유형 관리: 일반 사용자(USER)와 서비스 계정(SERVICE_ACCOUNT) 구분 및 관리
- 서비스 이용 기간 관리: 서비스 이용 기간 설정, 중단, 재개, 만료일 계산 및 관련 이력 관리
- 개인정보 보호 기능 지원: GDPR 등 규정 준수를 위한 데이터 접근 및 삭제/익명화 요청 처리 지원
- 상태/이력 관리: 계정 상태 변경 이력, 서비스 이용 중단 이력 추적
- 타 도메인 연동 지원: IAM(그룹, 플랜 연결 정보), Auth(인증 상태 연계), Sleep(사용자 식별) 등 다른 도메인과 사용자 정보 연동
기능별 상세 구현은
technical-docs/디렉토리 내 관련 문서를 참조하세요.
5. 핵심 정책 및 규칙
- 신규 사용자 계정은
PENDING상태로 시작하며, 이메일 인증 후ACTIVE상태로 전환됩니다. - 서비스 이용 기간 중단 시, 중단된 기간만큼 만료일이 연장됩니다.
- 사용자 상태 변경 및 서비스 이용 기간 변경 시 이력을 기록합니다.
- 개인 식별 정보(PII)는 암호화하여
private스키마에 저장합니다. USER타입 사용자는 반드시 하나 이상의 그룹 및 하나의 플랜에 연결되어야 합니다 (IAM 연동).
전체 정책 및 규칙은 비즈니스 규칙 문서를 참조하세요.
6. 주요 프로세스 흐름 (예시)
6.1 사용자 가입 및 활성화 흐름
6.2 서비스 이용 기간 중단/재개 흐름
7. 기술 스택
- NestJS
- TypeScript
- PostgreSQL (주 데이터 저장소,
private및user스키마 사용) - Prisma (ORM)
- (필요시) Redis (캐싱 등)
- (필요시) GCP Pub/Sub 또는 Kafka (이벤트 메시징)
8. 도메인 모델 개요
User 도메인의 핵심 모델은 User, UserProfile, UserStatusHistory, UserSuspensionHistory 엔티티와 관련 값 객체(UserId, Email, UserStatus 등)로 구성됩니다. User 엔티티는 Auth 도메인과 공유되는 private.users 테이블에 해당하며, User Aggregate의 루트 역할을 합니다.
상세 도메인 모델 및 Prisma 스키마는 도메인 모델 문서를 참조하세요.
9. 컨텍스트 경계
User 도메인은 사용자 정보 관리의 중심 역할을 하며 여러 도메인과 상호작용합니다.
- Upstream (User가 의존하는): Auth(인증), IAM(그룹/플랜 정의), Access Code(가입 시 코드 검증)
- Downstream (User 정보를 사용하는): Sleep(사용자 식별), Learning(사용자 식별), Audit(로그 기록)
- Peer (상호 협력): IAM (사용자-그룹/플랜 연결 정보 관리)
바운디드 컨텍스트에 대한 상세 내용은 바운디드 컨텍스트 문서를 참조하세요.
10. 도메인 이벤트
- UserCreated, UserActivated, UserDeactivated, UserReactivated: 계정 생명주기 이벤트
- UserProfileUpdated, UserNameUpdated, UserLanguagePreferenceUpdated, UserTimezoneUpdated: 프로필 변경 이벤트
- UserLocked, UserUnlocked, UserSuspended, UserUnsuspended, UserBanned: 계정 상태 변경 이벤트 (관리/시스템)
- UserAssignedToGroup, UserRemovedFromGroup, UserLinkedToPlan, UserUnlinkedFromPlan: IAM 연동 결과 이벤트
- ServicePeriodSuspended, ServicePeriodResumed, ServicePeriodExpired: 서비스 이용 기간 상태 변경 이벤트
- UserDataDeletionRequested, UserDataAccessRequested: 개인정보 관련 요청 이벤트
전체 이벤트 목록 및 설명은 이벤트 스토밍 문서를 참조하세요.
11. 모니터링 및 감사 (예상)
- 사용자 상태 변경 빈도 및 추이
- 서비스 중단/재개 요청 빈도
- 만료 예정 사용자 수
- API 응답 시간 (사용자 조회, 수정 등)
- 개인정보 관련 요청 처리 현황
- 관련 도메인(IAM, Auth) 연동 성공/실패율
- 주요 상태 변경 및 개인정보 관련 작업에 대한 감사 로그 ([Audit 도메인] 연동)
12. 핵심 요구사항
- 사용자 계정 및 프로필 정보의 정확한 관리
- 정의된 규칙에 따른 사용자 상태 및 서비스 이용 기간 관리
- GDPR 등 개인정보 보호 규정 준수
- IAM 도메인과의 연동을 통한 역할 및 플랜 기반 접근 제어 지원
- 안정적인 성능 및 확장성 보장 (최소 1만 사용자 지원)
상세 요구사항은 요구사항 문서를 참조하세요.
13. 관련 문서
TBD
14. 변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-07-30 | AI Assistant | 최초 작성 |