Skip to content

리스트 변수 항목 수 5,000개 제한 기능 추가#3060

Merged
chanlee merged 13 commits intodevelopfrom
issue/10179
Mar 24, 2026
Merged

리스트 변수 항목 수 5,000개 제한 기능 추가#3060
chanlee merged 13 commits intodevelopfrom
issue/10179

Conversation

@prisml
Copy link
Copy Markdown
Contributor

@prisml prisml commented Mar 23, 2026

✨ 기능 설명

리스트 변수에 항목 수 상한(5,000개)을 적용하여 대량 데이터로 인한 성능 저하 및 브라우저 멈춤 현상을 방지합니다.

배경:

  • 리스트 변수에 제한 없이 항목을 추가할 수 있어, 수만 개 이상의 데이터가 쌓이면 렌더링 및 실행 성능이 급격히 저하되는 문제가 있었습니다.
  • 특히 반복문 내에서 리스트에 계속 추가하는 블록 코드를 작성할 경우, 브라우저가 응답 불가 상태에 빠질 수 있었습니다.

✅ 변경 내용

1. 리스트 항목 5,000개 제한 로직 추가 (listVariable.js)

  • LIST_MAX_LENGTH = 5000 상수 정의
  • _trimToMaxLength(): 항목 추가/삽입 후 5,000개를 초과하면 오래된 항목부터 자동 제거 (auto-trim)
  • _showListFullWarning(): 초과 시 사용자에게 토스트 경고 표시
  • 생성자에서 기존 프로젝트 로드 시 5,000개 초과 데이터가 있으면 잘라낸 뒤 모달 알림 표시

2. WS 리스트 UI에서 항목 수 제한 경고 (variable_container.js)

  • 리스트 길이 직접 입력 시 5,000개 초과하면 자동으로 5,000으로 제한 + 토스트 경고
  • + 버튼으로 항목 추가 시 5,000개 도달하면 토스트 경고 후 추가 차단

3. 다국어 메시지 추가 (extern/lang/ko.js, en.js)

  • list_cant_add_item: 경고 타이틀
  • list_max_length_exceeded: 항목 수 초과 안내 메시지
  • list_truncated_on_load: 프로젝트 로드 시 초과 알림 본문
  • list_truncated_on_load_title: 프로젝트 로드 시 초과 알림 타이틀

4. 코드 스타일 정리

  • .eslintrcendOfLine: "off" 추가 (크로스 플랫폼 줄바꿈 호환)
  • .prettierrcendOfLine: "auto" 추가
  • 변경 파일 내 function()function () 포매터 자동 수정 반영

🎯 예상 영향 범위

상황 동작
블록 실행 중 리스트 항목 추가/삽입 시 5,000개 초과 오래된 항목 자동 제거 + 토스트 경고
WS UI에서 리스트 길이를 5,000 초과로 입력 5,000으로 자동 제한 + 토스트 경고
WS UI에서 + 버튼으로 5,000개 이상 추가 시도 추가 차단 + 토스트 경고
기존 프로젝트에 5,000개 초과 리스트가 있을 때 로드 최근 5,000개만 유지 + 모달 알림
5,000개 미만 리스트 사용 기존과 동일 (영향 없음)

