본문으로 건너뛰기

Learning 도메인 이벤트 스토밍

개요

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

도메인 이벤트

도메인에서 발생하는 중요한 변화나 사실을 나타내는 이벤트들입니다.

1. 수면탐구 콘텐츠 이벤트

1.1 백엔드 이벤트

이벤트설명트리거
LessonUnlocked사용자에게 새로운 레슨이 해금되었음이전 레슨 완료 또는 치료 기간 경과
LessonRecommended사용자에게 특정 레슨이 추천됨학습 진도 기반 추천 알고리즘
LessonProgressUpdated사용자의 학습 진행률이 업데이트됨사용자의 레슨 완료
LearningProgressReported전체 학습 진행률 보고됨진행률 조회 요청
LessonStatusChanged레슨 상태가 변경됨레슨 접근 또는 완료
LessonAccessTracked레슨 접근이 기록됨레슨 접근 시
SessionProgressUpdated세션 진행 상태가 업데이트됨세션 내 레슨 완료
AllLessonsCompleted모든 수면탐구 레슨(45개)이 완료됨45번 레슨 완료
FinalLessonUnlocked마지막 레슨(46번)이 해금됨치료 기간 완료
QuizUnlocked복습 퀴즈가 해금됨46번 레슨 해금 시점
DailyQuizGenerated일일 퀴즈가 생성됨매일 새로운 퀴즈 생성
QuizAttempted퀴즈 풀이 시도됨AttemptQuiz
QuizResultRecorded퀴즈 결과가 기록됨퀴즈 제출 완료
QuizVersionCreated퀴즈 새 버전이 생성됨퀴즈 버전 생성 요청
QuizVersionActivated퀴즈 버전이 활성화됨퀴즈 버전 활성화 요청
QuizPerformanceAnalyzed퀴즈 성능이 분석됨퀴즈 성능 분석 요청
TextSizeSettingSaved텍스트 크기 설정이 저장됨사용자 텍스트 크기 변경
TTSSettingSavedTTS 설정이 저장됨사용자 TTS 설정 변경
MediaAccessValidated미디어 접근 권한이 검증됨미디어 접근 요청
LessonLearningStarted레슨 학습이 시작됨사용자가 레슨 열람 시작
LessonLearningEnded레슨 학습이 종료됨사용자가 레슨 학습 완료 또는 중단
LessonLearningPaused레슨 학습이 일시중지됨앱 백그라운드 전환
LessonLearningResumed레슨 학습이 재개됨앱 포그라운드 복귀
LearningMetricsCalculated학습 통계가 계산됨학습 종료 또는 통계 조회 요청
LearningPatternAnalyzed학습 패턴이 분석됨학습 패턴 분석 요청
LearningHistoryBatchCollected학습 이력 배치가 수집됨로컬 배열에 이력 추가
LearningHistoryBatchSubmitted학습 이력 배치가 제출됨배치 크기 또는 시간 조건 충족
LearningHistoryBatchRetried학습 이력 배치 재시도됨네트워크 복구 시 재시도

1.2 프론트엔드 이벤트

