본문으로 건너뛰기

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)

이완요법 콘텐츠와 카테고리 관리를 담당합니다.

책임

  • 이완요법 콘텐츠 메타데이터 관리
  • 카테고리별 콘텐츠 분류
  • 콘텐츠 번들 생성 및 관리
  • 배경 이미지 및 오디오 파일 참조 관리
  • 콘텐츠 상세 정보 제공
  • 콘텐츠 접근 권한 검증

정책 및 규칙

  1. 카테고리 관리 정책

    • 이완요법 콘텐츠는 5가지 카테고리로 분류: 호흡요법(BREATHING_THERAPY), 아우토겐 트레이닝(AUTOGENIC_TRAINING), 점진적 근육이완(PROGRESSIVE_MUSCLE_RELAXATION), 상상하기(VISUALIZATION), 마음챙김(MINDFULNESS)
    • 각 카테고리는 제목과 요약 설명(Summary) 포함
    • 카테고리별로 확장/축소 기능 제공
    • 열린 상태: 요약 설명과 콘텐츠 카드 노출
    • 닫힌 상태: 카테고리 제목만 표시
    • 각 카테고리 우측에 드롭다운 화살표 아이콘 표시
    • 카테고리 내 콘텐츠는 미리 정의된 순서(orderIndex)대로 정렬
  2. 콘텐츠 메타데이터 관리 정책

    • 각 콘텐츠의 메타데이터 관리: 제목, 설명, 재생 시간, 카테고리, 배경 이미지 URL, 오디오 파일 URL
    • 실제 미디어 파일은 CDN을 통해 제공
    • 콘텐츠별 배경 이미지와 오디오는 콘텐츠 종류에 따라 구분
    • 콘텐츠 메타데이터 변경 시 해당 콘텐츠의 버전 업데이트
    • 콘텐츠 추가, 수정, 삭제 시 자동으로 새 버전 생성
  3. 콘텐츠 번들 관리 정책

    • 콘텐츠 목록의 모든 변경사항을 버전으로 추적 관리
    • 버전 번호는 시맨틱 버저닝 또는 단순 증가 방식 따름
    • 번들은 해시값을 통한 무결성 검증 지원
    • 활성 번들은 하나만 존재 (isActive = true)
    • 새 번들 생성 시 이전 번들은 비활성화
    • 번들 메타데이터: 버전, 해시, 콘텐츠 수, 총 크기

2.2 재생 제어 컨텍스트 (Playback Control Context)

콘텐츠 재생 상태와 제어를 담당합니다.

책임

  • 재생 상태 관리 (재생 중, 일시정지, 중단)
  • 재생 위치 저장 및 복원
  • 반복 재생 설정 관리
  • 재생 이력 기록
  • 콘텐츠 완료 처리
  • 재생 진행률 추적

정책 및 규칙

  1. 재생 제어 정책

    • [일시 멈춤] 버튼으로 콘텐츠 재생 중지
    • 일시 멈춤 상태에서는 [플레이] 버튼으로 아이콘 전환
    • [플레이] 버튼으로 정지 상태에서 재생 재개
    • [반복] 버튼으로 반복 재생 기능 활성화/비활성화
    • 재생 제어는 실시간으로 반응
    • Progress bar로 재생 진행 상황 시각화
    • 재생 위치는 초 단위로 저장
  2. 완료 처리 정책

    • [다 들었어요] 버튼을 탭해야만 이완요법 활동이 이수된 것으로 간주
    • 콘텐츠 완료 상태는 서버에 저장되어 기기 변경 시에도 유지
    • 완료된 콘텐츠도 재열람 가능
    • 한 번 완료된 콘텐츠는 완료 취소 불가
    • 완료 시각(completedAt) 기록
  3. 자동 재생 정책

    • 콘텐츠 다운로드 완료 시 자동으로 재생 시작
    • 모든 이완요법 콘텐츠는 자동 재생을 기본으로 함
    • 재생 시작 시 Progress bar는 0초 상태로 초기화
    • 사용자의 별도 조작 없이 콘텐츠 즉시 시작

2.3 다운로드 관리 컨텍스트 (Download Management Context)

콘텐츠 다운로드와 캐싱을 담당합니다.

책임

  • 콘텐츠 다운로드 진행 관리
  • 다운로드 상태 추적
  • 부분 다운로드 및 재개 지원
  • 로컬 캐시 관리
  • 캐시 무결성 검증
  • 오프라인 재생 지원

