본문으로 건너뛰기

Access Code 도메인 이벤트 스토밍

개요

본 문서는 Access Code 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. 도메인 전문가, 개발자, 그리고 이해관계자들이 참여하여 도출된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.

바운디드 컨텍스트 참조

Access Code 도메인과 다른 도메인(특히 Auth 도메인) 간의 협력 관계는 bounded-context.md 문서에 상세히 기술되어 있습니다. 이 문서에서는 주로 Access Code 도메인 내부의 이벤트와 명령에 집중합니다.

참고: Auth 도메인과의 책임 분리 및 협력 방식에 대한 자세한 내용은 bounded-context.md 문서의 "3. 컨텍스트 매핑" 및 "3.1 Auth Domain과의 관계" 섹션을 참조하세요.

도메인 이벤트

1. 코드 생명주기 이벤트

1.1 백엔드 이벤트

이벤트설명트리거
AccessCodeCreated접근 코드 생성됨 (그룹/플랜 포함)CreateAccessCode
AccessCodeActivated접근 코드 활성화됨ActivateAccessCode
AccessCodeDeactivated접근 코드 비활성화됨DeactivateAccessCode
AccessCodeExpired접근 코드 만료됨시스템 스케줄러
AccessCodeDeleted접근 코드 삭제됨DeleteAccessCode
AccessCodeStatusChanged접근 코드 상태 변경됨ChangeAccessCodeStatus
AccessCodeRevoked접근 코드 철회됨RevokeAccessCode

1.2 프론트엔드 이벤트

이벤트설명트리거
AccessCodeCreationRequested접근 코드 생성 요청됨RequestAccessCodeCreation
AccessCodeActivationRequested접근 코드 활성화 요청됨RequestAccessCodeActivation
AccessCodeDeactivationRequested접근 코드 비활성화 요청됨RequestAccessCodeDeactivation
AccessCodeDeletionRequested접근 코드 삭제 요청됨RequestAccessCodeDeletion
AccessCodeStatusDisplayed접근 코드 상태 표시됨DisplayAccessCodeStatus

2. 코드 발급 이벤트

2.1 백엔드 이벤트

이벤트설명트리거
AccessCodeReceivedFromInsurance보험사로부터 코드 수신됨ReceiveInsuranceCode
AccessCodeIssuedForSample견본품용 접근 코드 발급됨IssueAccessCodeForSample
AccessCodeIssuedForDemo데모용 접근 코드 발급됨IssueAccessCodeForDemo
AccessCodeIssuedForDevelopment개발용 접근 코드 발급됨IssueAccessCodeForDevelopment
AccessCodeIssuedFromClinicDashboard진료 대시보드에서 접근 코드 발급됨IssueAccessCodeFromClinicDashboard
AccessCodeIssuedFromOCRInvoiceOCR 인식 진료비 서류에서 접근 코드 발급됨IssueAccessCodeFromOCRInvoice
AccessCodeIssuedByInsurance보험사에서 접근 코드 발급됨IssueAccessCodeByInsurance
AccessCodeIssueDeniedDuringTreatment치료 중 접근 코드 발급 거부됨CheckPatientExistingCodes

2.2 프론트엔드 이벤트

이벤트설명트리거
AccessCodeIssuanceProgressDisplayed발급 진행 상태 표시됨DisplayIssuanceProgress
AccessCodeIssuanceResultDisplayed발급 결과 표시됨DisplayIssuanceResult
AccessCodeIssuanceErrorHandled발급 오류 처리됨HandleIssuanceError

3. 코드 사용 이벤트

3.1 백엔드 이벤트

이벤트설명트리거
AccessCodeUsed접근 코드 사용됨ValidateAccessCode
AccessCodeValidated접근 코드 검증됨ValidateAccessCode
AccessCodeExpiredRejected만료된 접근 코드 거부됨ValidateAccessCode
AccessCodeInvalidRejected유효하지 않은 접근 코드 거부됨ValidateAccessCode
AccessCodeMetadataValidationFailed접근 코드 메타데이터 검증 실패ValidateAccessCode
AccessCodeMaxAttemptsExceeded최대 시도 횟수 초과됨HandleExceededAttempts

3.2 프론트엔드 이벤트

이벤트설명트리거
AccessCodeInputValidated접근 코드 입력 검증됨ValidateAccessCodeInput
AccessCodeResultDisplayed접근 코드 검증 결과 표시됨DisplayAccessCodeResult
AccessCodeInputErrorDisplayed접근 코드 입력 오류 표시됨DisplayAccessCodeInputError