이벤트설명트리거
LessonViewed사용자가 레슨을 열람함레슨 열람
LessonScrolledToEnd사용자가 레슨을 끝까지 스크롤함레슨 스크롤 완료
LessonCompletionMarked레슨 학습 완료가 표시됨레슨 열람 완료
LessonCompletionPopupDisplayed레슨 완료 팝업이 표시됨레슨 완료
NavigatedToNextLesson다음 레슨으로 이동됨레슨 완료 팝업에서 [다음] 버튼 탭
NavigatedToMainScreen메인화면으로 이동됨레슨 완료 팝업에서 [종료] 버튼 탭
LockedLessonPopupDisplayed잠금 레슨 안내 팝업이 표시됨잠금 레슨 접근 시도
BlockedLessonPopupDisplayed열람 불가 레슨 안내 팝업이 표시됨열람 불가 레슨 접근 시도
LessonUnlockNotificationDisplayed레슨 해금 알림이 표시됨새 레슨 해금 시
SessionExpanded세션이 확장됨세션 제목 탭
SessionCollapsed세션이 축소됨세션 제목 탭
SessionCompletionDisplayed세션 완료 상태가 표시됨세션 내 모든 레슨 완료
CompletionConfirmationPopupDisplayed완료 확인 팝업이 표시됨완료 버튼 미클릭 후 메인화면 이동 시도
TextSizeAdjustmentDialogOpened텍스트 크기 조절 팝업이 열림[AA] 버튼 탭
TextSizePreviewUpdated텍스트 크기 미리보기가 업데이트됨크기 조절 시
TextSizeChanged텍스트 크기가 변경됨텍스트 크기 설정 변경
TextSizeAppliedAcrossLessons설정된 텍스트 크기가 모든 레슨에 적용됨텍스트 크기 설정 저장 후
StorageCheckPerformed단말기 용량 확인이 수행됨TTS 기능 사용 전
InsufficientStorageAlertDisplayed용량 부족 알림이 표시됨용량 부족 시
TTSActivatedTTS(음성 읽기) 기능이 활성화됨TTS 기능 활성화 요청
TTSDeactivatedTTS(음성 읽기) 기능이 비활성화됨TTS 기능 중지 요청
TTSAudioDownloadedTTS 음성 파일이 다운로드됨TTS 활성화 시
TTSSentenceHighlightedTTS 재생 중 현재 문장 강조됨TTS 문장 재생 (임상시험 버전 제외)
ContentImageTapped본문 내 이미지가 탭됨이미지 탭
ImageOverlayDisplayed이미지 오버레이 화면이 표시됨본문 이미지 탭
ImageOverlayClosed이미지 오버레이 화면이 닫힘오버레이 배경 탭
ImageZoomedIn이미지가 확대됨두 손가락 줌인 제스처
ImageZoomedOut이미지가 축소됨두 손가락 줌아웃 제스처
MaxZoomReached최대 확대 배율(2배)에 도달함최대 확대 시도
MinZoomReached최소 축소 배율(원본)에 도달함최소 축소 시도
ZoomStatePreserved확대/축소 상태가 유지됨제스처 후 손가락 뗌
ContentVideoTapped본문 내 영상이 탭됨영상 탭
VideoPlayerLaunched영상 플레이어가 실행됨본문 영상 탭
VideoPlaybackStarted영상 재생이 시작됨영상 재생 시작
VideoFullscreenModeActivated영상 전체화면 모드가 활성화됨전체화면 모드 진입
VideoPaused영상 재생이 일시정지됨일시정지 버튼 탭
VideoResumed영상 재생이 재개됨재생 버튼 탭
VideoPlaybackCompleted영상 재생이 완료됨영상 끝까지 재생
VideoPlayerClosed영상 플레이어가 종료됨영상 종료
ContentAudioTapped본문 내 오디오 클립이 탭됨오디오 클립 재생 버튼 탭
AudioClipPlaybackStarted오디오 클립 재생이 시작됨오디오 클립 재생 시작
AudioClipPaused오디오 클립 재생이 일시정지됨오디오 클립 일시정지 버튼 탭
AudioClipResumed오디오 클립 재생이 재개됨오디오 클립 재생 버튼 탭
AudioClipStopped오디오 클립 재생이 중단됨오디오 클립 중단 버튼 탭
AudioClipPlaybackCompleted오디오 클립 재생이 완료됨오디오 클립 끝까지 재생
AudioClipProgressDisplayed오디오 클립 재생 진행률이 표시됨오디오 클립 재생 중
AudioClipConflictResolved오디오 충돌이 해결됨다른 오디오 재생 시 기존 오디오 중단
AudioClipButtonStateReset오디오 클립 재생 버튼 상태가 초기화됨오디오 클립 재생 완료 후
ProgressBarDisplayed학습 진행률 프로그레스바가 표시됨메인 화면 진입
QuizStarted퀴즈가 시작됨퀴즈 시작 버튼 탭
QuizTypeDisplayed퀴즈 유형(O/X 또는 사지선다)이 표시됨퀴즈 로드
QuizAnswerSelected퀴즈 답변이 선택됨답변 선택
QuizNextButtonActivated퀴즈 [다음] 버튼이 활성화됨답변 선택 완료
QuizSubmitted퀴즈 답변이 제출됨[다음] 버튼 탭
QuizResultViewed퀴즈 결과가 확인됨결과 화면 확인
QuizRetried퀴즈 재시도됨다시 풀기 버튼 탭
RelatedLessonAccessed연관 레슨으로 이동함관련 레슨 이동 버튼 탭
LearningSessionStarted학습 세션이 시작됨레슨 화면 진입
LearningSessionPaused학습 세션이 일시중지됨앱 백그라운드 전환
LearningSessionResumed학습 세션이 재개됨앱 포그라운드 복귀
LearningTimeTracked학습 시간이 추적됨주기적 시간 업데이트
LearningHistorySynced학습 이력이 동기화됨네트워크 복구 시

정책(Policies)

시스템의 자동화된 비즈니스 규칙입니다.

레슨 관리 정책

백엔드 정책

  • 사용자는 계정 생성 시 1번 레슨만 해금된 상태로 시작
  • 레슨 1번부터 45번까지는 이전 레슨 완료 시 다음 레슨이 즉시 해금
  • 마지막 46번 레슨은 45번 레슨 완료 후 치료 기간이 지난 시점에 해금
  • 레슨 추천은 사용자의 학습 진도를 고려하여 제공
  • 진도가 느린 경우, 완료하지 않은 콘텐츠 중 해금된 항목 우선 추천
  • 수면탐구 레슨 45개 완료 시, 46번 레슨 해금 시점에 복습 퀴즈도 함께 제공
  • 46일차부터 치료 완료일 전날까지 매일 하루에 1개의 퀴즈 제공
  • 퀴즈 성능 데이터(정답률, 응답 시간 등)를 분석하여 개선 필요성 평가
  • 레슨 업데이트 시 관련 퀴즈의 버전 업데이트 필요성 검토
  • 퀴즈 버전 이력 관리 및 성능 비교 분석 지원
  • 레슨 ID와 메타데이터만 관리하며, 실제 콘텐츠는 모바일 앱에서 관리
  • 각 레슨을 single page로 구성된 단일 콘텐츠 단위로 관리
  • 레슨들을 세션 단위로 그룹핑하여 관리
  • 세션별 진행 상태를 추적하고 완료 여부를 관리

프론트엔드 정책

  • 해금된 레슨만 접근 가능하도록 UI 제한
  • 레슨의 5가지 상태를 시각적으로 구분하여 표시:
    1. 미해금(LOCKED) 상태: 잠금 아이콘 표시
    2. 열람 가능(UNLOCKED) 상태: 열람 가능 표시와 강조 표시
    3. 열람 불가(BLOCKED) 상태: 특정 조건으로 인한 제한 메시지 표시
    4. 열람 중(IN_PROGRESS) 상태: 현재 열람 중 표시
    5. 완료(COMPLETED) 상태: 완료 체크 표시
  • 열람 불가(BLOCKED) 상태 레슨 탭 시 접근 불가 이유 안내 메시지 표시
  • 세션별로 그룹화하여 UI에 표시
  • 세션 단위로 확장/축소 가능한 목록 UI 제공
  • 세션 완료 상태를 시각적 요소(체크 표시 등)로 표현
  • 잠금 상태의 레슨 열람 시도 시 안내 팝업 표시
  • 학습 완료 레슨을 체크 표시로 시각화
  • 학습 진행률을 100% 기준으로 완료 비율 시각화
  • 레슨 완료 시 다음 동작 선택 팝업 표시([다음] 또는 [종료])
  • [다음] 버튼은 다음 레슨으로, [종료] 버튼은 메인화면으로 이동
  • 완료 버튼 미클릭 후 메인화면 이동 시도 시 완료 확인 팝업 표시
  • 레슨 완료 시 다음 레슨 해금 알림 제공
  • 퀴즈 정답 선택 시 [다음] 버튼 활성화
  • 퀴즈는 O/X 또는 사지선다형으로 제공되며 단일 선택만 가능
  • 사용자는 항상 최신 활성 버전의 퀴즈를 받음
  • 퀴즈 응답 시 퀴즈 버전 정보가 함께 기록됨

텍스트 및 접근성 정책

백엔드 정책

  • 사용자의 텍스트 크기 설정 값을 저장하고 관리
  • 사용자의 TTS 사용 설정을 저장하고 관리
  • 지원 언어(독일어, 영어)를 관리
  • 모든 기기에서 동일한 설정을 적용할 수 있도록 동기화

프론트엔드 정책

  • [AA] 버튼 탭 시 텍스트 크기 조절 UI 제공
  • 텍스트 크기 조절 UI에서 실시간 크기 미리보기 표시
  • 한번 지정한 텍스트 크기를 레슨 전체에 동일하게 적용
  • 기본 Body 텍스트 크기를 16pt로 설정
  • 오프라인 상태에서도 마지막 설정 유지
  • 설정 변경 시 즉시 저장 및 적용
  • Lesson의 텍스트 크기를 시스템 접근성 폰트 크기와 별개로 관리
  • TTS 사용 전 단말기 용량 확인하여 부족 시 알림
  • [오디오] 버튼 탭 시 백엔드로부터 음성 파일 다운로드하여 재생
  • TTS 활성화 시 재생 중인 문장을 파란색으로 강조 표시 (임상시험 버전에서는 제외)
  • Background TTS 재생 기능은 제공하지 않음
  • 재생 속도 옵션(기본, 느림, 빠름) 제공 (임상시험 버전에서는 제외)
  • TTS 기본 설정(비활성화, 독일어, 보통 속도) 적용 (임상시험 버전에서는 제외)
  • 재생 제어(시작, 일시정지, 중단) 기능 제공 (임상시험 버전에서는 제외)

미디어 관리 정책

백엔드 정책

  • 이미지 파일의 메타데이터와 참조 정보만 관리하며, 실제 미디어 파일은 모바일 앱에서 관리
  • 영상 및 오디오 클립의 경우 실제 미디어 파일은 Backend에서 관리되며 메타데이터에 download URL을 제공
  • 레슨별 미디어 자원 목록과 식별자 제공
  • 미디어가 속한 레슨이 해금된 사용자만 접근 가능하도록 제어
  • 미디어 파일 메타데이터에서 개인정보(EXIF 데이터 등) 자동 제거

프론트엔드 정책

이미지 관리
  • 이미지 파일을 로컬에 저장하고 관리
  • 백엔드로부터 받은 미디어 식별자를 로컬 파일과 매핑
  • 본문 내 이미지 탭 시 이미지 오버레이 화면을 전체 화면으로 표시
  • 이미지 오버레이 화면에서 배경 탭 시 본문 화면으로 돌아가기
  • 이미지 오버레이 화면에서 두 손가락 제스처로 이미지 확대/축소 기능 제공
  • 이미지 최대 확대 배율을 원본의 2배로 제한
  • 이미지 최소 축소 배율을 원본 크기로 제한
  • 이미지 확대/축소 상태를 제스처 후에도 유지
영상 관리
  • Backend에서 제공하는 download URL을 통해 영상을 스트리밍 또는 다운로드하여 관리
  • 영상 재생에 iOS 기본 비디오 플레이어 사용
  • 지원 형식(MP4, MOV)의 영상 재생
  • 영상 플레이어는 전체화면 모드만 지원
  • Backend에서 제공하는 download URL을 통해 영상 재생
오디오 클립 관리
  • Backend에서 제공하는 download URL을 통해 오디오 클립을 스트리밍 또는 다운로드하여 관리
  • 레슨 본문 내에 삽입되어 해당 레슨에 대한 부가 설명 제공
  • 오디오 클립은 TTS와 구별되는 미리 녹음된 콘텐츠
  • 재생 제어 기능 제공: 재생, 일시정지, 중단
  • 재생 상태 및 진행률을 시각적으로 표시
  • 다른 오디오(TTS 포함) 재생 시 기존 오디오 자동 중단으로 충돌 방지
  • 지원 형식(MP3, AAC, WAV)의 오디오 클립 재생
  • 재생 완료 후 재생 버튼 상태 자동 초기화

학습 이력 관리 정책

백엔드 정책

  • 학습 시작과 종료는 명시적으로 기록되어야 하며, 비정상 종료 시에도 추적 가능해야 함
  • 동일 레슨의 반복 학습도 각각 별도의 이력으로 저장
  • 학습 소요시간은 실제 활성 시간만 계산 (백그라운드 시간 제외)
  • 5분 미만의 학습은 '미완료' 상태로 자동 분류
  • 학습 통계는 캐싱하여 성능 최적화
  • 30일 이상 된 상세 학습 이력은 집계 데이터로 변환하여 보관

프론트엔드 정책

  • 레슨 화면 진입 시 즉시 학습 시작 이벤트 전송
  • 10초마다 학습 진행 상태를 서버에 업데이트
  • 앱 백그라운드 전환 시 자동으로 학습 일시중지 처리
  • 네트워크 오류 시 학습 이력을 로컬 스토리지에 저장
  • 네트워크 복구 시 저장된 학습 이력 자동 동기화
  • 학습 이력을 로컬 배열에 수집하고 다음 조건 시 배치 제출:
    1. 배치 크기 50개 이상 또는
    2. 마지막 제출 후 5분 경과 또는
    3. 레슨 완료 시점 또는
    4. 앱 백그라운드 전환 시
  • 배치 제출 실패 시 지수 백오프(exponential backoff) 재시도 로직 적용
  • 네트워크 상태에 따라 배치 크기와 제출 주기를 동적 조절 (WiFi: 크게, 셀룰러: 작게)

명령(Commands)

도메인 이벤트를 발생시키는 사용자 의도나 시스템 동작입니다.

1. 수면탐구 레슨 명령

1.1 백엔드 명령

명령설명영향
UnlockLesson레슨 해금 처리LessonUnlocked 이벤트 발생
RecommendLesson레슨 추천 생성LessonRecommended 이벤트 발생
UpdateLessonProgress레슨 진행률 업데이트LessonProgressUpdated 이벤트 발생
GetLearningProgress학습 진행률 조회LearningProgressReported 이벤트 발생
ChangeLessonStatus레슨 상태 변경LessonStatusChanged 이벤트 발생
TrackLessonAccess레슨 접근 기록LessonAccessTracked 이벤트 발생
UpdateSessionProgress세션 진행률 업데이트SessionProgressUpdated 이벤트 발생
CheckLessonCompletion레슨 완료 상태 확인필요시 AllLessonsCompleted 이벤트 발생
UnlockFinalLesson마지막 레슨 해금 처리FinalLessonUnlocked 이벤트 발생
UnlockQuiz퀴즈 해금 처리QuizUnlocked 이벤트 발생
GenerateDailyQuiz일일 퀴즈 생성DailyQuizGenerated 이벤트 발생
RecordQuizAttempt퀴즈 시도 기록QuizAttempted 이벤트 발생
RecordQuizResult퀴즈 결과 기록QuizResultRecorded 이벤트 발생
CreateQuizVersion퀴즈 새 버전 생성QuizVersionCreated 이벤트 발생
ActivateQuizVersion퀴즈 버전 활성화QuizVersionActivated 이벤트 발생
AnalyzeQuizPerformance퀴즈 성능 분석QuizPerformanceAnalyzed 이벤트 발생
GetAvailableLessons이용 가능한 레슨 목록 조회해금된 레슨 목록 반환
GetDailyQuiz일일 퀴즈 조회오늘의 퀴즈 내용 반환
SaveTextSizeSetting텍스트 크기 설정 저장TextSizeSettingSaved 이벤트 발생
SaveTTSSettingTTS 설정 저장TTSSettingSaved 이벤트 발생
ValidateMediaAccess미디어 접근 권한 검증MediaAccessValidated 이벤트 발생
StartLessonLearning레슨 학습 시작LessonLearningStarted 이벤트 발생
EndLessonLearning레슨 학습 종료LessonLearningEnded 이벤트 발생
PauseLessonLearning레슨 학습 일시중지LessonLearningPaused 이벤트 발생
ResumeLessonLearning레슨 학습 재개LessonLearningResumed 이벤트 발생
CalculateLearningMetrics학습 통계 계산LearningMetricsCalculated 이벤트 발생
AnalyzeLearningPattern학습 패턴 분석LearningPatternAnalyzed 이벤트 발생
GetLearningHistory학습 이력 조회학습 이력 데이터 반환
GetLessonMetrics레슨별 통계 조회레슨 통계 데이터 반환
ProcessLearningHistoryBatch학습 이력 배치 처리LearningHistoryBatchProcessed 이벤트 발생
ValidateLearningHistoryBatch학습 이력 배치 검증유효성 검사 결과 반환

1.2 프론트엔드 명령