정책 및 규칙

  1. 다운로드 정책

    • 최초 콘텐츠 실행 시 자동으로 다운로드 진행
    • 다운로드 진행 상태를 시각적으로 표시 (0-100%)
    • 부분 다운로드 및 재개 기능 지원
    • 다운로드 완료 후 자동으로 콘텐츠 재생
    • 다운로드된 콘텐츠는 로컬에 캐싱하여 재사용
    • 다운로드 실패 시 자동 재시도 (최대 3회)
  2. 캐시 관리 정책

    • 콘텐츠 목록을 로컬에 캐싱하여 오프라인에서도 목록 조회 가능
    • 서버로부터 콘텐츠 목록 버전 정보를 확인하여 캐시 유효성 검증
    • 캐시된 버전이 구버전일 경우 자동으로 최신 콘텐츠 목록 다운로드
    • 증분 업데이트를 통한 효율적 콘텐츠 정보 업데이트
    • 콘텐츠 목록 캐시 주기적 정리 및 관리
    • 저장 공간 부족 시 오래된 캐시 데이터 우선 삭제
    • 캐시 손상 시 자동으로 전체 목록 재다운로드

2.4 추천 관리 컨텍스트 (Recommendation Context)

일일 추천 콘텐츠 제공을 담당합니다.

책임

  • 일일 추천 콘텐츠 생성
  • 추천 기간 관리
  • 추천 상태 추적
  • 추천 이력 관리

정책 및 규칙

  1. 추천 기간 정책

    • 가입 후 5일 동안만 매일 하나의 추천 콘텐츠 제공
    • 6일차 이후부터는 추천 콘텐츠 제공하지 않음
    • 사용자의 가입일을 기준으로 추천 일차 계산
    • Home 화면에서 추천 콘텐츠 표시
  2. 추천 순서 정책

    • 추천 콘텐츠는 다음 순서로 자동 제공:
      • 1일차: Bauchatmung (복식호흡)
      • 2일차: Sitzmeditation (앉아서 명상)
      • 3일차: PMR Hände und Arme (손과 팔 점진적 이완)
      • 4일차: Dein Strand (나만의 해변)
      • 5일차: Die Zitronenübung (레몬 연습)
    • 추천 순서는 미리 정의된 순서를 따르며 변경 불가
    • 사용자는 추천 콘텐츠를 선택적으로 이용 가능

2.5 사용자 설정 컨텍스트 (User Settings Context)

사용자별 설정 관리를 담당합니다.

책임

  • 반복 모드 설정 관리
  • 선호 카테고리 저장
  • 마지막 재생 콘텐츠 추적
  • 사용자별 설정 동기화

정책 및 규칙

  1. 설정 관리 정책
    • 반복 모드는 기본적으로 비활성화 상태
    • 반복 모드 활성화 시 콘텐츠 종료 후 자동 재시작
    • 선호 카테고리 설정 시 해당 카테고리 우선 표시
    • 마지막 재생 콘텐츠 정보 저장하여 빠른 접근 지원
    • 설정은 사용자 계정에 저장되어 기기 변경 시에도 유지

2.6 사용 가이드 컨텍스트 (Usage Guide Context)

이완요법 사용 방법 안내를 담당합니다.

책임

  • 사용 가이드 콘텐츠 관리
  • 가이드 버전 관리
  • 가이드 열람 추적

정책 및 규칙

  1. 가이드 관리 정책
    • 이완요법 사용 방법에 대한 기본 가이드 제공
    • 가이드 내용을 버전 관리하여 업데이트 가능
    • 가이드는 초보자도 쉽게 따라할 수 있는 수준으로 작성
    • 정기적으로 가이드 내용 검토 및 개선
    • 활성 가이드는 하나만 존재 (isActive = true)

2.7 콘텐츠 상세 정보 컨텍스트 (Content Detail Context)

콘텐츠 상세 정보 제공을 담당합니다.

책임

  • 콘텐츠 상세 정보 관리
  • 사전 정보 제공
  • 상세 정보 버전 관리

정책 및 규칙

  1. 상세 정보 제공 정책
    • 사용자가 특정 이완요법 콘텐츠를 선택하면 사전 정보 먼저 제공
    • 제공 정보: 해당 기법의 시행 이유, 기대 효과, 작동 방식, 주의사항(필요시)
    • 정보 확인 후 사용자가 콘텐츠 실행 시작 가능
    • 정보는 버전 관리하여 업데이트 가능
    • 사용자가 이해하기 쉬운 언어로 작성
    • 과학적 근거가 있는 정확한 정보만 제공

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.02025-06-10bok@weltcorp.com최초 작성