4. 대량 관리 이벤트

4.1 백엔드 이벤트

이벤트설명트리거
AccessCodeBatchCreated접근 코드 배치 생성됨CreateBatchAccessCodes
AccessCodeBulkIssued접근 코드 대량 발급됨IssueBulkAccessCodes
AccessCodeBatchDeactivated접근 코드 배치 비활성화됨DeactivateBatchAccessCodes
AccessCodePolicyUpdated접근 코드 정책 업데이트됨UpdateAccessCodePolicy
AccessCodeStatsUpdated접근 코드 통계 업데이트됨GenerateAccessCodeStats

4.2 프론트엔드 이벤트

이벤트설명트리거
BatchProgressDisplayed배치 진행 상태 표시됨DisplayBatchProgress
BatchOperationConfirmed배치 작업 확인됨ConfirmBatchOperation
BatchResultsDisplayed배치 결과 표시됨DisplayBatchResults

5. UI 관련 이벤트

5.1 백엔드 이벤트

이벤트설명트리거
AccessCodeInputValidated접근 코드 입력 검증됨ValidateAccessCodeInput
ProcessUIActionUI 액션 처리됨-
ValidateUserPermission사용자 권한 검증됨-

5.2 프론트엔드 이벤트

이벤트설명트리거
RenderAccessCodeWithHyphens하이픈이 포함된 형식으로 코드 표시됨RenderAccessCodeWithHyphens
DisplayAdminDashboard관리자 대시보드 표시됨DisplayAdminDashboard
RenderUsageStatistics사용 통계 시각화됨RenderUsageStatistics
DisplayAccessCodeResult코드 검증 결과 표시됨DisplayAccessCodeResult
DisplayAccessCodeInputError사용자 친화적 오류 메시지 표시됨DisplayAccessCodeInputError
PerformBatchOperationConfirmation대량 작업 수행 전 확인 요청됨-

6. 보고서 관련 이벤트

6.1 백엔드 이벤트

이벤트설명트리거
DailyUsageReportGenerated일별 사용 보고서 생성됨GenerateDailyUsageReport
WeeklyUsageReportGenerated주별 사용 보고서 생성됨GenerateWeeklyUsageReport
MonthlyUsageReportGenerated월별 사용 보고서 생성됨GenerateMonthlyUsageReport
SourceUsageReportGenerated출처별 사용 보고서 생성됨GenerateSourceUsageReport
GroupUsageReportGenerated그룹별 사용 보고서 생성됨GenerateGroupUsageReport
IssueSourceUsageReportGenerated발급 출처별 사용 보고서 생성됨GenerateIssueSourceUsageReport
ExpiringAccessCodesReportGenerated만료 예정 코드 보고서 생성됨GenerateExpiringAccessCodesReport
AbnormalAttemptsReportGenerated비정상 시도 보고서 생성됨GenerateAbnormalAttemptsReport
SuccessFailureRatioReportGenerated성공/실패 비율 보고서 생성됨GenerateSuccessFailureRatioReport

6.2 프론트엔드 이벤트

이벤트설명트리거
ReportDashboardDisplayed보고서 대시보드 표시됨DisplayReportDashboard
ReportExportedToPDF보고서 PDF 내보내기됨ExportReportToPDF
ReportViewCustomized보고서 뷰 커스터마이즈됨CustomizeReportView
ReportDataFiltered보고서 데이터 필터링됨FilterReportData

7. 알림 관련 이벤트

7.1 백엔드 이벤트

이벤트설명트리거
AccessCodeIssuedNotificationSent코드 발급 알림 전송됨SendAccessCodeIssuedNotification
BatchCompletionNotificationSent대량 발급 완료 알림 전송됨SendBatchCompletionNotification
AccessCodeExpirationNotificationSent만료 예정 코드 알림 전송됨SendAccessCodeExpirationNotification
AbnormalAttemptsNotificationSent비정상 시도 알림 전송됨SendAbnormalAttemptsNotification
BatchFailureNotificationSent배치 처리 실패 알림 전송됨SendBatchFailureNotification

7.2 프론트엔드 이벤트

이벤트설명트리거
NotificationDisplayed알림 표시됨DisplayNotification
NotificationPreferencesConfigured알림 설정 구성됨ConfigureNotificationPreferences
NotificationHistoryDisplayed알림 이력 표시됨DisplayNotificationHistory
NotificationTemplatesManaged알림 템플릿 관리됨ManageNotificationTemplates

8. TimeMachine 연동 이벤트

8.1 백엔드 이벤트

