Learning 도메인 요구사항
1. 기능 요구사항
1.1 수면탐구 콘텐츠 관리
백엔드 요구사항
- LRN-FR-BE-001: 시스템은 사용자에게 수면탐구 레슨을 제공할 수 있어야 한다.
- LRN-FR-BE-002: 시스템은 레슨 ID와 메타데이터만 관리하며, 실제 콘텐츠는 모바일 앱에서 관리한다.
- LRN-FR-BE-003: 시스템은 각 레슨을 single page로 구성된 단일 콘텐츠 단위로 관리한다.
- LRN-FR-BE-004: 시스템은 레슨들을 세션 단위로 그룹핑하여 관리할 수 있어야 한다.
- LRN-FR-BE-005: 시스템은 세션별 진행 상태를 추적하고 완료 여부를 관리할 수 있어야 한다.
- LRN-FR-BE-006: 시스템은 세션 및 레슨 전체 목록을 버전 정보와 함께 제공해야 한다.
- LRN-FR-BE-007: 시스템은 콘텐츠 구조 변경 시 버전을 업데이트하여 클라이언트가 변경 사항을 감지할 수 있도록 해야 한다.
- LRN-FR-BE-008: 시스템은 사용자별 레슨 해금 상태와 학습 완료 상태를 별도의 API로 제공해야 한다.
- LRN-FR-BE-009: 시스템은 콘텐츠 메타데이터(세션/레슨 목록)와 사용자별 진행 상태를 분리하여 관리해야 한다.
- LRN-FR-BE-010: 시스템은 계정 생성 시 사용자에게 1번 레슨만 해금하고, 이후에는 이전 레슨 완료 시 다음 레슨이 자동으로 해금되도록 해야 한다(1번부터 일반 레슨 마지막까지).
- LRN-FR-BE-011: 시스템은 최종 레슨의 경우, 모든 일반 레슨 완료 여부와 관계없이 무조건 치료 기간 끝나는 날에 해금되어야 한다.
- LRN-FR-BE-012: 시스템은 레슨 완료 시 즉시 다음 레슨을 해금하여, 사용자가 자신의 페이스에 맞게 학습할 수 있도록 해야 한다.
- LRN-FR-BE-013: 시스템은 사용자 계정 생성 시 학습 시작일을 자동으로 설정한다.
- LRN-FR-BE-014: 시스템은 사용자의 학습 진도를 추적하고 관리할 수 있어야 한다.
- LRN-FR-BE-015: 시스템은 사용자의 학습 진도에 기반하여 레슨을 추천할 수 있어야 한다.
- LRN-FR-BE-016: 시스템은 매일 하나의 레슨을 사용자에게 추천해야 한다.
- LRN-FR-BE-017: 시스템은 치료 기간 마지막 날에는 사용자의 진도나 미완료 레슨 수와 관계없이 최종 레슨만을 추천해야 한다.
- LRN-FR-BE-018: 시스템은 진도가 빠른 사용자(예정 진도보다 빠르게 학습)에게는 1일 1레슨 기준으로 추천해야 한다 (예: 4일차에 10번 레슨까지 학습했더라도 4번 레슨 추천).
- LRN-FR-BE-019: 시스템은 진도가 느린 사용자(예정 진도보다 느리게 학습)에게는 느린 진도에 맞춰 다음 미완료 레슨을 추천해야 한다 (예: 4일차에 2번 레슨까지만 학습했다면 3번 레슨 추천).
- LRN-FR-BE-020: 시스템은 레슨의 5가지 상태(미해금, 열람 가능, 열람 불가, 열람 중, 완료)를 관리할 수 있어야 한다.
- LRN-FR-BE-021: 시스템은 사용자가 레슨에 접근할 때마다 상태를 업데이트하고 마지막 접근 시간을 기록할 수 있어야 한다.
- LRN-FR-BE-022: 시스템은 레슨 추천 시 다음 로직을 적용해야 한다:
- 치료 기간 마지막 날: 최종 레슨만 추천 (모든 일반 레슨 완료 여부 및 사용자 진도와 관계없이, 다른 미완료 레슨이 있어도 최종 레슨만 추천)
- 진도가 빠른 사용자: 학습 시작일 기준 일차에 해당하는 레슨 추천 (예: 4일차 → 4번 레슨)
- 진도가 느린 사용자: 다음 미완료 레슨 추천 (현재 완료한 레슨 + 1번)
- LRN-FR-BE-023: 시스템은 사용자의 레슨 완료 상태를 저장하고 관리할 수 있어야 한다.
- LRN-FR-BE-024: 시스템은 모든 일반 레슨(현재 45개)을 완료한 사용자에게 복습 퀴즈를 제공할 수 있어야 한다.
- LRN-FR-BE-025: 시스템은 진행률을 (완료한 콘텐츠 수 / 전체 콘텐츠 수) × 100% 으로 계산하고, 소수점 2자리까지 표시해야 한다.
- LRN-FR-BE-026: 시스템은 사용자의 레슨 학습 이력을 상세하게 추적하고 저장할 수 있어야 한다.
- LRN-FR-BE-027: 시스템은 각 레슨의 학습 시작 시간과 종료 시간을 기록하여 학습 소요시간을 계산할 수 있어야 한다.
- LRN-FR-BE-028: 시스템은 동일 레슨의 반복 학습 이력도 별도로 저장할 수 있어야 한다.
- LRN-FR-BE-029: 시스템은 레슨별 평균 학습 소요시간, 최소/최대 소요시간 등의 통계를 제공할 수 있어야 한다.
- LRN-FR-BE-030: 시스템은 사용자별 학습 패턴(선호 학습 시간대, 평균 세션 시간 등)을 분석할 수 있어야 한다.
- LRN-FR-BE-031: 시스템은 학습 중단(중도 이탈) 이력도 추적하여 완료율을 계산할 수 있어야 한다.
- LRN-FR-BE-032: 시스템은 클라이언트로부터 학습 이력을 배열(batch) 형태로 받아 일괄 처리할 수 있어야 한다.
- LRN-FR-BE-033: 시스템은 배치 제출된 학습 이력의 유효성을 검증하고 중복 제거를 수행할 수 있어야 한다.
- LRN-FR-BE-034: 시스템은 배치 처리 실패 시 부분 성공 처리와 재시도 로직을 제공해야 한다.
프론트엔드 요구사항
- LRN-FR-FE-001: TBD
1.2 텍스트 크기 조절 기능
백엔드 요구사항
- LRN-FR-BE-035: 시스템은 사용자의 텍스트 크기 설정 값을 저장하고 관리할 수 있어야 한다.
- LRN-FR-BE-036: 시스템은 사용자 계정과 연결하여 설정을 영구 저장해야 한다.
- LRN-FR-BE-037: 시스템은 모든 기기에서 동일한 설정을 적용할 수 있도록 동기화 기능을 제공해야 한다.
프론트엔드 요구사항
- LRN-FR-FE-002: TBD
1.3 TTS(음성 읽기) 기능
백엔드 요구사항
- LRN-FR-BE-038: 시스템은 사용자의 TTS 사용 설정을 저장하고 관리할 수 있어야 한다.
- LRN-FR-BE-039: 시스템은 지원 언어(독일어, 영어)를 관리할 수 있어야 한다.
- LRN-FR-BE-040: 시스템은 TTS 음성 파일을 미리 생성하여 관리할 수 있어야 한다.
프론트엔드 요구사항
- LRN-FR-FE-003: TBD
1.4 미디어 관리(이미지, 영상, 오디오)
백엔드 요구사항
- LRN-FR-BE-041: 시스템은 이미지 파일의 메타데이터와 참조 정보만 관리하며, 실제 미디어 파일은 모바일 앱에서 관리한다.
- 영상 및 오디오 클립의 경우 실제 미디어 파일은 Backend에서 관리되며 메타데이터에 download URL을 제공한다.
- LRN-FR-BE-042: 시스템은 레슨별 미디어 자원 목록과 식별자를 제공할 수 있어야 한다.
- LRN-FR-BE-043: 시스템은 미디어가 속한 레슨이 해금된 사용자만 접근 가능하도록 제어해야 한다.
- LRN-FR-BE-044: 시스템은 미디어 파일 메타데이터에서 개인정보(EXIF 데이터 등)를 자동으로 제거해야 한다.
- LRN-FR-BE-045: 시스템은 오디오 클립을 레슨별로 분류하고 관리할 수 있어야 한다.
보안 강화 요구사항
- LRN-FR-BE-060: 시스템은 모든 학습 콘텐츠 및 미디어 파일에 대해 직접적인 외부 스토리지 URL 노출을 금지해야 한다.
- LRN-FR-BE-061: 시스템은 콘텐츠 접근 시 App Token 기반 인증을 통해 디바이스 무결성을 검증해야 한다.
- LRN-FR-BE-062: 시스템은 콘텐츠 요청 시 POST 메서드와 request body를 사용하여 사용자 식별 정보를 안전하게 전송받아야 한다.
- 사용자 식별 정보는 HTTP body에 포함하여 로깅 및 캐싱 위험을 최소화해야 한다.
- GET 방식을 통한 URL 파라미터나 헤더를 통한 민감정보 전송을 금지해야 한다.
- LRN-FR-BE-063: 시스템은 검증된 요청에 대해 다음 방식으로 콘텐츠를 제공해야 한다:
- JSON 콘텐츠: API 응답에 실제 콘텐츠를 직접 포함하여 제공 (권장)
- 미디어 파일: Google Cloud Storage Signed URL 생성 후 제공
- LRN-FR-BE-064: 시스템은 콘텐츠 유형별로 다음과 같이 제공해야 한다:
- JSON 콘텐츠: API 응답에 직접 포함 (별도 만료시간 없음)
- 미디어 파일: Signed URL로 제공 (30분 유효)
- 사용자별 접근 권한과 연동된 동적 콘텐츠 제공
- LRN-FR-BE-065: 시스템은 콘텐츠 접근 요청 시 다음 보안 검증을 순차적으로 수행해야 한다:
- App Token 유효성 검증 (Auth 도메인 연동)
- 사용자 레슨 해금 상태 확인
- 요청된 콘텐츠의 접근 권한 검증
- 해금되지 않은 경우 접근 거부, 해금된 경우 JSON 콘텐츠 직접 응답
프론트엔드 요구사항
- LRN-FR-FE-004: TBD
이미지 관리
- 앱은 본문 내 이미지 탭 시 이미지 오버레이 화면을 전체 화면으로 표시해야 한다.
- 앱은 이미지 오버레이 화면에서 배경 탭 시 본문 화면으로 돌아가야 한다.
- 앱은 이미지 오버레이 화면에서 두 손가락 제스처로 이미지 확대/축소 기능을 제공해야 한다.
- 앱은 이미지 최대 확대 배율을 원본의 2배로 제한해야 한다.
- 앱은 이미지 최소 축소 배율을 원본 크기로 제한해야 한다.
- 앱은 이미지 확대/축소 상태를 제스처 후에도 유지해야 한다.
영상 관리
- 앱은 영상 재생에 iOS 기본 비디오 플레이어를 사용해야 한다.
- 앱은 지원 형식(MP4, MOV)의 영상을 재생할 수 있어야 한다.
- 앱은 영상 플레이어는 전체화면 모드만 지원해야 한다.
- 앱은 Backend에서 제공하는 download URL을 통해 영상을 스트리밍 또는 다운로드하여 재생할 수 있어야 한다.
오디오 클립 관리
- 앱은 레슨 본문 내에 삽입된 오디오 클립을 재생할 수 있어야 한다.
- 앱은 오디오 클립이 해당 레슨에 대한 부가 설명을 제공하는 별도의 콘텐츠임을 사용자에게 명확히 표시해야 한다.
- 앱은 오디오 클립 재생 버튼을 본문 내 적절한 위치에 표시해야 한다.
- 앱은 오디오 클립 재생 중에는 재생 상태를 시각적으로 표시해야 한다(재생 중 아이콘, 진행률 표시 등).
- 앱은 오디오 클립 재생 제어(재생, 일시정지, 중단) 기능을 제공해야 한다.
- 앱은 지원 형식(MP3, AAC, WAV)의 오디오를 재생할 수 있어야 한다.
- 앱은 Backend에서 제공하는 download URL을 통해 오디오 클립을 스트리밍 또는 다운로드하여 재생할 수 있어야 한다.
- 앱은 오디오 클립과 TTS 기능을 구분하여 관리해야 한다(오디오 클립은 미리 녹음된 부가 설명, TTS는 텍스트 음성 변환).
- 앱은 오디오 클립 재생 시 다른 오디오(TTS 등)가 재생 중이면 기존 오디오를 중단하고 새로운 오디오를 재생해야 한다.
- 앱은 오디오 클립 재생 완료 후 자동으로 재생 버튼 상태로 돌아가야 한다.
1.5 복습 퀴즈
백엔드 요구사항
- LRN-FR-BE-046: 시스템은 모든 일반 레슨을 완료한 사용자에게 복습 퀴즈를 제공할 수 있어야 한다.
- LRN-FR-BE-047: 시스템은 복습 퀴즈를 다음과 같은 시점부터 제공해야 한다:
- 빠른/정상 진도 사용자: 학습 시작일로부터 (일반 레슨 수 + 1)일차부터 (일반 레슨 완료 기간까지는 레슨 추천 우선)
- 느린 진도 사용자: 모든 일반 레슨 완료 다음날부터 ((일반 레슨 수 + 1)일차 이후인 경우)
- 퀴즈는 제공 시작일부터 치료 기간 만료 전날까지 매일 하루에 1개씩 제공된다.
- 예시: 1일차에 모든 일반 레슨 완료 → (일반 레슨 수 + 1)일차부터 퀴즈 제공, 50일차에 마지막 일반 레슨 완료 → 51일차부터 퀴즈 제공
- 치료 완료일에는 퀴즈를 제공하지 않는다.
- LRN-FR-BE-048: 시스템은 일일 퀴즈를 생성하고 관리할 수 있어야 한다.
- LRN-FR-BE-049: 시스템은 복습 퀴즈를 수면 탐구 레슨 순서대로 제공해야 한다 (랜덤이 아닌 순차적 제공).
- LRN-FR-BE-050: 시스템은 퀴즈 유형(O/X 또는 객관식)을 관리할 수 있어야 한다.
- LRN-FR-BE-051: 시스템은 퀴즈 결과를 기록하고 관리할 수 있어야 한다.
- LRN-FR-BE-052: 시스템은 퀴즈 재시도 시 최종 입력된 결과를 정답률 통계에 반영해야 한다.
- LRN-FR-BE-053: 시스템은 퀴즈가 관련된 수면탐구 레슨과 연결되도록 관리해야 한다.
- LRN-FR-BE-054: 시스템은 퀴즈 내용을 정기적으로 업데이트할 수 있어야 한다.
- LRN-FR-BE-055: 시스템은 사용자별 퀴즈 정답률 통계를 제공할 수 있어야 한다.
- LRN-FR-BE-056: 시스템은 퀴즈 버전 관리 기능을 제공하여 퀴즈 개선 및 이력을 추적할 수 있어야 한다.
- LRN-FR-BE-057: 시스템은 각 퀴즈 응답에 퀴즈 버전 정보를 기록하여 사용자가 어떤 버전의 퀴즈에 응답했는지 추적할 수 있어야 한다.
- LRN-FR-BE-058: 시스템은 퀴즈 성능 데이터(정답률, 평균 응답 시간 등)를 버전별로 분석할 수 있어야 한다.
- LRN-FR-BE-059: 시스템은 관련 레슨이 업데이트될 때 연결된 퀴즈의 버전 업데이트 필요성을 평가할 수 있어야 한다.
프론트엔드 요구사항
- LRN-FR-FE-005: TBD
2. 비기능 요구사항
2.1 성능
- LRN-NFR-001: 시스템은 콘텐츠 조회 요청에 대해 1초 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-002: 시스템은 퀴즈 결과 기록에 대해 500ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-003: 시스템은 이미지 로딩에 대해 2초 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-004: 시스템은 영상 버퍼링에 대해 3초 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-005: 시스템은 오디오 클립 로딩에 대해 2초 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-006: 시스템은 진행률 조회에 대해 100ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-007: 시스템은 설정 조회에 대해 100ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-008: 시스템은 설정 업데이트에 대해 200ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-009: 시스템은 콘텐츠 버전 확인에 대해 50ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-010: 앱은 캐싱된 콘텐츠 목록 조회 시 10ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-011: 시스템은 학습 이력 기록에 대해 200ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-012: 시스템은 학습 통계 조회에 대해 500ms 이내의 응답 시간을 제공해야 한다.
- LRN-NFR-013: 시스템은 최소 5,000명 이상의 동시 접속자를 처리할 수 있어야 한다.
- LRN-NFR-014: 시스템은 부하 증가 시 자동 스케일링이 가능해야 한다.
- LRN-NFR-015: 시스템은 각 API의 초당 최대 요청 수 제한을 적용해야 한다.
- LRN-NFR-016: 시스템은 비정상적인 접근 패턴을 감지하고 차단할 수 있어야 한다.
2.2 보안
- LRN-NFR-017: 시스템은 사용자의 하이라이트 및 입력 데이터를 안전하게 보호해야 한다.
- LRN-NFR-018: 시스템은 모든 API 요청에 대해 사용자 인증을 검증해야 한다.
- LRN-NFR-019: 시스템은 사용자 간 데이터 접근 제한을 엄격히 관리해야 한다.
- LRN-NFR-020: 시스템은 모든 액세스에 대한 로그를 기록해야 한다.
- LRN-NFR-021: 시스템은 학습 진행 데이터를 백업 정책에 따라 정기 백업해야 한다.
- LRN-NFR-022: 시스템은 미디어 파일 메타데이터에서 개인정보를 자동 제거해야 한다.
- LRN-NFR-023: 시스템은 모든 미디어 URL이 서명되어야 하며 만료 시간이 설정되어야 한다.
- LRN-NFR-024: 시스템은 사용자가 자신의 학습 데이터, 하이라이트, 입력 내용만 접근할 수 있도록 해야 한다.
- LRN-NFR-031: 시스템은 콘텐츠 보안을 위해 다음 원칙을 준수해야 한다:
- 직접적인 클라우드 스토리지 URL 노출 금지
- POST 방식을 통한 민감 정보 전송으로 로깅/캐싱 위험 최소화
- App Token을 통한 디바이스 무결성 검증
- 사용자별 해금 상태와 연동된 동적 접근 제어
- LRN-NFR-032: 시스템은 콘텐츠 요청 응답 시간을 보안 수준에 맞게 최적화해야 한다:
- App Token 검증: 200ms 이내
- 해금 상태 확인: 300ms 이내
- JSON 콘텐츠 로드 및 응답: 500ms 이내
- 전체 콘텐츠 요청 응답: 1초 이내
2.3 확장성
- (공통 정책 참조) 확장성 원칙은
Platform도메인 기준을 따른다: PLT-NFR-001 - LRN-NFR-025: 시스템은 추가 콘텐츠 및 기능을 수용할 수 있는 확장 가능한 설계를 가져야 한다.
- LRN-NFR-026: 시스템은 추가 퀴즈 유형을 지원할 수 있어야 한다.
- LRN-NFR-027: 시스템은 다양한 콘텐츠 형식(텍스트, 이미지, 영상, 오디오 외 추가 유형)을 지원할 수 있어야 한다.
2.4 가용성
- (공통 정책 참조) 가용성/복구/백업/무중단 배포는
Platform도메인 기준을 따른다: PLT-NFR-004, PLT-NFR-005, PLT-NFR-006, PLT-NFR-007 - LRN-NFR-028: 시스템은 99.9% 이상의 서비스 가용성을 제공해야 한다.
2.5 운영 품질 속성(Platform 연계)
- (공통 정책 참조) 관찰 가능성 표준(메트릭/로깅/트레이싱)은
Platform기준을 따른다: PLT-NFR-008, PLT-NFR-009, PLT-NFR-010
2.6 규제 준수(감사 추적)
- (교차참조) 도메인 데이터 및 설정의 중요 변경은 Audit 기준을 준수한다: AUD-NFR-023, AUD-NFR-024, AUD-NFR-026
3. 제약사항
3.1 기술적 제약
- LRN-CR-001: 시스템은 모바일 앱에서 동작해야 한다.
- LRN-CR-002: 시스템은 서버와 JSON 형식으로 데이터를 주고받아야 한다.
- LRN-CR-003: 영상 재생은 iOS 기본 비디오 플레이어를 사용해야 한다.
- LRN-CR-004: 시스템은 네트워크 연결이 제한적인 환경에서도 최소한의 기능을 제공해야 한다.
3.2 비즈니스 제약
- LRN-CR-005: 계정 생성 시 1번 레슨만 해금되어 있어야 한다.
- LRN-CR-006: 레슨은 완료 기반 잠금 해제 방식으로 제공되어야 한다(1-45번까지는 이전 레슨 완료 시 다음 레슨 해금, 마지막 46번은 45개 레슨 완료 여부와 관계없이 치료 기간 끝나는 날에 해금).
- LRN-CR-007: 수면탐구 레슨 45개를 완료한 사용자만 복습 퀴즈를 이용할 수 있다.
- LRN-CR-008: 복습 퀴즈는 학습 진도에 따라 다음 시점부터 제공된다:
- 빠른/정상 진도: 학습 시작일로부터 46일차부터
- 느린 진도: 45번 레슨 완료 다음날부터 (46일차 이후)
- LRN-CR-009: 해금된 콘텐츠는 영구적으로 이용 가능해야 한다.
- LRN-CR-010: 해금 순서는 미리 정의된 학습 경로를 따라야 한다.
- LRN-CR-011: 한 번 완료된 레슨은 취소할 수 없어야 한다.
3.3 사용자 경험 제약
- LRN-CR-012: 텍스트 크기 조절은 사용자가 읽기 편한 범위 내에서 설정 가능해야 한다.
- LRN-CR-013: 하이라이트 및 사용자 입력은 실시간으로 저장되어야 한다.
- LRN-CR-014: 레슨 학습 진행률은 시각적으로 명확하게 표시되어야 한다.
- LRN-CR-015: 자동 저장된 사용자 입력 내용은 다시 해당 레슨에 접근할 때 자동으로 로드되어야 한다.
4. 가정사항
4.1 시스템 환경
- LRN-AR-001: 시스템은 클라우드 기반 서버에서 운영될 것이다.
- LRN-AR-002: 시스템은 모바일 앱과의 API 통신을 통해 데이터를 주고받을 것이다.
- LRN-AR-003: 시스템은 인증된 사용자에게만 레슨을 제공할 것이다.
4.2 사용자 환경
- LRN-AR-004: 사용자는 모바일 디바이스를 통해 레슨에 접근할 것이다.
- LRN-AR-005: 사용자는 인터넷 연결 상태에서 대부분의 기능을 사용할 것이다.
- LRN-AR-006: 사용자는 레슨을 순차적으로 학습할 것으로 예상된다.
- LRN-AR-007: 사용자는 TTS 및 텍스트 크기 조절과 같은 접근성 기능을 필요로 할 수 있다.
5. 의존성
5.1 내부 의존성
- LRN-DR-001: 시스템은 Auth 도메인에 인증을 위해 의존한다.
- LRN-DR-002: 시스템은 User 도메인에 사용자 정보를 위해 의존한다.
5.2 외부 의존성
- LRN-DR-003: 모바일 앱은 로컬 콘텐츠 저장소에 의존한다.
- LRN-DR-004: 시스템은 TTS 서비스에 의존할 수 있다.
6. GDPR 컴플라이언스 (개인정보 보호)
6.1 학습 콘텐츠 개인화
백엔드 요구사항
- LRN-FR-BE-036: 시스템은 학습 데이터를 보호해야 한다.
- 학습 진행 상황 암호화
- 개인화 추천 데이터 최소화
- 학습 패턴 익명화
- 콘텐츠 접근 이력 보호
- LRN-FR-BE-037: 시스템은 학습 분석 데이터를 관리해야 한다.
- 집계된 학습 통계만 공개
- 개인별 성과 데이터 암호화
- 비교 분석 시 익명화
- 학습 이력 삭제 옵션
7. ISO27001 정보보호 관리
7.1 콘텐츠 보안
백엔드 요구사항
- LRN-FR-BE-038: 시스템은 학습 콘텐츠를 보호해야 한다.
- DRM 적용
- 콘텐츠 무단 복사 방지
- 접근 권한 검증
- 콘텐츠 버전 관리
8. 변경 이력
| 버전 | 날짜 | 작성자 | 변경 내용 |
|---|---|---|---|
| 0.1.0 | 2025-01-03 | bok@weltcorp.com | 최초 작성 |
| 0.2.0 | 2025-06-09 | bok@weltcorp.com | 콘텐츠 버전 관리 및 캐싱 전략 추가 |
| 0.3.0 | 2025-06-10 | bok@weltcorp.com | 오디오 클립 기능 추가 - 레슨 본문 내 부가 설명용 오디오 재생 기능 구현 |
| 0.4.0 | 2025-06-10 | bok@weltcorp.com | 레슨 학습 이력 추적 및 학습 소요시간 측정 기능 추가 |
| 0.5.0 | 2025-08-07 | bok@weltcorp.com | 요구사항 ID 체계 적용 - LRN 도메인 코드 적용 (LRN-FR-BE-xxx, LRN-FR-FE-xxx, LRN-NFR-xxx, LRN-CR-xxx, LRN-AR-xxx, LRN-DR-xxx) |
| 0.6.0 | 2025-08-12 | bok@weltcorp.com | GDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 학습 콘텐츠 개인화, 콘텐츠 보안 |
| 0.7.0 | 2025-08-18 | bok@weltcorp.com | 콘텐츠 보안 강화 요구사항 추가 - App Token 기반 인증, POST body 방식 민감정보 전송, 직접 GCS URL 노출 금지, Signed URL 기반 안전한 콘텐츠 제공 (LRN-FR-BE-060 |