GSoC 2026·1주차 — 학생이 ‘과제 열기’를 클릭하면 어떻게 될까?

발행: (2026년 6월 7일 AM 02:46 GMT+9)
8 분 소요
원문: Dev.to

Source: Dev.to

CircuitVerse에서 LMS–LTI 통합 테스트

조용한 통합을 디버깅하는 뒷이야기 — 그리고 존재하는 코드와 실제 동작하는 코드 사이의 차이를 깨달은 이야기.

프로젝트: CircuitVerse · 주차: 1 · 초점: LMS–LTI 과제 워크플로우 테스트 및 수정


TL;DR

첫 주에 LMS–LTI 전체 흐름을 처음부터 끝까지 테스트했습니다 — 학생이 Canvas에서 과제를 열고, CircuitVerse에서 회로를 만들고, 교사가 다시 Canvas에서 채점하는 과정입니다. 겉으로는 기능이 완전해 보였지만, 실제로는 서로 연결된 네 가지 버그가 조용히 핸드오프를 깨뜨리고 있었습니다. 각각을 어떻게 찾고 고쳤는지 아래에 정리했습니다.

증상 근본 원인 해결 방법

1
학생이 로그인 페이지로 이동
런치 후 세션이 설정되지 않음
sign_in(@user) 추가

2
학생이 잘못된 페이지로 이동
리다이렉트가 프로젝트가 아닌 그룹 홈을 가리킴
user_project_path 로 리다이렉트

3
교사가 채점 불가
마감 시간이 지나야 채점 폼이 표시됨
테스트를 위해 과거 마감 허용

4
Canvas에 점수가 0으로 표시
기능 플래그 비활성, LTI 세션 누락, maxPoints = 0
플래그 활성화, Canvas 통해 런치, 최대 점수 설정


먼저, 배경: LMS–LTI란 무엇인가?

LMSLearning Management System(학습 관리 시스템)의 약자입니다 — 대학에서 강좌를 관리하고, 과제를 게시하며, 성적을 추적하는 소프트웨어를 말합니다. Canvas, Moodle, Google Classroom, Blackboard 등이 대표적인 예시입니다.

LTILearning Tools Interoperability(학습 도구 상호 운용성)의 약자이며, LMS가 CircuitVerse와 같은 외부 도구와 통신할 수 있게 해 주는 산업 표준입니다. 이론적으로는:

  • 학생이 Canvas 안의 링크를 클릭하면 바로 CircuitVerse로 이동하고, 신원은 이미 확인된 상태다.
  • 교사는 Canvas에서 바로 채점을 한다.
  • 점수가 자동으로 되돌아온다.

실제로 이 매끄러운 핸드오프를 구현하는 것이 가장 까다로운 부분입니다.


테스트 환경 설정

실제 테스트를 진행하기 전에 두 시스템을 나란히 띄우고 서로 통신하도록 해야 했습니다. 그래서 다음을 구축했습니다:

  • 로컬 Canvas 인스턴스와 로컬 CircuitVerse 인스턴스.
  • Canvas에 테스트 학생테스트 교사를 등록한 테스트 코스.
  • CircuitVerse를 가리키도록 설정한 LTI 과제.

모든 준비가 끝난 뒤, 학생 계정으로 로그인하고 과제 링크를 클릭했습니다.


버그 1: 학생이 로그인 페이지로 이동

첫 번째 스크린샷이 모든 상황을 보여줍니다. 과제 페이지가 아니라 /users/sign_in — CircuitVerse의 기본 로그인 페이지로 리다이렉트되었습니다.

LTI 핸드오프 자체는 정상적으로 작동했습니다. Canvas는 다음 정보를 모두 CircuitVerse에 전달했죠:

  • 누구가 학생인지
  • 어떤 코스에 속했는지
  • 어떤 과제를 열었는지

CircuitVerse는 이 정보를 읽어 일치하는 사용자를 찾고, 학생이 채울 빈 프로젝트까지 생성했습니다. 하지만 학생이 이제 로그인했다는 사실을 인증 시스템에 알리지 않았습니다.

호텔에 비유하자면, 프런트 데스크가 예약을 확인하고 신분증을 확인했지만, 방 열쇠를 실제로 활성화하지 않은 상황과 같습니다. 모든 문이 “접근 거부”라고 외칩니다.

수정은 학생 LTI 런치를 처리하는 코드에 한 줄을 추가하는 것이었습니다:

sign_in(@user)

전체 화면 모드 진입
전체 화면 모드 종료

이 줄을 과제 화면을 보여주기 전에 삽입하면 세션이 올바르게 설정됩니다. 이제 학생은 인증된 상태로 바로 과제로 이동합니다.


버그 2: 학생이 잘못된 페이지로 이동

인증 문제는 해결됐지만, 이제 학생은 과제 대신 코스 개요 페이지에 머물게 됩니다. LTI 핸드오프 중에 CircuitVerse가 표시하는 “잠시 기다려 주세요” 페이지가 그룹 홈 페이지를 새 탭으로 열었기 때문입니다. 학생 개별 작업이 아니라 그룹 전체 페이지였습니다.

해결은 개념적으로 간단했습니다: 자동 생성된 프로젝트 페이지로 바로 리다이렉트합니다.

# Before: 학생을 코스 홈 페이지로 보냈음
group_path(@group)

# After: 학생을 바로 자신의 프로젝트로 보냄
user_project_path(@user, @project)

전체 화면 모드 진입
전체 화면 모드 종료

이제 새 탭이 열리면 학생은 자신의 프로젝트 페이지에 도착하고, “Launch Simulator”(시뮬레이터 실행) 버튼이 눈에 띕니다.


버그 3: 교사가 채점할 수 없음

학생 흐름이 정상화되자 교사 입장에서 테스트했습니다. 교사는 Canvas에서 동일한 LTI 과제를 실행하고, 과제 관리 페이지에 도착해 학생이 만든 회로 미리보기를 볼 수 있었습니다. 하지만 채점 폼이 전혀 보이지 않았습니다.

코드를 살펴보니, 채점 폼은 과제

0 조회
Back to Blog

관련 글

더 보기 »

모바일 한여름 열풍

!Cover image for Mobile Midsommer Madnesshttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploa...