Skip to content

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

Open
prisml wants to merge 13 commits intodevelopfrom
issue/10179
Open

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

Conversation

@prisml
Copy link
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
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.

1 participant