본문으로 건너뛰기

Site 도메인 이벤트 스토밍

본 문서는 Site 도메인 요구사항(requirements.md)을 기반으로 Event Storming 방식으로 분석한 결과입니다.

목적

Site 도메인은 의료기관(사이트)의 등록 요청을 관리하고, 승인된 사이트의 생명주기(생성, 수정, 삭제)를 관리하는 도메인입니다.


1. 도메인 이벤트

Site 도메인에서 발생하는 모든 도메인 이벤트를 정의합니다.

1.1 사이트 등록 요청 관련 이벤트

EventDescription
SiteRegistrationRequested사이트 등록 요청이 생성되었다.
SiteRegistrationApproved사이트 등록 요청이 승인되었다.
SiteAdminAccountCreated사이트 관리자 계정이 생성되었다.

1.2 사이트 관리 관련 이벤트

EventDescription
SiteCreated사이트가 생성되었다.
SiteUpdated사이트 정보가 수정되었다.
SiteSoftDeleted사이트가 소프트 삭제되었다. (deletedAt 기록)
SiteHardDeleted사이트가 물리적으로 삭제되었다.

2. 정책 (When → Then)

이벤트 발생 후 시스템이 수행해야 할 정책을 정의합니다.

2.1 사이트 등록 요청 정책

WhenThen설명
SiteRegistrationRequestedSiteAdminAccountCreated 발생등록 요청 시 관리자 계정 자동 생성 (medi.site-admin 그룹 할당)
SiteRegistrationApprovedSiteCreated 발생승인된 등록 요청으로부터 실제 사이트 생성
SiteRegistrationApproved (선택된 계정만)SiteAdminAccountCreated 발생승인 시 선택된 계정들에 대해 실제 계정 활성화

2.2 사이트 관리 정책

WhenThen설명
SiteCreated등록 요청 ID 연결 (있는 경우)사이트 생성 시 등록 요청과의 관계 설정
SiteSoftDeleteddeletedAt 타임스탬프 기록소프트 삭제 시 삭제 시간 자동 기록

3. 액터와 명령

각 액터가 수행할 수 있는 명령과 결과 이벤트를 정의합니다.

3.1 사이트 등록 요청 관리 명령

CommandActorEvent
RequestSiteRegistrationUserSiteRegistrationRequested
ApproveSiteRegistrationPlatformAdminSiteRegistrationApproved

3.2 사이트 관리 명령

CommandActorEvent
CreateSitePlatformAdminSiteCreated
UpdateSitePlatformAdminSiteUpdated
SoftDeleteSitePlatformAdminSiteSoftDeleted
HardDeleteSitePlatformAdminSiteHardDeleted

4. Aggregate 매핑

각 명령과 이벤트가 어느 Aggregate에서 처리되는지 정의합니다.

4.1 SiteRegistration Aggregate

트랜잭션 경계: 사이트 등록 요청의 생명주기(요청 생성부터 승인까지)를 원자적으로 관리

담당 Command:

  • RequestSiteRegistration
  • ApproveSiteRegistration

발행 Event:

  • SiteRegistrationRequested
  • SiteRegistrationApproved
  • SiteAdminAccountCreated

적용된 정책:

  • SiteRegistrationRequested → SiteAdminAccountCreated
  • SiteRegistrationApproved → SiteCreated
  • SiteRegistrationApproved (선택된 계정만) → SiteAdminAccountCreated

비즈니스 규칙:

  • 관리자 계정 이메일은 중복될 수 없음
  • 관리자 계정은 medi.site-admin 그룹에 자동 할당됨
  • 승인 시 선택된 계정만 활성화됨
  • 승인자의 계정 ID가 자동으로 기록됨

4.2 Site Aggregate

트랜잭션 경계: 사이트 정보의 생명주기(생성, 수정, 삭제)를 원자적으로 관리

담당 Command:

  • CreateSite
  • UpdateSite
  • SoftDeleteSite
  • HardDeleteSite

발행 Event:

  • SiteCreated
  • SiteUpdated
  • SiteSoftDeleted
  • SiteHardDeleted

적용된 정책:

  • SiteCreated → 등록 요청 ID 연결 (선택적)
  • SiteSoftDeleted → deletedAt 타임스탬프 기록

비즈니스 규칙:

  • 사이트명(name)은 필수 항목
  • 사이트 코드(code), 설명(description)은 선택 항목
  • 임상연구 여부(clinicalResearch), CRM 관리 여부(managedByCrm) 설정 가능
  • 매칭 키워드(matchingKeywords) 배열 관리 가능
  • 소프트 삭제 시 deletedAt 필드만 설정됨
  • 하드 삭제 시 데이터베이스에서 물리적으로 제거됨

5. 타임라인 / 프로세스 흐름

사이트 등록 및 관리의 주요 워크플로우를 시각화합니다.


변경 이력

버전날짜작성자변경 내용
0.58.02025-12-16dalia@weltcorp.com최초 작성