SCORM 진행 상황 추적
SecureCodingHub는 SCORM을 통해 교육 진행 상황을 LMS로 다시 보고합니다. 완료, 점수 및 세션 시간을 추적합니다.
진행 상황 보고 방식
SecureCodingHub는 SCORM 1.2 및 SCORM 2004(3판 및 4판) 보고 모델을 모두 구현하므로 동일한 콘텐츠 패키지가 표준을 준수하는 모든 LMS 내에서 실행됩니다. 활성 세션 동안 플레이어는 LMS가 실행 시 주입하는 SCORM API 어댑터를 통해 LMS와 런타임 데이터를 교환하며, 그 교환이 관리자가 성적부 또는 완료 보고서에서 보는 네 가지 데이터 포인트를 생성합니다. 아래 필드는 모든 커밋에 기록하는 표준 세트입니다. 특정 LMS 공급업체는 다른 컬럼 레이블 아래에 표시하지만 기본 값은 동일합니다.
학습자가 교육을 완료하면 SCORM 브리지는 다음 데이터를 LMS로 다시 보냅니다:
- 완료 상태 (incomplete → completed)
- 점수 (0-100)
- 세션 시간
- 재개를 위한 북마크
이들 각각은 특정 SCORM 데이터 모델 요소에 매핑됩니다. 완료 상태는 SCORM 2004에서 cmi.completion_status에, SCORM 1.2에서 cmi.core.lesson_status에 기록됩니다. 점수는 두 버전 모두 cmi.score.raw에 기록되며, 2004에서만 cmi.score.scaled에 스케일된 등가물이 있습니다(1.2에는 스케일 필드가 없음). 세션 시간은 ISO 8601 지속 시간 형식으로 cmi.session_time에 누적되며, 재개 북마크는 cmi.suspend_data로 직렬화됩니다. 브리지는 활성 세션 동안 모든 하트비트 틱에서 이러한 요소를 다시 커밋하므로, 중단된 세션도 LMS가 표시할 수 있는 부분적으로 보고된 상태를 생성합니다.
완료 기준
SCORM 세션은 학습자가 조직 내 모든 필수 과제를 완료했을 때, 또는 — 보류 중인 필수 과제가 없는 경우 — 기록된 진행 상황이 있는 즉시 완료로 표시됩니다. 임계값은 오늘날 과제별 또는 패키지별로 구성할 수 없습니다. 동일한 로직이 플랫폼에서 생성된 모든 SCORM 패키지에 출하됩니다.
SCORM 2004는 완료(학습자가 활동을 완료했는가)과 성공(통과했는가) 사이를 구분합니다. 브리지는 둘 다 보고합니다: cmi.completion_status는 활동이 완료되었는지 여부를 반영하고, cmi.success_status는 평균 통과 점수 임계값이 충족되었는지 여부를 반영합니다. SCORM 1.2에는 별도의 완료/성공 분리가 없습니다 — 브리지는 완료가 true이면 passed 또는 failed를, 그렇지 않으면 incomplete를 cmi.core.lesson_status에 기록합니다.
점수 계산
LMS가 수신하는 점수는 학습자의 연습 진행 상황에서 서버 측에서 계산됩니다. 내부 점수 척도는 챌린지당 0에서 160까지 실행됩니다(1단계 + 2단계, 첫 시도에서 힌트 없이 완료된 경우 양쪽 단계 모두 최대 100). SCORM 친화적인 0~100 숫자를 생성하기 위해, 브리지는 학습자의 완료된 챌린지에 걸쳐 연습 점수를 평균하고 1.6으로 나눈 다음 결과를 100으로 제한합니다. 변환은 고정되어 있습니다. 이 릴리스에는 패키지별 또는 과제별 가중치가 없습니다.
| 메트릭 | 계산 방법 |
|---|---|
| 원시 점수 | min(avg(challengeScores) / 1.6, 100) |
| 최대 점수 | 100 |
| 최소 점수 | 0 |
| 통과 점수 | 70 (런처에 하드코딩됨, 패키지별로 구성 불가) |
재개 / 일시 중지
학습자가 완료하기 전에 세션을 닫는 경우:
- 현재 위치가 북마크로 저장됨
- 다음 실행이 북마크에서 재개됨
- 세션 하트비트가 활성 사용 중 세션을 유지함
전체 북마크 — 학습자가 어느 주제에, 어느 챌린지에, 어느 단계에, 어떤 힌트를 공개했는지 — 는 SCORM 패키지 내부가 아니라 SecureCodingHub 세션 레코드의 서버 측에 있습니다. 브리지가 실제로 cmi.suspend_data에 넣는 것은 SecureCodingHub 세션 ID만 포함하는 작은 JSON 봉투입니다(예: {"sid":"..."}). 재개 시 브리지는 해당 ID를 다시 읽어내고, SecureCodingHub 세션 엔드포인트를 호출하며, 서버 측 상태를 사용하여 플레이어를 재구성합니다. 따라서 LMS는 챌린지 콘텐츠, 답변 이력 또는 힌트 상태를 보유하지 않습니다.
SCORM은 1.2 사양에서 cmi.suspend_data에 64KB 상한을 적용하며, 많은 2004 구현에서도 사실상 동일한 제한이 있습니다. 브리지가 LMS로 세션 ID만 다시 기록하기 때문에, 일시 중지 페이로드는 과제의 길이나 학습자가 일시 중지하고 재개하는 횟수에 관계없이 1킬로바이트 훨씬 미만으로 유지됩니다.
하트비트
학습자가 SCORM 플레이어를 열어 둔 동안, 런처는 세션 ID, 현재 북마크 및 누적된 세션 시간을 가지고 60초마다 POST /api/sch/scorm/heartbeat에서 SecureCodingHub 백엔드에 하트비트를 발사합니다. 동일한 틱은 LMS 측에서 SCORM 데이터 모델을 다시 커밋하므로 완료, 점수, 세션 시간 및 일시 중지 데이터가 명시적인 저장 이벤트를 기다리지 않고 동기화 상태를 유지합니다.
| 설정 | 값 |
|---|---|
| 간격 | 활성 세션 중 60초마다 |
| 엔드포인트 | POST /api/sch/scorm/heartbeat |
| 페이로드 | {"sessionId":"…","lmsBookmark":"…","sessionTime":"…"} |
| 용도 | LMS 세션이 시간 초과되지 않도록 유지하고 양쪽에서 완료 / 점수 / 일시 중지 데이터를 새로 고침 |
진행 상황 보기
관리자는 다음에서 SCORM 세션을 볼 수 있습니다:
SecureCodingHub 관리자 패널 → SCORM → 활성 세션
LMS 성적부 / 완료 보고서
SecureCodingHub 관리자 보기는 세분화된 분석의 진실 출처입니다: 챌린지별 시도, 힌트 사용, 작업 시간 및 학습자가 선택한 특정 수정안입니다. LMS 성적부는 SCORM 요약 — 완료, 점수, 세션 시간 — 을 보며, 컴플라이언스 보고 및 인증서 발급에 적합한 화면이지만, 기본 단계별 데이터에 대한 가시성은 없습니다. 대부분의 관리자는 두 보기를 함께 사용합니다: "학습자가 완료하고 통과했는가" 보고를 위한 LMS와 "코호트가 어디에서 어려움을 겪고 있으며 무엇을 조정해야 하는가" 결정을 위한 SecureCodingHub 대시보드입니다. 더 깊은 분석 워크플로와 대시보드에서 관리자 역할 권한을 설정하는 방법은 관리자 대시보드 문서와 함께 역할 및 권한 가이드를 참조하세요.
xAPI 방출은 로드맵에 있으며 오늘날 사용할 수 없습니다. 출시되면 SecureCodingHub는 SCORM 커밋과 함께 동일한 챌린지별 이벤트(힌트 공개, 잘못된 시도, 챌린지 전환)를 Learning Record Store에 푸시할 수 있습니다. 그때까지는 SCORM 커밋 세트가 유일한 즉시 사용 가능한 LMS 화면이며 SecureCodingHub 관리자 대시보드가 이벤트별 세분성을 볼 수 있는 유일한 장소입니다.