- _isListFull() 메서드로 리스트 길이 체크 로직 분리 ✅
- _showListFullWarning() 메서드로 경고 토스트 표시 분리 🔔
- appendValue, insertValue에 제한 검증 추가 🚫
- 로드 시 5000개 초과 리스트 자動 truncate + 모달 알림 ✂️
- cloudVariable 16MB BSON 제한 오류 방지 💾
- list_cant_add_item: 리스트 항목 추가 불가 타이틀 🇰🇷🇺🇸
- list_max_length_exceeded: 5000개 제한 초과 메시지 ⚠️
- list_truncated_on_load: 로드 시 truncate 알림 메시지 📝
- 기획서 확정 전에 임의로 작성했던 문구를 기획서 확정 문구로 변경 📝
- 토스트 경고 문구: '리스트 항목은 최대 5,000개까지 추가할 수 있어요.' 🔔
- 작품 진입 시 팝업 문구: 기획서의 알림 팝업 문구 반영 💬
- list_truncated_on_load_title 키 추가 (팝업 제목용: 알림/Notice) ➕
- en.js 영문 메시지도 동일하게 업데이트 🌐
- 기획서 요구사항: 실행 중 초과 시 차단이 아닌 자동으로 최신 5,000개만 유지 🔄
- appendValue/insertValue: 차단(return) → 추가 허용 후 _trimToMaxLength()로 트리밍 ✂️
- _trimToMaxLength: slice(-5000)으로 최신 데이터 유지 + 경고 토스트 자동 표시 📢
- 생성자: slice(0, 5000) → slice(-5000)으로 최신 데이터 유지하도록 변경 🔀
- 팝업 제목에 list_truncated_on_load_title 키 사용 🏷️
- _isListFull() 제거, _trimToMaxLength()로 통합 🧹
- 기획서: 작품 제작 중 '+' 버튼이나 숫자 입력으로 5,000개 초과 시 빨간 토스트 표시 🔴
- '+' 버튼 클릭 시 5,000개 도달이면 alert 토스트 후 추가 차단 🚫
- 숫자 직접 입력으로 5,000 이상 설정 시에도 alert 토스트 표시 🔢
- listVariable.js의 _showListFullWarning도 warning → alert으로 통일 🎨
- 기획서의 빨간색 경고 토스트 디자인에 맞춰 Entry.toast.alert 사용 ⚠️
- Prettier v3 기본값이 lf라서 Windows CRLF 파일에서 모든 줄에 Delete CR 에러 발생 🐛
- .prettierrc에 endOfLine: auto 추가하여 기존 줄바꿈 유지하도록 설정 ✅
- 멀티루트 워크스페이스에서 @babel/eslint-parser가 .babelrc를 못 찾는 문제 해결 🔧
- .eslintrc parserOptions에 requireConfigFile: false 추가 📝
- _isListFull() 메서드로 리스트 길이 체크 로직 분리 ✅
- _showListFullWarning() 메서드로 경고 토스트 표시 분리 🔔
- appendValue, insertValue에 제한 검증 추가 🚫
- 로드 시 5000개 초과 리스트 자動 truncate + 모달 알림 ✂️
- cloudVariable 16MB BSON 제한 오류 방지 💾
- list_cant_add_item: 리스트 항목 추가 불가 타이틀 🇰🇷🇺🇸
- list_max_length_exceeded: 5000개 제한 초과 메시지 ⚠️
- list_truncated_on_load: 로드 시 truncate 알림 메시지 📝
- 기획서 확정 전에 임의로 작성했던 문구를 기획서 확정 문구로 변경 📝
- 토스트 경고 문구: '리스트 항목은 최대 5,000개까지 추가할 수 있어요.' 🔔
- 작품 진입 시 팝업 문구: 기획서의 알림 팝업 문구 반영 💬
- list_truncated_on_load_title 키 추가 (팝업 제목용: 알림/Notice) ➕
- en.js 영문 메시지도 동일하게 업데이트 🌐
- 기획서 요구사항: 실행 중 초과 시 차단이 아닌 자동으로 최신 5,000개만 유지 🔄
- appendValue/insertValue: 차단(return) → 추가 허용 후 _trimToMaxLength()로 트리밍 ✂️
- _trimToMaxLength: slice(-5000)으로 최신 데이터 유지 + 경고 토스트 자동 표시 📢
- 생성자: slice(0, 5000) → slice(-5000)으로 최신 데이터 유지하도록 변경 🔀
- 팝업 제목에 list_truncated_on_load_title 키 사용 🏷️
- _isListFull() 제거, _trimToMaxLength()로 통합 🧹
- 기획서: 작품 제작 중 '+' 버튼이나 숫자 입력으로 5,000개 초과 시 빨간 토스트 표시 🔴
- '+' 버튼 클릭 시 5,000개 도달이면 alert 토스트 후 추가 차단 🚫
- 숫자 직접 입력으로 5,000 이상 설정 시에도 alert 토스트 표시 🔢
- listVariable.js의 _showListFullWarning도 warning → alert으로 통일 🎨
- 기획서의 빨간색 경고 토스트 디자인에 맞춰 Entry.toast.alert 사용 ⚠️
- Prettier v3 기본값이 lf라서 Windows CRLF 파일에서 모든 줄에 Delete CR 에러 발생 🐛
- .prettierrc에 endOfLine: auto 추가하여 기존 줄바꿈 유지하도록 설정 ✅
- 멀티루트 워크스페이스에서 @babel/eslint-parser가 .babelrc를 못 찾는 문제 해결 🔧
- .eslintrc parserOptions에 requireConfigFile: false 추가 📝
@github-actions github-actions bot added the issue 내부 이슈 처리를 위한 PR label Mar 23, 2026
@prisml prisml self-assigned this Mar 24, 2026
@prisml prisml requested review from Tnks2U, chanlee and kimorkim March 24, 2026 01:43
@chanlee chanlee merged commit 0fe7565 into develop Mar 24, 2026
3 checks passed
@idiotf
Copy link
Copy Markdown

idiotf commented Mar 26, 2026

안녕하세요. 저는 엔트리 유저 중 한 명입니다.

현재 리스트 5,000개 제한으로 인하여 기존 작품이 오작동하고 있습니다.
또한 5,000개 제한을 지키려고 리스트를 분할하는 방식을 쓰더라도,
오히려 리스트 항목 접근 시 접근할 리스트를 계산하는 방식 때문에 성능이 더 낮아질 수 있습니다.

죄송하지만 기존의 작품에는 경고 메시지만 띄우고,
리스트 항목 수는 그대로 유지하는 방식으로 변경해주실 수 있을까요?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

issue 내부 이슈 처리를 위한 PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants