본문으로 건너뛰기

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최초 작성