본문으로 건너뛰기

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: 시스템은 레슨 추천 시 다음 로직을 적용해야 한다:
    1. 치료 기간 마지막 날: 최종 레슨만 추천 (모든 일반 레슨 완료 여부 및 사용자 진도와 관계없이, 다른 미완료 레슨이 있어도 최종 레슨만 추천)
    2. 진도가 빠른 사용자: 학습 시작일 기준 일차에 해당하는 레슨 추천 (예: 4일차 → 4번 레슨)
    3. 진도가 느린 사용자: 다음 미완료 레슨 추천 (현재 완료한 레슨 + 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: 시스템은 콘텐츠 접근 요청 시 다음 보안 검증을 순차적으로 수행해야 한다:
    1. App Token 유효성 검증 (Auth 도메인 연동)
    2. 사용자 레슨 해금 상태 확인
    3. 요청된 콘텐츠의 접근 권한 검증
    4. 해금되지 않은 경우 접근 거부, 해금된 경우 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 연계)

2.6 규제 준수(감사 추적)

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.02025-01-03bok@weltcorp.com최초 작성
0.2.02025-06-09bok@weltcorp.com콘텐츠 버전 관리 및 캐싱 전략 추가
0.3.02025-06-10bok@weltcorp.com오디오 클립 기능 추가 - 레슨 본문 내 부가 설명용 오디오 재생 기능 구현
0.4.02025-06-10bok@weltcorp.com레슨 학습 이력 추적 및 학습 소요시간 측정 기능 추가
0.5.02025-08-07bok@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.02025-08-12bok@weltcorp.comGDPR 및 ISO27001 컴플라이언스 요구사항 추가 (섹션 6, 7) - 학습 콘텐츠 개인화, 콘텐츠 보안
0.7.02025-08-18bok@weltcorp.com콘텐츠 보안 강화 요구사항 추가 - App Token 기반 인증, POST body 방식 민감정보 전송, 직접 GCS URL 노출 금지, Signed URL 기반 안전한 콘텐츠 제공 (LRN-FR-BE-060065, LRN-NFR-031032)