이벤트설명트리거
AccessCodeVirtualTimeInitializedAccess Code의 가상 시간 초기화됨Access Code 생성 시 TimeMachine 활성화
VirtualTimeInitializedForUser사용자 등록 시 가상 시간 초기화됨사용자 등록 시 TimeMachine 활성화
AccessCodeExpirationRecalculated가상 시간 변경으로 만료 시간 재계산됨가상 시간 변경
BatchVirtualTimeSet배치에 가상 시간 설정됨배치 생성 시 TimeMachine 설정
TimeChangedForAccessCode특정 Access Code의 시간 변경됨TimeMachine의 시간 변경 이벤트
TimeMachineSettingsSynchronizedTimeMachine 설정이 Access Code와 동기화됨설정 변경 시

8.2 프론트엔드 이벤트

이벤트설명트리거
TimeMachineToggleRequested코드에 대한 TimeMachine 토글 요청됨토글 버튼 클릭
VirtualTimeDisplayedUI에 가상 시간 표시됨TimeMachine 활성화 상태
TimeMachineSettingsUpdatedTimeMachine 설정 업데이트됨설정 변경
CodeExpiryWithVirtualTimeDisplayed가상 시간 기준 만료 시간 표시됨코드 상세 정보 보기
VirtualTimeWarningDisplayed가상 시간 사용 중 경고 표시됨TimeMachine 활성화 상태

명령(Commands)

1. 코드 관리 명령

1.1 백엔드 명령

명령설명결과 이벤트
CreateAccessCode새로운 접근 코드 생성 (그룹/플랜 지정 가능)AccessCodeCreated
ActivateAccessCode접근 코드 활성화AccessCodeActivated
DeactivateAccessCode접근 코드 비활성화AccessCodeDeactivated
DeleteAccessCode접근 코드 삭제AccessCodeDeleted
ValidateAccessCode접근 코드 유효성 검증AccessCodeValidated
RevokeAccessCode사용 중인 접근 코드 철회AccessCodeRevoked
ChangeAccessCodeStatus접근 코드 상태 변경AccessCodeStatusChanged

1.2 프론트엔드 명령

명령설명결과 이벤트
RequestAccessCodeCreation접근 코드 생성 요청AccessCodeCreated
RequestAccessCodeActivation접근 코드 활성화 요청AccessCodeActivated
RequestAccessCodeDeactivation접근 코드 비활성화 요청AccessCodeDeactivated
RequestAccessCodeDeletion접근 코드 삭제 요청AccessCodeDeleted
DisplayAccessCodeStatus접근 코드 상태 표시-
ConfirmAccessCodeAction접근 코드 작업 확인-

2. 코드 발급 명령

2.1 백엔드 명령

명령설명결과 이벤트
IssueAccessCodeForSample견본품용 접근 코드 발급AccessCodeIssuedForSample
IssueAccessCodeForDemo데모용 접근 코드 발급AccessCodeIssuedForDemo
IssueAccessCodeForDevelopment개발용 접근 코드 발급AccessCodeIssuedForDevelopment
IssueAccessCodeFromClinicDashboard진료 대시보드에서 접근 코드 발급AccessCodeIssuedFromClinicDashboard
IssueAccessCodeFromOCRInvoiceOCR 인식 진료비 서류에서 접근 코드 발급AccessCodeIssuedFromOCRInvoice
IssueAccessCodeByInsurance보험사에서 접근 코드 발급AccessCodeIssuedByInsurance
VerifyAccessCode접근 코드 검증AccessCodeValidated
HandleExceededAttempts허용 시도 횟수 초과 처리AccessCodeMaxAttemptsExceeded
CheckPatientExistingCodes환자의 기존 발급 코드 확인AccessCodeIssueDeniedDuringTreatment

2.2 프론트엔드 명령

명령설명결과 이벤트
RequestSampleAccessCode견본품용 코드 발급 요청AccessCodeIssuedForSample
RequestDemoAccessCode데모용 코드 발급 요청AccessCodeIssuedForDemo
RequestDevelopmentAccessCode개발용 코드 발급 요청AccessCodeIssuedForDevelopment
DisplayIssuanceProgress발급 진행 상태 표시-
DisplayIssuanceResult발급 결과 표시-
HandleIssuanceError발급 오류 처리 및 표시-

3. 대량 관리 명령

3.1 백엔드 명령

