Relaxation 도메인 이벤트 스토밍
개요
본 문서는 Relaxation 도메인의 이벤트 스토밍 워크샵 결과를 정리한 것입니다. 도메인 전문가, 개발자, 그리고 이해관계자들이 참여하여 도출된 도메인 이벤트, 명령, 액터, 정책 등을 포함합니다.
도메인 이벤트
도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.
1. 이완요법 콘텐츠 이벤트
1.1 백엔드 이벤트
| 이벤트 | 설명 | 트리거 |
|---|---|---|
| RelaxationContentListRequested | 이완요법 콘텐츠 목록 조회됨 | 콘텐츠 목록 조회 요청 |
| ContentMetadataRetrieved | 콘텐츠 메타데이터가 조회됨 | 콘텐츠 정보 요청 |
| ContentDownloadStarted | 콘텐츠 다운로드가 시작됨 | 콘텐츠 실행 요청 |
| ContentDownloadProgressUpdated | 다운로드 진행률이 업데이트됨 | 다운로드 진행 중 |
| ContentDownloadCompleted | 콘텐츠 다운로드가 완료됨 | 다운로드 완료 |
| ContentDownloadResumed | 콘텐츠 다운로드가 재개됨 | 다운로드 재개 요청 |
| ContentPlaybackRecorded | 콘텐츠 재생이 기록됨 | 콘텐츠 재생 시작 |
| ContentCompleted | 콘텐츠가 완료됨 | [다 들었어요] 버튼 탭 |
| ContentPlaybackStateSaved | 재생 상태가 저장됨 | 재생 상태 변경 |
| DailyRecommendationGenerated | 일일 추천 콘텐츠가 생성됨 | 매일 추천 생성 |
| RecommendationPeriodExpired | 추천 기간이 종료됨 | 가입 후 6일차 도달 |
| ContentAccessValidated | 콘텐츠 접근 권한이 검증됨 | 콘텐츠 접근 요청 |
| ContentDetailInfoProvided | 콘텐츠 상세 정보가 제공됨 | 콘텐츠 선택 |
| GuideAccessed | 사용 가이드가 조회됨 | 가이드 열람 요청 |
| GuideVersionUpdated | 가이드 버전이 업데이트됨 | 가이드 업데이트 |
| PlaybackHistoryRecorded | 재생 이력이 기록됨 | 콘텐츠 재생 기록 |
| ContentCategoryRetrieved | 콘텐츠 카테고리가 조회됨 | 카테고리 목록 요청 |
| RepeatModeChanged | 반복 재생 설정이 변경됨 | 반복 설정 변경 |
| ContentListVersionChecked | 콘텐츠 목록 버전이 확인됨 | 클라이언트 캐시 검증 |
| ContentListCached | 콘텐츠 목록이 캐싱됨 | 로컬 캐시 저장 |
| ContentListCacheUpdated | 캐시된 콘텐츠 목록이 업데이트됨 | 증분 업데이트 |
| VersionMismatchDetected | 버전 불일치가 감지됨 | 클라이언트-서버 버전 차이 |
| CacheValidationFailed | 캐시 검증이 실패함 | 캐시 무결성 오류 |
1.2 프론트엔드 이벤트
| 이벤트 | 설명 | 트리거 |
|---|---|---|
| CategoryExpanded | 카테고리가 확장됨 | 드롭다운 화살표 탭 |
| CategoryCollapsed | 카테고리가 축소됨 | 드롭다운 화살표 탭 |
| ContentCardTapped | 콘텐츠 카드가 탭됨 | 콘텐츠 카드 선택 |
| BottomSheetDisplayed | 콘텐츠 확인 바텀 시트가 표시됨 | 콘텐츠 카드 탭 |
| BottomSheetConfirmed | 바텀 시트에서 확인됨 | [Bestätigen] 버튼 탭 |
| BottomSheetCancelled | 바텀 시트가 취소됨 | [Abbrechen] 버튼 탭 |
| ContentExecutionStarted | 콘텐츠 실행이 시작됨 | 바텀 시트 확인 |
| DownloadProgressDisplayed | 다운로드 진행률이 표시됨 | 다운로드 시작 |
| AutoPlaybackStarted | 자동 재생이 시작됨 | 다운로드 완료 |
| ProgressBarInitialized | Progress bar가 0초로 초기화됨 | 재생 시작 |
| PlaybackPaused | 재생이 일시정지됨 | [일시 멈춤] 버튼 탭 |
| PlaybackResumed | 재생이 재개됨 | [플레이] 버튼 탭 |
| RepeatModeToggled | 반복 모드가 토글됨 | [반복] 버튼 탭 |
| ContentCompletionMarked | 콘텐츠 완료가 표시됨 | [다 들었어요] 버튼 탭 |
| NavigationBackTriggered | 뒤로가기가 실행됨 | [뒤로가기] 버튼 탭 |
| ContentExitTriggered | 콘텐츠 종료가 시도됨 | [X] 버튼 탭 |
| ExitConfirmationPopupDisplayed | 중단 확인 팝업이 표시됨 | [X] 버튼 탭 |
| ContentExitConfirmed | 콘텐츠 종료가 확인됨 | [Beenden] 버튼 탭 |
| ContentExitCancelled | 콘텐츠 종료가 취소됨 | [Abbrechen] 버튼 탭 |
| ProgressBarUpdated | Progress bar가 업데이트됨 | 재생 진행 중 |
| BackgroundVideoDisplayed | 배경 영상이 표시됨 | 콘텐츠 재생 시작 |
| BackgroundAudioPlayed | 배경 오디오가 재생됨 | 콘텐츠 재생 시작 |
| RecommendationDisplayed | 추천 콘텐츠가 표시됨 | Home 화면 진입 |
| RecommendationSectionHidden | 추천 섹션이 숨겨짐 | 6일차 이후 |
| ContentDetailViewOpened | 콘텐츠 상세 정보가 열림 | 콘텐츠 선택 |
| GuideOpened | 사용 가이드가 열림 | 가이드 버튼 탭 |
| LocalContentCached | 콘텐츠가 로컬에 캐싱됨 | 다운로드 완료 |
| CachedContentLoaded | 캐싱된 콘텐츠가 로드됨 | 재실행 시 |
| UIConsistencyMaintained | UI 일관성이 유지됨 | 화면 전환 시 |
| FeedbackProvided | 사용자 피드백이 제공됨 | 액션 수행 시 |
| ContentListVersionValidated | 콘텐츠 목록 버전이 검증됨 | 앱 시작 시 |
| CacheUpdatedFromServer | 서버로부터 캐시가 업데이트됨 | 버전 불일치 시 |
| IncrementalUpdateApplied | 증분 업데이트가 적용됨 | 부분 업데이트 시 |
| CacheIntegrityRestored | 캐시 무결성이 복구됨 | 캐시 오류 수정 |
| OfflineModeActivated | 오프라인 모드가 활성화됨 | 네트워크 연결 끊김 |
정책(Policies)
시스템의 자동화된 비즈니스 규칙입니다.
콘텐츠 관리 정책
백엔드 정책
- 이완요법 콘텐츠는 5가지 카테고리로 분류하여 관리
- 각 카테고리는 제목과 요약 설명(Summary) 포함
- 각 콘텐츠의 메타데이터(제목, 설명, 재생 시간, 카테고리) 관리
- 콘텐츠별 배경 이미지와 오디오 파일 관리
- 사용자의 콘텐츠 재생 이력 추적 및 관리
- 콘텐츠 완료 상태 저장 및 관리
- 미완료 콘텐츠와 완료 콘텐츠 구분하여 관리
- 콘텐츠 다운로드를 위한 안정적인 스트리밍 서비스 제공
- 부분 다운로드 및 재개 기능 지원
- 콘텐츠 접근 권한 검증
- 각 이완요법 콘텐츠의 상세 정보 관리
- 시행 이유, 효과, 작동 방식 등의 사전 정보 제공
- 이완요법 사용 방법에 대한 기본 가이드 제공
- 가이드 내용 버전 관리 및 업데이트
프론트엔드 정책
- 카테고리별로 콘텐츠를 카드 형식으로 표시
- 각 카테고리 우측에 드롭다운 화살표 표시하여 확장/축소 기능 제공
- 열린 상태에서 요약 설명과 콘텐츠 카드 표시, 닫힌 상태에서는 카테고리 제목만 표시
- 사용자가 콘텐츠 카드를 탭했을 때 콘텐츠 확인 바텀 시트 표시
- 바텀 시트에 선택된 콘텐츠의 배경 이미지 표시
- [Bestätigen] 버튼 선택 시 콘텐츠 실행 화면으로 이동
- [Abbrechen] 버튼 선택 시 시트를 닫고 원래 화면으로 복귀
- 콘텐츠 종류에 따라 배경 영상과 오디오를 다르게 표시
- 화면의 전반적인 구조와 UI를 모든 이완요법 콘텐츠에 대해 일관되게 유지
- 최초 콘텐츠 실행 시 자동으로 다운로드 진행
- 다운로드 진행 상태를 시각적으로 표시
- 다운로드 완료 후 자동으로 콘텐츠 재생
- 콘텐츠 재생 시 진행률 바(Progress bar) 표시
- 다운로드된 콘텐츠를 로컬에 캐싱하여 재사용
- 실제 미디어 파일은 모바일 앱에서 로컬 관리
재생 제어 정책
백엔드 정책
- 재생 상태(재생 중, 일시정지, 중단) 관리
- 반복 재생 설정 저장 및 관리
- [다 들었어요] 버튼 탭 시에만 이완요법 완료로 처리
- 콘텐츠 완료 상태는 서버에 저장되어 기기 변경 시에도 유지
프론트엔드 정책
- [일시 멈춤] 버튼 제공하여 콘텐츠 재생 중지
- 일시 멈춤 상태에서 [플레이] 버튼으로 아이콘 전환
- [플레이] 버튼을 통해 정지 상태에서 재생 재개
- [반복] 버튼 제공하여 반복 재생 기능 활성화/비활성화
- [다 들었어요] 버튼 제공하여 콘텐츠 완료 처리
- 우측 상단에 [X] 버튼 제공하여 콘텐츠 중단
- [뒤로가기] 버튼 제공하여 이전 화면으로 이동
- 버튼 탭 시 콘텐츠 중단 확인 팝업 표시
- [Beenden] 선택 시 메인화면으로 이동, 진행 상황 저장 안 됨
- [Abbrechen] 선택 시 팝업 닫고 기존 재생 상태 유지
- Progress bar 실시간 업데이트
- 재생 위치를 시각적으로 명확하게 표시
추천 콘텐츠 정책
백엔드 정책
- 가입 후 5일 동안 매일 하나의 추천 콘텐츠 제공
- 추천 콘텐츠 순서:
- 1일차: Bauchatmung (복식호흡)
- 2일차: Sitzmeditation (앉아서 명상)
- 3일차: PMR Hände und Arme (손과 팔 점진적 이완)
- 4일차: Dein Strand (나만의 해변)
- 5일차: Die Zitronenübung (레몬 연습)
- 6일차 이후부터는 추천 콘텐츠 제공하지 않음
- 사용자의 가입일을 기준으로 추천 일차 계산
프론트엔드 정책
- Home 화면에서 오늘의 추천 이완요법 표시
- 가입 후 5일간만 추천 콘텐츠 표시
- 6일차 이후부터는 추천 섹션 표시하지 않음
- 추천 콘텐츠는 선택적으로 이용 가능
사용자 경험 정책
백엔드 정책
- 콘텐츠 목록 조회에 대해 500ms 이내 응답
- 안정적인 스트리밍 성능 제공
- 오디오 재생에 대해 버퍼링 없는 실시간 재생 지원
- 배경 영상 재생에 대해 3초 이내 초기 로딩
- 재생 상태 저장에 대해 200ms 이내 응답
프론트엔드 정책
- 모든 콘텐츠는 다운로드 완료 후 자동으로 재생
- 사용자의 추가 조작을 최소화하여 몰입도 향상
- 콘텐츠 실행 중단 시 반드시 확인 팝업 표시
- 다운로드 진행 상태를 시각적으로 표시
- 재생 상태 변경 시 즉시 UI에 반영
- 사용자 액션에 대한 명확한 피드백 제공
- 배경 영상은 부드럽고 차분한 움직임으로 제한
- 오디오 콘텐츠는 고품질 음원으로 제공
보안 및 접근 제어 정책
백엔드 정책
- 콘텐츠 접근 권한 엄격히 관리
- 인증된 사용자만 콘텐츠 접근 가능
- 콘텐츠 다운로드 URL에 만료 시간 설정
- 사용자별 재생 이력 안전하게 보호
- 콘텐츠 불법 복제 방지 조치 적용
- 모든 API 요청에 대해 사용자 인증 검증
- 사용자 간 데이터 접근 제한 엄격히 관리
- 모든 액세스에 대한 로그 기록
프론트엔드 정책
- 다운로드된 콘텐츠는 앱 내에서만 재생 가능
- 콘텐츠 파일에 대한 직접 접근 차단
버전 관리 및 캐싱 정책
백엔드 정책
- 콘텐츠 목록의 모든 변경사항을 버전으로 추적 관리
- 콘텐츠 추가, 수정, 삭제 시 자동으로 새 버전 생성
- 메타데이터 변경 시 해당 콘텐츠의 버전 업데이트
- 클라이언트 버전과 서버 버전 비교하여 응답 최적화
- 동일한 버전인 경우 304 Not Modified 응답으로 대역폭 절약
- 증분 업데이트를 통한 효율적 데이터 전송
- 버전 확인 API 별도 제공하여 빠른 검증 지원
- 콘텐츠 목록 해시값을 통한 무결성 검증
프론트엔드 정책
- 콘텐츠 목록을 로컬에 캐싱하여 오프라인 접근 지원
- 앱 시작 시 서버와 버전 정보 확인하여 캐시 유효성 검증
- 구버전 감지 시 자동으로 최신 콘텐츠 목록 다운로드
- 증분 업데이트를 통한 효율적 콘텐츠 정보 업데이트
- 캐시 만료 시간 설정하여 주기적 서버 동기화
- 저장 공간 부족 시 오래된 캐시 데이터 우선 삭제
- 캐시 손상 시 자동으로 전체 목록 재다운로드
- 네트워크 연결 끊김 시 캐시된 데이터로 오프라인 모드 지원
명령(Commands)
도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.
1. 이완요법 콘텐츠 명령
1.1 백엔드 명령
| 명령 | 설명 | 영향 |
|---|---|---|
| GetContentList | 콘텐츠 목록 조회 | RelaxationContentListRequested 이벤트 발생 |
| GetContentMetadata | 콘텐츠 메타데이터 조회 | ContentMetadataRetrieved 이벤트 발생 |
| StartContentDownload | 콘텐츠 다운로드 시작 | ContentDownloadStarted 이벤트 발생 |
| UpdateDownloadProgress | 다운로드 진행률 업데이트 | ContentDownloadProgressUpdated 이벤트 발생 |
| CompleteContentDownload | 콘텐츠 다운로드 완료 | ContentDownloadCompleted 이벤트 발생 |
| ResumeContentDownload | 콘텐츠 다운로드 재개 | ContentDownloadResumed 이벤트 발생 |
| RecordContentPlayback | 콘텐츠 재생 기록 | ContentPlaybackRecorded 이벤트 발생 |
| MarkContentAsCompleted | 콘텐츠 완료 처리 | ContentCompleted 이벤트 발생 |
| SavePlaybackState | 재생 상태 저장 | ContentPlaybackStateSaved 이벤트 발생 |
| GenerateDailyRecommendation | 일일 추천 생성 | DailyRecommendationGenerated 이벤트 발생 |
| CheckRecommendationPeriod | 추천 기간 확인 | 필요시 RecommendationPeriodExpired 이벤트 발생 |
| ValidateContentAccess | 콘텐츠 접근 권한 검증 | ContentAccessValidated 이벤트 발생 |
| ProvideContentDetail | 콘텐츠 상세 정보 제공 | ContentDetailInfoProvided 이벤트 발생 |
| AccessGuide | 가이드 접근 | GuideAccessed 이벤트 발생 |
| UpdateGuideVersion | 가이드 버전 업데이트 | GuideVersionUpdated 이벤트 발생 |
| RecordPlaybackHistory | 재생 이력 기록 | PlaybackHistoryRecorded 이벤트 발생 |
| GetContentCategories | 콘텐츠 카테고리 조회 | ContentCategoryRetrieved 이벤트 발생 |
| ChangeRepeatMode | 반복 모드 변경 | RepeatModeChanged 이벤트 발생 |
| CheckContentListVersion | 콘텐츠 목록 버전 확인 | ContentListVersionChecked 이벤트 발생 |
| CacheContentList | 콘텐츠 목록 캐싱 | ContentListCached 이벤트 발생 |
| UpdateContentListCache | 콘텐츠 목록 캐시 업데이트 | ContentListCacheUpdated 이벤트 발생 |
| ValidateCacheIntegrity | 캐시 무결성 검증 | 필요시 CacheValidationFailed 이벤트 발생 |
| CreateNewVersion | 새 버전 생성 | 새 ContentListVersion 생성 |
1.2 프론트엔드 명령
| 명령 | 설명 | 영향 |
|---|---|---|
| ToggleCategory | 카테고리 확장/축소 토글 | CategoryExpanded 또는 CategoryCollapsed 이벤트 발생 |
| TapContentCard | 콘텐츠 카드 탭 | ContentCardTapped 이벤트 발생 |
| DisplayBottomSheet | 바텀 시트 표시 | BottomSheetDisplayed 이벤트 발생 |
| ConfirmBottomSheet | 바텀 시트 확인 | BottomSheetConfirmed 이벤트 발생 |
| CancelBottomSheet | 바텀 시트 취소 | BottomSheetCancelled 이벤트 발생 |
| StartContentExecution | 콘텐츠 실행 시작 | ContentExecutionStarted 이벤트 발생 |
| DisplayDownloadProgress | 다운로드 진행률 표시 | DownloadProgressDisplayed 이벤트 발생 |
| StartAutoPlayback | 자동 재생 시작 | AutoPlaybackStarted 이벤트 발생 |
| InitializeProgressBar | Progress bar 초기화 | ProgressBarInitialized 이벤트 발생 |
| PausePlayback | 재생 일시정지 | PlaybackPaused 이벤트 발생 |
| ResumePlayback | 재생 재개 | PlaybackResumed 이벤트 발생 |
| ToggleRepeatMode | 반복 모드 토글 | RepeatModeToggled 이벤트 발생 |
| MarkContentComplete | 콘텐츠 완료 표시 | ContentCompletionMarked 이벤트 발생 |
| NavigateBack | 뒤로가기 실행 | NavigationBackTriggered 이벤트 발생 |
| TriggerContentExit | 콘텐츠 종료 시도 | ContentExitTriggered 이벤트 발생 |
| DisplayExitConfirmationPopup | 종료 확인 팝업 표시 | ExitConfirmationPopupDisplayed 이벤트 발생 |
| ConfirmContentExit | 콘텐츠 종료 확인 | ContentExitConfirmed 이벤트 발생 |
| CancelContentExit | 콘텐츠 종료 취소 | ContentExitCancelled 이벤트 발생 |
| UpdateProgressBar | Progress bar 업데이트 | ProgressBarUpdated 이벤트 발생 |
| DisplayBackgroundVideo | 배경 영상 표시 | BackgroundVideoDisplayed 이벤트 발생 |
| PlayBackgroundAudio | 배경 오디오 재생 | BackgroundAudioPlayed 이벤트 발생 |
| DisplayRecommendation | 추천 콘텐츠 표시 | RecommendationDisplayed 이벤트 발생 |
| HideRecommendationSection | 추천 섹션 숨기기 | RecommendationSectionHidden 이벤트 발생 |
| OpenContentDetail | 콘텐츠 상세 정보 열기 | ContentDetailViewOpened 이벤트 발생 |
| OpenGuide | 가이드 열기 | GuideOpened 이벤트 발생 |
| CacheLocalContent | 콘텐츠 로컬 캐싱 | LocalContentCached 이벤트 발생 |
| LoadCachedContent | 캐싱된 콘텐츠 로드 | CachedContentLoaded 이벤트 발생 |
| MaintainUIConsistency | UI 일관성 유지 | UIConsistencyMaintained 이벤트 발생 |
| ProvideFeedback | 피드백 제공 | FeedbackProvided 이벤트 발생 |
| FetchContentList | 콘텐츠 목록 가져오기 | 서버 API 호출 |
| SendCompletionStatus | 완료 상태 전송 | 서버 API 호출 |
| FetchContentDetail | 콘텐츠 상세 정보 가져오기 | 서버 API 호출 |
| FetchRecommendation | 추천 콘텐츠 가져오기 | 서버 API 호출 |
| ValidateContentListVersion | 콘텐츠 목록 버전 검증 | ContentListVersionValidated 이벤트 발생 |
| UpdateCacheFromServer | 서버로부터 캐시 업데이트 | CacheUpdatedFromServer 이벤트 발생 |
| ApplyIncrementalUpdate | 증분 업데이트 적용 | IncrementalUpdateApplied 이벤트 발생 |
| RestoreCacheIntegrity | 캐시 무결성 복구 | CacheIntegrityRestored 이벤트 발생 |
| ActivateOfflineMode | 오프라인 모드 활성화 | OfflineModeActivated 이벤트 발생 |
| CheckCacheVersion | 캐시 버전 확인 | 로컬 캐시 검증 |
| ClearExpiredCache | 만료된 캐시 삭제 | 캐시 정리 |
| OptimizeCache | 캐시 최적화 | 캐시 성능 향상 |
액터(Actors)
시스템과 상호작용하는 주체들입니다.
사용자
- 이완요법 콘텐츠를 선택하고 재생하는 주체
- 카테고리를 확장/축소하여 콘텐츠 탐색
- 재생 컨트롤(일시정지, 재개, 반복)을 조작
- 콘텐츠 완료 처리
- 추천 콘텐츠 이용
시스템
- 콘텐츠 메타데이터 및 카테고리 관리
- 다운로드 및 스트리밍 서비스 제공
- 재생 이력 및 완료 상태 관리
- 일일 추천 콘텐츠 생성
- 접근 권한 검증 및 보안 관리
- 콘텐츠 목록 버전 관리 및 동기화
- 증분 업데이트 데이터 생성
- 캐시 무결성 검증 지원
애그리게잇(Aggregates)
도메인 객체들의 클러스터로, 트랜잭션 일관성 경계를 형성합니다.
이완요법 콘텐츠
- 콘텐츠 ID
- 제목
- 설명
- 재생 시간
- 카테고리
- 배경 이미지 참조
- 오디오 파일 참조
- 콘텐츠 순서
카테고리
- 카테고리 ID
- 카테고리명
- 요약 설명(Summary)
- 포함된 콘텐츠 목록
- 표시 순서
재생 이력
- 이력 ID
- 사용자 ID
- 콘텐츠 ID
- 재생 시작 시간
- 재생 종료 시간
- 완료 여부
- 재생 위치
추천 설정
- 사용자 ID
- 가입일
- 현재 추천 일차
- 추천 콘텐츠 ID
- 추천 기간 만료 여부
사용자 설정
- 사용자 ID
- 반복 재생 설정
- 선호 카테고리
- 마지막 재생 콘텐츠
콘텐츠 상세 정보
- 콘텐츠 ID
- 시행 이유
- 기대 효과
- 작동 방식
- 주의사항
- 버전
사용 가이드
- 가이드 ID
- 가이드 내용
- 버전
- 마지막 업데이트 일시
다운로드 상태
- 사용자 ID
- 콘텐츠 ID
- 다운로드 진행률
- 다운로드 상태
- 캐시 위치
콘텐츠 목록 버전
- 버전 ID
- 버전 번호
- 해시값
- 활성 상태
- 생성/수정 시간
버전 변경 이력
- 변경 ID
- 버전 ID
- 콘텐츠 ID
- 변경 유형 (추가/수정/삭제)
- 변경 설명
- 변경 시간
변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-06-10 | bok@weltcorp.com | 최초 작성 |
| 0.1.1 | 2025-06-10 | bok@weltcorp.com | 콘텐츠 목록 클라이언트 캐싱을 위한 버전 관리 이벤트, 명령, 정책 추가 |