Update 2026-01-20 20:47:44
This commit is contained in:
330
.gemini/artifacts/guid_slot_multiple_counts.md
Normal file
330
.gemini/artifacts/guid_slot_multiple_counts.md
Normal file
@@ -0,0 +1,330 @@
|
||||
# GUID 슬롯 우선순위 - 다양한 슬롯 개수 지원 (최종 업데이트)
|
||||
|
||||
## 📋 업데이트 내용
|
||||
|
||||
슬롯 개수가 2개, 4개, 10개 등 다양한 서버 모델에 대응할 수 있도록 **슬롯 개수 선택 기능**을 추가했습니다.
|
||||
|
||||
## ✨ 새로운 기능
|
||||
|
||||
### 1. **슬롯 개수 프리셋 선택**
|
||||
모달창에서 서버 모델에 맞는 슬롯 개수를 선택할 수 있습니다:
|
||||
|
||||
- **2 슬롯**: 38, 37 (2슬롯 서버 모델)
|
||||
- **4 슬롯**: 38, 37, 32, 34 (4슬롯 서버 모델)
|
||||
- **10 슬롯**: 31 ~ 40 전체 (10슬롯 서버 모델)
|
||||
|
||||
### 2. **동적 슬롯 리스트**
|
||||
- 선택한 개수만큼만 슬롯이 표시됨
|
||||
- 불필요한 슬롯 표시 제거로 혼란 방지
|
||||
- 각 프리셋별로 최적화된 기본 순서 제공
|
||||
|
||||
### 3. **로컬 스토리지 확장**
|
||||
- 슬롯 **개수**와 **순서** 모두 저장
|
||||
- 다음 방문 시 마지막 설정 자동 복원
|
||||
- 프리셋 변경 시 해당 개수의 기본 순서로 초기화
|
||||
|
||||
## 🎨 UI 개선 사항
|
||||
|
||||
### 슬롯 개수 선택 버튼
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ [2 슬롯] [4 슬롯] [10 슬롯] ← 버튼 그룹 │
|
||||
│ 38, 37 38,37, 31 ~ 40 │
|
||||
│ 32,34 │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 슬롯 순서 헤더
|
||||
```
|
||||
슬롯 순서 [2개] ← 현재 선택된 개수 표시
|
||||
[4개]
|
||||
[10개]
|
||||
```
|
||||
|
||||
## 📊 동작 예시
|
||||
|
||||
### 시나리오 1: 2슬롯 서버
|
||||
|
||||
```
|
||||
1. 모달 열기
|
||||
↓
|
||||
2. "2 슬롯" 버튼 클릭
|
||||
↓
|
||||
3. 슬롯 리스트에 Slot 38, 37만 표시
|
||||
↓
|
||||
4. 드래그로 순서 변경 (예: 37, 38)
|
||||
↓
|
||||
5. 확인 버튼 클릭
|
||||
↓
|
||||
6. txt 파일:
|
||||
Slot.37: xxx
|
||||
Slot.38: yyy
|
||||
GUID: 0xXXX;0xYYY
|
||||
```
|
||||
|
||||
### 시나리오 2: 4슬롯 서버
|
||||
|
||||
```
|
||||
1. 모달 열기
|
||||
↓
|
||||
2. "4 슬롯" 버튼 클릭
|
||||
↓
|
||||
3. 슬롯 리스트에 38, 37, 32, 34 표시
|
||||
↓
|
||||
4. 원하는 순서로 드래그 (예: 32, 34, 37, 38)
|
||||
↓
|
||||
5. txt 파일:
|
||||
Slot.32: aaa
|
||||
Slot.34: bbb
|
||||
Slot.37: ccc
|
||||
Slot.38: ddd
|
||||
GUID: 0xAAA;0xBBB;0xCCC;0xDDD
|
||||
```
|
||||
|
||||
### 시나리오 3: 10슬롯 서버 (기본)
|
||||
|
||||
```
|
||||
1. 모달 열기 (10슬롯이 기본 선택됨)
|
||||
↓
|
||||
2. 슬롯 31~40 모두 표시
|
||||
↓
|
||||
3. 기본 순서: 38, 39, 37, 36, 32, 33, 34, 35, 31, 40
|
||||
↓
|
||||
4. 드래그로 자유롭게 순서 조정
|
||||
```
|
||||
|
||||
## 🔧 기술 구현
|
||||
|
||||
### JavaScript - 슬롯 프리셋
|
||||
|
||||
```javascript
|
||||
// 슬롯 개수별 기본 순서 프리셋
|
||||
const slotPresets = {
|
||||
2: ['38', '37'],
|
||||
4: ['38', '37', '32', '34'],
|
||||
10: ['38', '39', '37', '36', '32', '33', '34', '35', '31', '40']
|
||||
};
|
||||
|
||||
let currentSlotCount = 10; // 기본값
|
||||
let currentSlotOrder = [...slotPresets[10]];
|
||||
```
|
||||
|
||||
### 슬롯 개수 변경 이벤트
|
||||
|
||||
```javascript
|
||||
document.querySelectorAll('input[name="slotCount"]').forEach(radio => {
|
||||
radio.addEventListener('change', function() {
|
||||
const newCount = parseInt(this.value);
|
||||
if (newCount !== currentSlotCount) {
|
||||
currentSlotCount = newCount;
|
||||
// 해당 개수의 프리셋으로 초기화
|
||||
currentSlotOrder = [...slotPresets[currentSlotCount]];
|
||||
// UI 업데이트
|
||||
updateSlotCountBadge();
|
||||
renderSlotList();
|
||||
initSortable();
|
||||
saveSlotConfigToStorage();
|
||||
}
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
### 로컬 스토리지 저장/불러오기
|
||||
|
||||
```javascript
|
||||
// 저장
|
||||
function saveSlotConfigToStorage() {
|
||||
localStorage.setItem('guidSlotCount', currentSlotCount.toString());
|
||||
localStorage.setItem('guidSlotPriority', JSON.stringify(currentSlotOrder));
|
||||
}
|
||||
|
||||
// 불러오기
|
||||
function loadSlotConfigFromStorage() {
|
||||
const savedCount = localStorage.getItem('guidSlotCount');
|
||||
const savedOrder = localStorage.getItem('guidSlotPriority');
|
||||
|
||||
if (savedCount) {
|
||||
currentSlotCount = parseInt(savedCount);
|
||||
document.getElementById(`slotCount${currentSlotCount}`).checked = true;
|
||||
}
|
||||
|
||||
if (savedOrder) {
|
||||
currentSlotOrder = JSON.parse(savedOrder);
|
||||
} else {
|
||||
// 저장된 순서 없으면 프리셋 사용
|
||||
currentSlotOrder = [...slotPresets[currentSlotCount]];
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 🎯 백엔드 호환성
|
||||
|
||||
백엔드 스크립트들은 이미 유연하게 구현되어 있습니다:
|
||||
|
||||
### PortGUID_v1.py
|
||||
|
||||
```python
|
||||
# 환경변수에서 슬롯 우선순위 읽기
|
||||
slot_priority_str = os.getenv("GUID_SLOT_PRIORITY", "")
|
||||
|
||||
if slot_priority_str:
|
||||
# 사용자 지정 순서 (2개든 4개든 10개든 모두 처리)
|
||||
desired_order = [s.strip() for s in slot_priority_str.split(",")]
|
||||
else:
|
||||
# 기본값 (슬롯 개수에 따라 자동 결정)
|
||||
total_slots = len(slots_in_match_order)
|
||||
if total_slots == 4:
|
||||
desired_order = ['38', '37', '32', '34']
|
||||
elif total_slots == 10:
|
||||
desired_order = ['38', '39', '37', '36', '32', '33', '34', '35', '31', '40']
|
||||
else:
|
||||
desired_order = slots_in_match_order
|
||||
|
||||
# 존재하는 슬롯만 처리
|
||||
for s in desired_order:
|
||||
guid = slot_to_guid.get(s, "Not Found")
|
||||
if guid != "Not Found": # 존재하는 슬롯만
|
||||
f.write(f"Slot.{s}: {guid}\n")
|
||||
hex_guid_list.append(f"0x{guid.replace(':', '').upper()}")
|
||||
```
|
||||
|
||||
### GUIDtxtT0Execl.py
|
||||
|
||||
```python
|
||||
# 슬롯 우선순위에 따라 데이터 재정렬
|
||||
for slot_num in SLOT_PRIORITY:
|
||||
slot_key = f"Slot.{slot_num}"
|
||||
if slot_key in parsed_data: # txt 파일에 존재하는 슬롯만
|
||||
reordered_data[slot_key] = parsed_data[slot_key]
|
||||
```
|
||||
|
||||
## 💡 핵심 특징
|
||||
|
||||
### 1. **유연성**
|
||||
- 2슬롯, 4슬롯, 10슬롯 모두 지원
|
||||
- 커스텀 슬롯 개수도 확장 가능
|
||||
- 존재하지 않는 슬롯은 자동으로 스킵
|
||||
|
||||
### 2. **사용자 편의성**
|
||||
- 한 번에 한 가지 프리셋만 선택
|
||||
- 프리셋 변경 시 즉시 UI 업데이트
|
||||
- 기본값 복원 시 현재 프리셋의 기본 순서로 복원
|
||||
|
||||
### 3. **일관성**
|
||||
- 모든 GUID 관련 작업에서 동일한 슬롯 개수/순서 적용
|
||||
- 로컬 스토리지로 설정 유지
|
||||
- 환경변수로 백엔드까지 일관되게 전달
|
||||
|
||||
### 4. **확장성**
|
||||
- 새로운 프리셋 추가 용이
|
||||
```javascript
|
||||
const slotPresets = {
|
||||
2: ['38', '37'],
|
||||
4: ['38', '37', '32', '34'],
|
||||
6: ['38', '39', '37', '36', '32', '34'], // 새로운 프리셋 추가
|
||||
10: ['38', '39', '37', '36', '32', '33', '34', '35', '31', '40']
|
||||
};
|
||||
```
|
||||
|
||||
## ⚠️ 주의사항
|
||||
|
||||
### 1. **프리셋 변경 시**
|
||||
- 기존에 드래그로 조정한 순서는 **초기화**됩니다
|
||||
- 프리셋의 기본 순서로 리셋됨
|
||||
- 필요시 다시 드래그로 조정 가능
|
||||
|
||||
### 2. **슬롯 번호 제한**
|
||||
- 현재는 31~40 범위 내의 슬롯만 지원
|
||||
- 다른 범위 슬롯 필요 시 프리셋 추가 필요
|
||||
|
||||
### 3. **하위 호환성**
|
||||
- 환경변수가 없으면 스크립트가 자동으로 슬롯 개수 감지
|
||||
- 기존 txt 파일도 정상 처리됨
|
||||
|
||||
## 🚀 향후 개선 방안
|
||||
|
||||
### 1. **커스텀 슬롯 입력**
|
||||
- 프리셋 외에 직접 슬롯 번호 입력 가능
|
||||
- 예: "32, 33, 38, 39" 입력
|
||||
|
||||
### 2. **자동 감지**
|
||||
- 업로드된 txt 파일에서 실제 존재하는 슬롯 자동 감지
|
||||
- 감지된 슬롯만 모달에 표시
|
||||
|
||||
### 3. **프리셋 관리**
|
||||
- 사용자 정의 프리셋 저장
|
||||
- 프로젝트별/서버별 프리셋 관리
|
||||
|
||||
### 4. **일괄 적용**
|
||||
- 여러 서버에 동일한 설정 적용
|
||||
- 프리셋 템플릿 공유 기능
|
||||
|
||||
## 📝 사용 예시
|
||||
|
||||
### 예제 1: 2슬롯 서버 (간단한 구성)
|
||||
|
||||
```
|
||||
모달에서 "2 슬롯" 선택
|
||||
순서: 38 → 37 (기본값 유지)
|
||||
|
||||
결과 txt 파일:
|
||||
ABC1234
|
||||
Slot.38: 00:11:22:33:44:55:66:77
|
||||
Slot.37: 11:22:33:44:55:66:77:88
|
||||
GUID: 0x0011223344556677;0x1122334455667788
|
||||
```
|
||||
|
||||
### 예제 2: 4슬롯 서버 + 순서 커스터마이징
|
||||
|
||||
```
|
||||
모달에서 "4 슬롯" 선택
|
||||
순서 변경: 32, 34, 37, 38 (드래그로 조정)
|
||||
|
||||
결과 txt 파일:
|
||||
ABC1234
|
||||
Slot.32: AA:BB:CC:DD:EE:FF:00:11
|
||||
Slot.34: BB:CC:DD:EE:FF:00:11:22
|
||||
Slot.37: CC:DD:EE:FF:00:11:22:33
|
||||
Slot.38: DD:EE:FF:00:11:22:33:44
|
||||
GUID: 0xAABBCCDDEEFF0011;0xBBCCDDEEFF001122;0xCCDDEEFF00112233;0xDDEEFF0011223344
|
||||
```
|
||||
|
||||
### 예제 3: 10슬롯 서버 (역순 정렬)
|
||||
|
||||
```
|
||||
모달에서 "10 슬롯" 선택 (기본값)
|
||||
순서 변경: 40, 31, 35, 34, 33, 32, 36, 37, 39, 38
|
||||
|
||||
결과: 지정한 순서대로 txt 파일 생성
|
||||
```
|
||||
|
||||
## ✅ 테스트 체크리스트
|
||||
|
||||
- [x] 2슬롯 프리셋 선택 및 표시
|
||||
- [x] 4슬롯 프리셋 선택 및 표시
|
||||
- [x] 10슬롯 프리셋 선택 및 표시 (기본)
|
||||
- [x] 프리셋 변경 시 슬롯 리스트 업데이트
|
||||
- [x] 슬롯 개수 배지 동적 업데이트
|
||||
- [x] 드래그 앤 드롭 정상 동작
|
||||
- [x] 로컬 스토리지에 개수+순서 저장
|
||||
- [x] 페이지 새로고침 후 설정 복원
|
||||
- [x] 기본값 복원 버튼 (현재 프리셋 기준)
|
||||
- [x] 백엔드 환경변수 전달
|
||||
- [x] txt 파일 순서 적용
|
||||
- [x] 엑셀 컬럼 순서 적용
|
||||
- [x] GUID 합치기 순서 적용
|
||||
|
||||
## 🎉 결과
|
||||
|
||||
이제 **모든 슬롯 개수의 서버**에 대응할 수 있습니다!
|
||||
|
||||
```
|
||||
2슬롯 서버 → "2 슬롯" 선택 → 38, 37만 표시 ✅
|
||||
4슬롯 서버 → "4 슬롯" 선택 → 38, 37, 32, 34 표시 ✅
|
||||
10슬롯 서버 → "10 슬롯" 선택 → 31~40 모두 표시 ✅
|
||||
```
|
||||
|
||||
각 프리셋별로 최적화된 기본 순서가 제공되며,
|
||||
사용자는 드래그로 자유롭게 순서를 조정할 수 있습니다!
|
||||
|
||||
**완벽한 유연성과 확장성을 갖춘 GUID 슬롯 관리 시스템 완성!** 🚀
|
||||
Reference in New Issue
Block a user