명령설명결과 이벤트
CreateBatchAccessCodes다수의 접근 코드 일괄 생성 (그룹/플랜 지정 가능)AccessCodeBatchCreated
IssueBulkAccessCodes다수의 접근 코드 일괄 발급AccessCodeBulkIssued
DeactivateBatchAccessCodes다수의 접근 코드 일괄 비활성화AccessCodeBatchDeactivated
UpdateAccessCodePolicy접근 코드 정책 업데이트AccessCodePolicyUpdated
GenerateAccessCodeStats접근 코드 통계 생성AccessCodeStatsUpdated

3.2 프론트엔드 명령

명령설명결과 이벤트
RequestBatchCreation배치 생성 요청AccessCodeBatchCreated
DisplayBatchProgress배치 진행 상태 표시-
ConfirmBatchOperation배치 작업 확인-
DisplayBatchResults배치 결과 표시-

4. 조회 관리 명령

4.1 백엔드 명령

명령설명결과 이벤트
GetAllAccessCodes모든 접근 코드 조회AllAccessCodesRetrieved
GetActiveAccessCodes사용 가능한 접근 코드 조회ActiveAccessCodesRetrieved
GetUsedAccessCodes사용 중인 접근 코드 조회UsedAccessCodesRetrieved

4.2 프론트엔드 명령

명령설명결과 이벤트
DisplayAccessCodeList접근 코드 목록 표시-
FilterAccessCodes접근 코드 필터링-
SortAccessCodes접근 코드 정렬-
ExportAccessCodes접근 코드 내보내기-

5. 보안 관리 명령

5.1 백엔드 명령

명령설명결과 이벤트
BlockAccessCode접근 코드 차단AccessCodeBlocked
UnblockAccessCode접근 코드 차단 해제AccessCodeUnblocked
ResetFailureCount실패 횟수 초기화AccessCodeUnblocked

5.2 프론트엔드 명령

명령설명결과 이벤트
DisplaySecurityStatus보안 상태 표시-
RequestCodeUnblock코드 차단 해제 요청AccessCodeUnblocked
DisplaySecurityWarning보안 경고 표시-

6. UI 관련 명령

6.1 백엔드 명령

명령설명결과 이벤트
ValidateAccessCodeInput사용자 입력 코드 형식 검증AccessCodeInputValidated
ProcessUIActionUI 액션 처리-
ValidateUserPermission사용자 권한 검증-

6.2 프론트엔드 명령

명령설명결과 이벤트
RenderAccessCodeWithHyphens하이픈이 포함된 형식으로 코드 표시AccessCodeWithHyphensRendered
DisplayAdminDashboard관리자 대시보드 표시AdminDashboardRendered
RenderUsageStatistics사용 통계 시각화AccessCodeStatsRendered
DisplayAccessCodeResult코드 검증 결과 표시AccessCodeResultDisplayed
DisplayAccessCodeInputError사용자 친화적 오류 메시지 표시AccessCodeInputErrorDisplayed
PerformBatchOperationConfirmation대량 작업 수행 전 확인 요청-

7. 보고서 생성 명령

7.1 백엔드 명령

명령설명결과 이벤트
GenerateDailyUsageReport일별 코드 사용 통계 보고서 생성DailyUsageReportGenerated
GenerateWeeklyUsageReport주별 코드 사용 통계 보고서 생성WeeklyUsageReportGenerated
GenerateMonthlyUsageReport월별 코드 사용 통계 보고서 생성MonthlyUsageReportGenerated
GenerateSourceUsageReport출처별 코드 사용 현황 보고서 생성SourceUsageReportGenerated
GenerateGroupUsageReport그룹별 코드 사용 현황 보고서 생성GroupUsageReportGenerated
GenerateIssueSourceUsageReport발급 출처별 코드 사용 현황 보고서 생성IssueSourceUsageReportGenerated
GenerateExpiringAccessCodesReport만료 예정 코드 목록 보고서 생성ExpiringAccessCodesReportGenerated
GenerateAbnormalAttemptsReport비정상 시도 보고서 생성AbnormalAttemptsReportGenerated
GenerateSuccessFailureRatioReport발급 출처별 성공/실패 비율 보고서 생성SuccessFailureRatioReportGenerated

7.2 프론트엔드 명령

명령설명결과 이벤트
DisplayReportDashboard보고서 대시보드 표시-
ExportReportToPDF보고서 PDF 내보내기-
CustomizeReportView보고서 뷰 커스터마이즈-
FilterReportData보고서 데이터 필터링-

8. 알림 관련 명령

8.1 백엔드 명령

