Skip to content

[버그][건의] 실시간 리스트와 실시간 변수 값 이 사라지는 심각한 동기화 문제 + 기타버그 #3065

@pkselpl2

Description

@pkselpl2

버그 제목

실시간 리스트(Real-time List)와 실시간 변수(Real-time Variable) 사용 시 값이 불안정하게 동작하는 문제

버그 상세 설명

엔트리에서 제공하는 실시간 변수실시간 리스트 기능은 작품을 공유하거나 여러 사람이 동시에 참여하는 프로젝트(실시간 랭킹, 공동 작품, 온라인 데이터 수집 등)에서 매우 중요한 기능입니다.

하지만 현재 develop 브랜치 기준으로 이 기능이 매우 불안정하여, 실제 교육 현장이나 학생 작품에서 거의 사용하기 어려운 수준입니다.

발생하는 주요 증상 (자주 관찰되는 순서)

EntryJS는 교육용 블록 코딩 플랫폼의 핵심 라이브러리이지만, 오랜 레거시 코드로 인해 여러 버그가 누적되어 있습니다.
아래는 사용자가 보고한 전체 우선순위를 순서대로 자세히 정리한 내용입니다. 각 항목에 상세 설명, 주요 증상, 관련 파일, 난이도, 추천 PR 전략을 포함했습니다.
우선순위 1 (최고 우선순위 - 가장 먼저 진행 추천)

  1. 실시간 리스트(실리) 버그 고치기
  2. 실시간 변수(실변) 버그 고치기
  3. “신호를 받았는가?” 블록 추가
    상세 설명
    실시간 변수와 실시간 리스트는 작품을 서버에 저장하고 여러 사람이 동시에 값을 공유·동기화할 수 있는 핵심 기능입니다. 실시간 랭킹, 공동 설문, 온라인 투표, 데이터 수집 작품, 협업 프로젝트 등에서 필수적으로 사용됩니다.
    현재 이 기능은 상당히 불안정합니다. 값이 갑자기 undefined로 변하거나, 항목이 중복 복제되거나, 저장 후 불러올 때 일부(특히 마지막) 항목이 사라지는 문제가 자주 발생합니다. 네트워크가 조금만 느려지거나 브라우저 탭을 여러 개 열면 증상이 심해지며, 리스트 항목이 30개 이상일 때 거의 매번 재현됩니다.
    또한 “신호 보내기” 블록은 존재하지만, “신호를 받았는가?” (특정 신호 수신 여부를 체크하는 블록)가 없어서 이벤트 기반 작품 제작이 불편합니다.
    주요 증상

값이 undefined로 변경
항목 중복 복제
저장 후 값 사라짐 (특히 마지막 항목)
네트워크 지연 또는 다중 탭에서 빈번 발생
리스트 크기가 클수록 증상 악화

관련 파일

src/class/variable_container.js (실시간 동기화 핵심)
src/playground/blocks/block_variable.js
src/class/engine.js
신호 블록 관련: src/playground/blocks/block_event.js 또는 block_signal.js, extern/util/static.js

난이도: 중간
추천 PR 전략: 실시간 리스트/변수 버그만 먼저 하나의 PR로 보내고, 다음 PR에서 “신호를 받았는가?” 블록을 별도로 추가.
중요성: 엔트리의 실시간 협업 기능을 살리는 핵심 과제입니다.
우선순위 2
엔트리로 향하는 naver.me 주소 최종 주소를 확인하고 경고 페이지 안 뜨게 하기 / 해킹사이트 오탐지 제거
상세 설명
naver.me 단축 URL을 작품 설명, 링크 블록, 또는 외부 자료 링크로 사용할 때 “이 사이트는 해킹 사이트일 수 있습니다”라는 보안 경고 페이지가 자주 나타납니다.
단축 URL의 최종 리다이렉트 주소를 제대로 확인하지 않고 단축 도메인만 보고 경고를 띄우는 로직 때문으로 보입니다. 학생들이 블로그, 유튜브, 교육 자료 등을 공유할 때마다 불편을 겪습니다.
주요 증상

naver.me 링크 사용 시 불필요한 해킹 경고 페이지 표시
최종 URL 확인 없이 단축 도메인으로만 판단

관련 파일