명령설명영향
ViewLesson레슨 열람LessonViewed 이벤트 발생
MarkLessonAsComplete레슨 완료 표시LessonCompletionMarked 이벤트 발생
DisplayLessonCompletionPopup레슨 완료 팝업 표시LessonCompletionPopupDisplayed 이벤트 발생
NavigateToNextLesson다음 레슨으로 이동NavigatedToNextLesson 이벤트 발생
NavigateToMainScreen메인화면으로 이동NavigatedToMainScreen 이벤트 발생
DisplayLockedLessonPopup잠금 레슨 안내 팝업 표시LockedLessonPopupDisplayed 이벤트 발생
DisplayBlockedLessonPopup열람 불가 레슨 안내 팝업 표시BlockedLessonPopupDisplayed 이벤트 발생
DisplayLessonUnlockNotification레슨 해금 알림 표시LessonUnlockNotificationDisplayed 이벤트 발생
ExpandSession세션 확장SessionExpanded 이벤트 발생
CollapseSession세션 축소SessionCollapsed 이벤트 발생
DisplaySessionCompletion세션 완료 상태 표시SessionCompletionDisplayed 이벤트 발생
DisplayCompletionConfirmationPopup완료 확인 팝업 표시CompletionConfirmationPopupDisplayed 이벤트 발생
OpenTextSizeAdjustmentDialog텍스트 크기 조절 팝업 열기TextSizeAdjustmentDialogOpened 이벤트 발생
UpdateTextSizePreview텍스트 크기 미리보기 업데이트TextSizePreviewUpdated 이벤트 발생
ChangeTextSize텍스트 크기 변경TextSizeChanged 이벤트 발생
ApplyTextSizeAcrossLessons텍스트 크기 전체 레슨 적용TextSizeAppliedAcrossLessons 이벤트 발생
CheckStorage단말기 용량 확인StorageCheckPerformed 이벤트 발생
DisplayInsufficientStorageAlert용량 부족 알림 표시InsufficientStorageAlertDisplayed 이벤트 발생
ToggleTTSTTS 기능 토글TTSActivated 또는 TTSDeactivated 이벤트 발생
DownloadTTSAudioTTS 음성 파일 다운로드TTSAudioDownloaded 이벤트 발생
HighlightTTSSentenceTTS 재생 중 문장 강조TTSSentenceHighlighted 이벤트 발생
TapContentImage본문 이미지 탭ContentImageTapped 이벤트 발생
DisplayImageOverlay이미지 오버레이 화면 표시ImageOverlayDisplayed 이벤트 발생
CloseImageOverlay이미지 오버레이 화면 닫기ImageOverlayClosed 이벤트 발생
ZoomInImage이미지 확대ImageZoomedIn 이벤트 발생
ZoomOutImage이미지 축소ImageZoomedOut 이벤트 발생
CheckMaxZoom최대 확대 배율 확인필요 시 MaxZoomReached 이벤트 발생
CheckMinZoom최소 축소 배율 확인필요 시 MinZoomReached 이벤트 발생
PreserveZoomState확대/축소 상태 유지ZoomStatePreserved 이벤트 발생
TapContentVideo본문 영상 탭ContentVideoTapped 이벤트 발생
LaunchVideoPlayer영상 플레이어 실행VideoPlayerLaunched 이벤트 발생
StartVideoPlayback영상 재생 시작VideoPlaybackStarted 이벤트 발생
ActivateVideoFullscreen영상 전체화면 모드 활성화VideoFullscreenModeActivated 이벤트 발생
PauseVideo영상 일시정지VideoPaused 이벤트 발생
ResumeVideo영상 재생 재개VideoResumed 이벤트 발생
CompleteVideoPlayback영상 재생 완료VideoPlaybackCompleted 이벤트 발생
CloseVideoPlayer영상 플레이어 종료VideoPlayerClosed 이벤트 발생
TapContentAudio본문 오디오 클립 탭ContentAudioTapped 이벤트 발생
StartAudioClipPlayback오디오 클립 재생 시작AudioClipPlaybackStarted 이벤트 발생
PauseAudioClip오디오 클립 일시정지AudioClipPaused 이벤트 발생
ResumeAudioClip오디오 클립 재생 재개AudioClipResumed 이벤트 발생
StopAudioClip오디오 클립 재생 중단AudioClipStopped 이벤트 발생
CompleteAudioClipPlayback오디오 클립 재생 완료AudioClipPlaybackCompleted 이벤트 발생
DisplayAudioClipProgress오디오 클립 진행률 표시AudioClipProgressDisplayed 이벤트 발생
ResolveAudioClipConflict오디오 충돌 해결AudioClipConflictResolved 이벤트 발생
ResetAudioClipButtonState오디오 클립 버튼 상태 초기화AudioClipButtonStateReset 이벤트 발생
DisplayProgressBar진행률 표시ProgressBarDisplayed 이벤트 발생
StartQuiz퀴즈 시작QuizStarted 이벤트 발생
DisplayQuizType퀴즈 유형 표시QuizTypeDisplayed 이벤트 발생
SelectQuizAnswer퀴즈 답변 선택QuizAnswerSelected 이벤트 발생
ActivateQuizNextButton퀴즈 다음 버튼 활성화QuizNextButtonActivated 이벤트 발생
SubmitQuiz퀴즈 제출QuizSubmitted 이벤트 발생
ViewQuizResult퀴즈 결과 확인QuizResultViewed 이벤트 발생
RetryQuiz퀴즈 재시도QuizRetried 이벤트 발생
NavigateToRelatedLesson연관 레슨으로 이동RelatedLessonAccessed 이벤트 발생
FetchLessonList레슨 목록 가져오기서버 API 호출
FetchLessonDetails레슨 상세 내용 가져오기서버 API 호출
SendCompletionStatus완료 상태 전송서버 API 호출
FetchQuiz퀴즈 가져오기서버 API 호출
SendQuizResult퀴즈 결과 전송서버 API 호출
TrackLearningTime학습 시간 추적LearningTimeTracked 이벤트 발생
SyncLearningHistory학습 이력 동기화LearningHistorySynced 이벤트 발생
SaveLocalLearningData로컬 학습 데이터 저장오프라인 데이터 저장
LoadLocalLearningData로컬 학습 데이터 로드오프라인 데이터 복구
CollectLearningHistoryToBatch학습 이력을 배치에 수집LearningHistoryBatchCollected 이벤트 발생
SubmitLearningHistoryBatch학습 이력 배치 제출LearningHistoryBatchSubmitted 이벤트 발생
RetryLearningHistoryBatch학습 이력 배치 재시도LearningHistoryBatchRetried 이벤트 발생
AdjustBatchSubmissionStrategy배치 제출 전략 조정동적 배치 크기/주기 변경

액터(Actors)

시스템과 상호작용하는 주체들입니다.

사용자

  • 레슨을 열람하고 학습하는 주체
  • 텍스트 크기 및 TTS 설정을 조정
  • 미디어 콘텐츠(이미지, 영상)를 확인
  • 퀴즈 풀이 및 결과 확인

시스템

  • 레슨 해금 및 추천 처리
  • 학습 진행률 계산 및 관리
  • 세션 및 레슨 상태 관리
  • 퀴즈 생성 및 결과 평가
  • 사용자 설정 저장 및 동기화

애그리게잇(Aggregates)

도메인 객체들의 클러스터로, 트랜잭션 일관성 경계를 형성합니다.

수면탐구 레슨

  • 레슨 ID
  • 타이틀
  • 내용 (텍스트, 이미지, 영상) 메타데이터
  • 해금 상태
  • 학습 완료 상태
  • 관련 세션 정보
  • 레슨 순서

세션

  • 세션 ID
  • 세션명
  • 포함된 레슨 목록
  • 세션 완료 상태
  • 세션 순서

학습 진행

  • 사용자 ID
  • 완료한 레슨 목록
  • 전체 진행률
  • 마지막 학습 일시
  • 학습 시작일
  • 마지막 접근 시간

사용자 설정

  • 사용자 ID
  • 텍스트 크기 설정
  • TTS 설정
  • 지원 언어 설정
  • 재생 속도 설정

퀴즈

  • 퀴즈 ID
  • 버전 번호
  • 문제 유형 (OX/객관식)
  • 문제 내용
  • 선택지 목록
  • 정답
  • 관련 레슨 ID
  • 활성화 상태
  • 생성 일시
  • 업데이트 일시

퀴즈 응시

  • 응시 ID
  • 사용자 ID
  • 퀴즈 ID
  • 퀴즈 버전
  • 선택한 답변
  • 정답 여부
  • 응시 일시

미디어 자원

  • 미디어 ID
  • 미디어 타입 (이미지/영상/오디오)
  • 레슨 ID
  • 파일 식별자
  • 메타데이터
  • 재생 시간 (오디오/영상의 경우)

변경 이력

버전날짜작성자변경 내용
0.1.02025-04-03bok@weltcorp.com최초 작성
0.2.02025-05-23bok@weltcorp.comrequirements.md 변경사항 반영 - 하이라이트/사용자 입력 기능 제거, 세션 관리, 업데이트된 TTS/미디어 관리 기능 추가
0.2.12025-06-09bok@weltcorp.com퀴즈 버전 관리 기능 추가 - 퀴즈 버전 이벤트, 명령, 정책 추가
0.3.02025-06-10bok@weltcorp.com오디오 클립 기능 추가 - 레슨 본문 내 부가 설명용 오디오 재생 기능 이벤트, 명령, 정책 추가
0.4.02025-06-10bok@weltcorp.com레슨 학습 이력 추적 기능 추가 - 학습 시작/종료/일시중지 이벤트, 학습 시간 추적 명령, 학습 이력 관리 정책 추가