명령설명결과 이벤트
SendAccessCodeIssuedNotification코드 발급 알림 전송AccessCodeIssuedNotificationSent
SendBatchCompletionNotification대량 발급 완료 알림 전송BatchCompletionNotificationSent
SendAccessCodeExpirationNotification만료 예정 코드 알림 전송AccessCodeExpirationNotificationSent
SendAbnormalAttemptsNotification비정상 시도 알림 전송AbnormalAttemptsNotificationSent
SendBatchFailureNotification배치 처리 실패 알림 전송BatchFailureNotificationSent
ConfigureNotificationTemplate출처별 맞춤형 알림 템플릿 설정-

8.2 프론트엔드 명령

명령설명결과 이벤트
DisplayNotification알림 표시-
ConfigureNotificationPreferences알림 설정 구성-
DisplayNotificationHistory알림 이력 표시-
ManageNotificationTemplates알림 템플릿 관리-

TimeMachine 연동 명령

백엔드 명령

명령설명영향
CreateAccessCodeWithTimeMachineTimeMachine 설정을 포함한 Access Code 생성AccessCodeCreatedWithTimeMachine 이벤트 발생
CalculateExpirationWithVirtualTime가상 시간으로 만료 시간 계산AccessCodeExpirationCalculatedWithVirtualTime 이벤트 발생
SynchronizeTimeMachineSettingsTimeMachine 설정 동기화TimeMachineSettingsSynchronized 이벤트 발생
UpdateAccessCodeForTimeChange시간 변경 이벤트에 따른 코드 업데이트AccessCodeExpirationRecalculated 이벤트 발생
SetBatchVirtualTime배치에 가상 시간 설정BatchVirtualTimeSet 이벤트 발생
InitializeVirtualTimeForUser사용자에 대한 가상 시간 초기화VirtualTimeInitializedForUser 이벤트 발생

프론트엔드 명령

명령설명영향
ToggleTimeMachineForCode코드에 대한 TimeMachine 토글TimeMachineToggleRequested 이벤트 발생
DisplayVirtualTime가상 시간 표시VirtualTimeDisplayed 이벤트 발생
UpdateTimeMachineSettingsTimeMachine 설정 업데이트TimeMachineSettingsUpdated 이벤트 발생
DisplayExpiryWithVirtualTime가상 시간 기준 만료 시간 표시CodeExpiryWithVirtualTimeDisplayed 이벤트 발생

애그리게잇(Aggregates)

도메인 객체들의 집합으로, 트랜잭션의 일관성 경계를 정의합니다.

AccessCodeTimeMachineSettings

  • 설명: Access Code의 TimeMachine 설정 정보
  • 구성요소: useTimeMachine, virtualTimeStartDate, expirationBasedOnVirtualTime
  • 명령 처리: CreateAccessCodeWithTimeMachine, CalculateExpirationWithVirtualTime
  • 이벤트 발생: AccessCodeCreatedWithTimeMachine, AccessCodeExpirationCalculatedWithVirtualTime

BatchTimeMachineSettings

  • 설명: 배치의 TimeMachine 설정 정보
  • 구성요소: useTimeMachineForAll, commonVirtualTimeStartDate
  • 명령 처리: SetBatchVirtualTime, CreateBatchWithTimeMachine
  • 이벤트 발생: BatchVirtualTimeSet, BatchCreatedWithTimeMachine

UserRegistrationTimeMachineIntegration

  • 설명: 사용자 등록과 TimeMachine 통합 정보
  • 구성요소: timeMachineEnabled, virtualTimeStartDate, timeSynchronizationStatus
  • 명령 처리: InitializeVirtualTimeForUser, SynchronizeTimeMachineSettings
  • 이벤트 발생: VirtualTimeInitializedForUser, TimeMachineSettingsSynchronized

액터(Actors)

시스템과 상호작용하는 사용자나 외부 시스템입니다.

TimeMachine 시스템

  • 설명: 가상 시간 관리 및 조작 기능을 제공하는 지원 시스템
  • 책임: 가상 시간 제공, 시간 변경 이벤트 발행, 사용자별 시간 관리
  • 상호작용: Access Code 만료 계산, 사용자 등록 시 가상 시간 초기화

TimeMachine 테스터

  • 설명: 가상 시간 기능을 사용하여 시스템을 테스트하는 사용자
  • 책임: 가상 시간을 활용한 Access Code 테스트
  • 상호작용: TimeMachine 설정 변경, 가상 시간 환경에서 코드 검증

변경 이력

버전날짜설명
0.1.02025-03-25초기 버전 작성
0.2.02025-04-22TimeMachine 관련 이벤트, 명령, 애그리게잇, 액터 추가