src/util/ 폴더의 URL 처리 및 보안 검증 로직
외부 링크 삽입 관련 코드 (playground/core)

난이도: 낮음 ~ 중간
추천 PR 전략: 우선순위 1 완료 후 바로 진행. whitelist 추가와 리다이렉트 확인 로직 강화로 비교적 빠르게 해결 가능.
중요성: 외부 링크 공유가 많은 교육 작품에서 사용자 경험(UX)을 크게 향상시킬 수 있습니다.
우선순위 3 (버그 다수 - 2~3개씩 묶어서 PR 추천)

  1. 오프라인 귀신 블록 버그
    오프라인 에디터에서 특정 블록이 예상치 못하게 동작하거나 사라지는 문제. 오프라인 모드 특성상 EntryJS만으로는 해결이 어려울 수 있음 (불가능하면 스킵 가능).
  2. 블록 고정 버그
    블록을 드래그하거나 배치한 후 고정 상태가 풀리지 않는 현상.
  3. 10으로 모든 숫자가 변하는 버그
    특정 상황(반복문, 계산 등)에서 모든 숫자 값이 갑자기 10으로 바뀌는 문제.
  4. 문자 숫자값이 10이 되는 버그
    문자열을 숫자로 변환할 때 의도와 다르게 10으로 파싱되는 타입 변환 버그.
  5. 벡터 버그
    벡터 모드로 그린 그림이 저장 후, 오브젝트 복제 후, 장면 전환 후 사라지거나 깨지는 문제.
  6. 그룹화 버그
    여러 오브젝트를 그룹화할 때 그룹이 제대로 유지되지 않거나 깨지는 현상.
  7. 블록 눌림 버그
    블록 클릭/드래그 후 눌린 상태가 해제되지 않는 UI 버그.
  8. 소리 편집 버그
    소리 편집기에서 편집 내용이 제대로 적용되지 않거나 저장 후 소리가 사라지는 문제.
    주요 증상 요약
    기본적인 블록 조립, 그래픽, 계산, 사운드 기능에 직접적인 영향을 주는 버그들입니다. 특히 숫자 관련 버그와 벡터 버그는 거의 모든 작품 제작에서 자주 마주칩니다.
    관련 파일 (추정)

숫자 버그: src/util/ 또는 변수 타입 변환 로직
벡터 버그: src/class/entity.js + src/graphicEngine/
블록 고정/눌림: src/playground/ 드래그&드롭, mouse event
그룹화: src/class/container.js
소리: 소리 편집 관련 클래스

난이도: 버그마다 다름 (벡터와 숫자 버그는 중간 이상)
추천 PR 전략: 숫자 관련 버그(3번 + 4번)부터 묶어서 PR → 벡터 + 그룹화 → 나머지 순으로 2~3개씩 나누어 진행.
우선순위 4 (마지막으로 진행)

  1. 하드웨어가 자동으로 연결 없이 로드되고, UI 아래쪽이 잘리는 버그
    하드웨어 확장 블록 사용 시 자동 연결이 되지 않고, 하드웨어 패널 아래 부분이 잘려서 보이지 않는 로딩 및 UI 버그입니다. 운영자님이 특히 중요하게 생각하는 하드웨어 기능에 문제가 있습니다.
  2. 챗봇 블록 추가 (신규 기능)
    현재 엔트리에 전용 챗봇 블록이 없습니다. “챗봇 초기화”, “메시지 보내기”, “응답 받기”, “대화 기록 관리” 등의 블록을 새로 만들어 OpenAI, Grok 등 LLM과 쉽게 연동할 수 있게 하는 기능입니다.
    상세 설명

하드웨어: 자동 연결 실패 + UI 잘림
챗봇: 새 블록 파일 생성 (block_chatbot.js) 및 등록 필요

관련 파일

하드웨어: src/class/hardware/ + UI 레이아웃 (css/playground)
챗봇: src/playground/blocks/block_chatbot.js + extern/util/static.js + 언어 파일

난이도

하드웨어 버그: 중간
챗봇 블록 추가: 중간 ~ 높음 (API 연동 + 상태 관리 필요)

추천 PR 전략: 하드웨어 버그 먼저 수정 → 챗봇 블록은 별도의 큰 PR로 진행.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions