Relaxation 바운디드 컨텍스트
1. 컨텍스트 정의
Relaxation 도메인은 이완요법 콘텐츠 관리, 재생 제어, 다운로드 관리, 추천 시스템, 사용자 설정을 담당하는 바운디드 컨텍스트입니다.
1.1 주요 책임
- 이완요법 콘텐츠 관리 (Relaxation Content Management)
- 콘텐츠 카테고리 관리 (Category Management)
- 콘텐츠 재생 제어 (Playback Control)
- 다운로드 및 캐싱 관리 (Download & Cache Management)
- 추천 콘텐츠 관리 (Recommendation Management)
- 사용자 설정 관리 (User Settings Management)
- 사용 가이드 관리 (Usage Guide Management)
- 콘텐츠 번들 버전 관리 (Content Bundle Version Management)
1.2 도메인 용어
- 이완요법(Relaxation): 스트레스 감소와 이완을 위한 오디오 기반 콘텐츠
- 카테고리(Category): 이완요법 콘텐츠의 5가지 분류 (호흡요법, 아우토겐 트레이닝, 점진적 근육이완, 상상하기, 마음챙김)
- 콘텐츠 카드(Content Card): 각 이완요법 콘텐츠를 표시하는 UI 구성요소
- 재생 상태(Playback State): 콘텐츠의 현재 재생 상황 (재생 중, 일시정지, 중단)
- 추천 콘텐츠(Recommended Content): 가입 후 5일간 제공되는 일일 추천 이완요법
- 콘텐츠 번들(Content Bundle): 버전 관리를 위해 묶인 콘텐츠 집합
- 캐시(Cache): 오프라인 재생을 위해 로컬에 저장된 콘텐츠
- 완료 처리(Completion): [다 들었어요] 버튼을 통한 콘텐츠 완료 확인
- 반복 모드(Repeat Mode): 콘텐츠 자동 반복 재생 설정
- 바텀 시트(Bottom Sheet): 콘텐츠 선택 시 표시되는 확인 UI
2. 하위 컨텍스트
2.1 콘텐츠 관리 컨텍스트 (Content Management Context)
이완요법 콘텐츠와 카테고리 관리를 담당합니다.
책임
- 이완요법 콘텐츠 메타데이터 관리
- 카테고리별 콘텐츠 분류
- 콘텐츠 번들 생성 및 관리
- 배경 이미지 및 오디오 파일 참조 관리
- 콘텐츠 상세 정보 제공
- 콘텐츠 접근 권한 검증
정책 및 규칙
-
카테고리 관리 정책
- 이완요법 콘텐츠는 5가지 카테고리로 분류: 호흡요법(BREATHING_THERAPY), 아우토겐 트레이닝(AUTOGENIC_TRAINING), 점진적 근육이완(PROGRESSIVE_MUSCLE_RELAXATION), 상상하기(VISUALIZATION), 마음챙김(MINDFULNESS)
- 각 카테고리는 제목과 요약 설명(Summary) 포함
- 카테고리별로 확장/축소 기능 제공
- 열린 상태: 요약 설명과 콘텐츠 카드 노출
- 닫힌 상태: 카테고리 제목만 표시
- 각 카테고리 우측에 드롭다운 화살표 아이콘 표시
- 카테고리 내 콘텐츠는 미리 정의된 순서(orderIndex)대로 정렬
-
콘텐츠 메타데이터 관리 정책
- 각 콘텐츠의 메타데이터 관리: 제목, 설명, 재생 시간, 카테고리, 배경 이미지 URL, 오디오 파일 URL
- 실제 미디어 파일은 CDN을 통해 제공
- 콘텐츠별 배경 이미지와 오디오는 콘텐츠 종류에 따라 구분
- 콘텐츠 메타데이터 변경 시 해당 콘텐츠의 버전 업데이트
- 콘텐츠 추가, 수정, 삭제 시 자동으로 새 버전 생성
-
콘텐츠 번들 관리 정책
- 콘텐츠 목록의 모든 변경사항을 버전으로 추적 관리
- 버전 번호는 시맨틱 버저닝 또는 단순 증가 방식 따름
- 번들은 해시값을 통한 무결성 검증 지원
- 활성 번들은 하나만 존재 (isActive = true)
- 새 번들 생성 시 이전 번들은 비활성화
- 번들 메타데이터: 버전, 해시, 콘텐츠 수, 총 크기
2.2 재생 제어 컨텍스트 (Playback Control Context)
콘텐츠 재생 상태와 제어를 담당합니다.
책임
- 재생 상태 관리 (재생 중, 일시정지, 중단)
- 재생 위치 저장 및 복원
- 반복 재생 설정 관리
- 재생 이력 기록
- 콘텐츠 완료 처리
- 재생 진행률 추적
정책 및 규칙
-
재생 제어 정책
- [일시 멈춤] 버튼으로 콘텐츠 재생 중지
- 일시 멈춤 상태에서는 [플레이] 버튼으로 아이콘 전환
- [플레이] 버튼으로 정지 상태에서 재생 재개
- [반복] 버튼으로 반복 재생 기능 활성화/비활성화
- 재생 제어는 실시간으로 반응
- Progress bar로 재생 진행 상황 시각화
- 재생 위치는 초 단위로 저장
-
완료 처리 정책
- [다 들었어요] 버튼을 탭해야만 이완요법 활동이 이수된 것으로 간주
- 콘텐츠 완료 상태는 서버에 저장되어 기기 변경 시에도 유지
- 완료된 콘텐츠도 재열람 가능
- 한 번 완료된 콘텐츠는 완료 취소 불가
- 완료 시각(completedAt) 기록
-
자동 재생 정책
- 콘텐츠 다운로드 완료 시 자동으로 재생 시작
- 모든 이완요법 콘텐츠는 자동 재생을 기본으로 함
- 재생 시작 시 Progress bar는 0초 상태로 초기화
- 사용자의 별도 조작 없이 콘텐츠 즉시 시작
2.3 다운로드 관리 컨텍스트 (Download Management Context)
콘텐츠 다운로드와 캐싱을 담당합니다.
책임
- 콘텐츠 다운로드 진행 관리
- 다운로드 상태 추적
- 부분 다운로드 및 재개 지원
- 로컬 캐시 관리
- 캐시 무결성 검증
- 오프라인 재생 지원
정책 및 규칙
-
다운로드 정책
- 최초 콘텐츠 실행 시 자동으로 다운로드 진행
- 다운로드 진행 상태를 시각적으로 표시 (0-100%)
- 부분 다운로드 및 재개 기능 지원
- 다운로드 완료 후 자동으로 콘텐츠 재생
- 다운로드된 콘텐츠는 로컬에 캐싱하여 재사용
- 다운로드 실패 시 자동 재시도 (최대 3회)
-
캐시 관리 정책
- 콘텐츠 목록을 로컬에 캐싱하여 오프라인에서도 목록 조회 가능
- 서버로부터 콘텐츠 목록 버전 정보를 확인하여 캐시 유효성 검증
- 캐시된 버전이 구버전일 경우 자동으로 최신 콘텐츠 목록 다운로드
- 증분 업데이트를 통한 효율적 콘텐츠 정보 업데이트
- 콘텐츠 목록 캐시 주기적 정리 및 관리
- 저장 공간 부족 시 오래된 캐시 데이터 우선 삭제
- 캐시 손상 시 자동으로 전체 목록 재다운로드
2.4 추천 관리 컨텍스트 (Recommendation Context)
일일 추천 콘텐츠 제공을 담당합니다.
책임
- 일일 추천 콘텐츠 생성
- 추천 기간 관리
- 추천 상태 추적
- 추천 이력 관리
정책 및 규칙
-
추천 기간 정책
- 가입 후 5일 동안만 매일 하나의 추천 콘텐츠 제공
- 6일차 이후부터는 추천 콘텐츠 제공하지 않음
- 사용자의 가입일을 기준으로 추천 일차 계산
- Home 화면에서 추천 콘텐츠 표시
-
추천 순서 정책
- 추천 콘텐츠는 다음 순서로 자동 제공:
- 1일차: Bauchatmung (복식호흡)
- 2일차: Sitzmeditation (앉아서 명상)
- 3일차: PMR Hände und Arme (손과 팔 점진적 이완)
- 4일차: Dein Strand (나만의 해변)
- 5일차: Die Zitronenübung (레몬 연습)
- 추천 순서는 미리 정의된 순서를 따르며 변경 불가
- 사용자는 추천 콘텐츠를 선택적으로 이용 가능
- 추천 콘텐츠는 다음 순서로 자동 제공:
2.5 사용자 설정 컨텍스트 (User Settings Context)
사용자별 설정 관리를 담당합니다.
책임
- 반복 모드 설정 관리
- 선호 카테고리 저장
- 마지막 재생 콘텐츠 추적
- 사용자별 설정 동기화
정책 및 규칙
- 설정 관리 정책
- 반복 모드는 기본적으로 비활성화 상태
- 반복 모드 활성화 시 콘텐츠 종료 후 자동 재시작
- 선호 카테고리 설정 시 해당 카테고리 우선 표시
- 마지막 재생 콘텐츠 정보 저장하여 빠른 접근 지원
- 설정은 사용자 계정에 저장되어 기기 변경 시에도 유지
2.6 사용 가이드 컨텍스트 (Usage Guide Context)
이완요법 사용 방법 안내를 담당합니다.
책임
- 사용 가이드 콘텐츠 관리
- 가이드 버전 관리
- 가이드 열람 추적
정책 및 규칙
- 가이드 관리 정책
- 이완요법 사용 방법에 대한 기본 가이드 제공
- 가이드 내용을 버전 관리하여 업데이트 가능
- 가이드는 초보자도 쉽게 따라할 수 있는 수준으로 작성
- 정기적으로 가이드 내용 검토 및 개선
- 활성 가이드는 하나만 존재 (isActive = true)
2.7 콘텐츠 상세 정보 컨텍스트 (Content Detail Context)
콘텐츠 상세 정보 제공을 담당합니다.
책임
- 콘텐츠 상세 정보 관리
- 사전 정보 제공
- 상세 정보 버전 관리
정책 및 규칙
- 상세 정보 제공 정책
- 사용자가 특정 이완요법 콘텐츠를 선택하면 사전 정보 먼저 제공
- 제공 정보: 해당 기법의 시행 이유, 기대 효과, 작동 방식, 주의사항(필요시)
- 정보 확인 후 사용자가 콘텐츠 실행 시작 가능
- 정보는 버전 관리하여 업데이트 가능
- 사용자가 이해하기 쉬운 언어로 작성
- 과학적 근거가 있는 정확한 정보만 제공
3. 컨텍스트 경계
3.1 상위 컨텍스트
- User Domain: 사용자 정보 관리
- Auth Domain: 인증 및 권한 관리
3.2 하위 컨텍스트
- Analytics Domain: 이완요법 사용 분석 및 통계
- Notification Domain: 알림 관리
3.3 외부 시스템
- CDN: 오디오/비디오 콘텐츠 저장 및 스트리밍
- Device Storage: 로컬 캐싱 및 저장
- Media Player: 오디오/비디오 재생 엔진
4. 컨텍스트 매핑
4.1 User Domain과의 관계 (Customer-Supplier)
4.2 Auth Domain과의 관계 (Conformist)
4.3 Analytics Domain과의 관계 (Published Language)
4.4 Notification Domain과의 관계 (Published Language)
5. 도메인 이벤트
5.1 발행하는 이벤트
- RelaxationContentListRequested: 이완요법 콘텐츠 목록 조회됨
- ContentMetadataRetrieved: 콘텐츠 메타데이터가 조회됨
- ContentDownloadStarted: 콘텐츠 다운로드가 시작됨
- ContentDownloadProgressUpdated: 다운로드 진행률이 업데이트됨
- ContentDownloadCompleted: 콘텐츠 다운로드가 완료됨
- ContentPlaybackRecorded: 콘텐츠 재생이 기록됨
- ContentCompleted: 콘텐츠가 완료됨
- PlaybackPaused: 재생이 일시정지됨
- PlaybackResumed: 재생이 재개됨
- RepeatModeChanged: 반복 모드가 변경됨
- DailyRecommendationGenerated: 일일 추천 콘텐츠가 생성됨
- RecommendationPeriodExpired: 추천 기간이 종료됨
- CategoryExpanded: 카테고리가 확장됨
- CategoryCollapsed: 카테고리가 축소됨
- RelaxationContentBundleCreated: 이완요법 콘텐츠 번들 생성됨
- RelaxationContentBundleActivated: 이완요법 콘텐츠 번들 활성화됨
- RelaxationContentBundleUpdateRequired: 이완요법 콘텐츠 번들 업데이트 필요
- RelaxationContentBundleCached: 이완요법 콘텐츠 번들 캐시됨
- RelaxationContentBundleCacheInvalidated: 이완요법 콘텐츠 번들 캐시 무효화됨
- GuideAccessed: 사용 가이드가 조회됨
- GuideVersionUpdated: 가이드 버전이 업데이트됨
- ContentDetailInfoProvided: 콘텐츠 상세 정보가 제공됨
- ExitConfirmationPopupDisplayed: 중단 확인 팝업이 표시됨
- ContentExitConfirmed: 콘텐츠 종료가 확인됨
- ContentExitCancelled: 콘텐츠 종료가 취소됨
5.2 구독하는 이벤트
- UserCreated: 새로운 사용자 생성
- UserAuthenticated: 사용자 인증 완료
- UserLoggedOut: 사용자 로그아웃
- SystemDayChanged: 시스템 날짜 변경 (추천 콘텐츠 갱신용)
6. 보안 정책
- 콘텐츠 접근 권한 엄격히 관리
- 인증된 사용자만 콘텐츠 접근 가능
- 콘텐츠 다운로드 URL에 만료 시간 설정
- 사용자별 재생 이력 안전하게 보호
- 콘텐츠 불법 복제 방지 조치 적용
- 다운로드된 콘텐츠는 앱 내에서만 재생 가능
- 콘텐츠 파일에 대한 직접 접근 차단
- 모든 API 요청에 대해 사용자 인증 검증
- 사용자 간 데이터 접근 제한 엄격히 관리
- 모든 액세스에 대한 로그 기록
7. 기술 스택
- NestJS
- TypeScript
- PostgreSQL (콘텐츠 메타데이터, 재생 이력, 사용자 설정)
- Redis (캐싱, 세션 관리)
- GCP Pub/Sub (이벤트 메시징)
- GCS (미디어 저장)
- CDN (콘텐츠 배포)
- iOS/Android 미디어 재생 API
- React Native (클라이언트 구현)
8. 변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-06-10 | bok@weltcorp.com | 최초 작성 |