6.8 KiB
ReaperGirlIdle 대화로그 — 2026-09-17
프로젝트 경로
C:\BurningTimes\ReaperGirlIdle(originbluecell2/ReaperGirlIdle) · 선행 사례 =공유/대화로그/ImmortalSword/2026-09-17.md§4·§5
1. 프로젝트 세션 개시 + DataTables JSON → CSV → 엑셀 시트 추가 (PM 직접 집행)
PD 원문 (2026-09-17 01:35)
① "이 세션은 우리 조직의 "ReaperGirlIdle" 프로젝트 세션이야. 프로젝트 경로는 "C:\BurningTimes\ReaperGirlIdle" 이고, 기존 "ImmortalSword" 프로젝트와 동일하게, "ReaperGirlIdle\Assets\DataTables\TableManager" 경로에 관리용 엑셀 테이블 "ReaperGirlIdle"를 만들어두었어. "ReaperGirlIdle\Assets\DataTables" 경로의 json 파일들을 csv로 변환한 후 "ReaperGirlIdle" 엑셀에 시트로 추가해줘."
실측
| # | 실측 | 근거 |
|---|---|---|
| 1 | 워크북 Assets/DataTables/TableManager/ReaperGirlIdle.xlsm = ImmortalSword.xlsm 과 바이트 동일(359,359B · SHA256 ADB3C947…5560 일치) → ImmortalSword §4·§5 결과물 그대로: 기본 8시트 + ImmortalSword 데이터가 든 19시트(시트명 = 본 프로젝트 JSON 19종과 동일) · VBA 구성요소 35(§5 패치본) |
해시 · openpyxl |
| 2 | 대상 JSON 19종 전부 레코드 객체 배열 · 1,197행 · 15,327셀. ImmortalSword JSON 대비 파일 동일 8종(Cheat·Companion·LocalizeMission·Pass·ShopGem·ShopPackageReward·ShopPackage·ShopProduct) / 상이 11종 — 열 추가: CharacterTable CharacterType · CostumeTable PurchaseType·IAPProductId / 행 수 변화: Character 161→159 · LocalizeSkill 135→136 · Localize 182→197 · LocalizeText 185→215 / 나머지는 값 차이 |
비교 스크립트 |
| 3 | 데이터 특성: 열 내 타입 혼재 0 · null 0 · 15자리 초과 숫자 0 · ' 시작 문자열 0 · 최장 셀 3,306자(PassTable 중첩) · 따옴표 포함 셀 276 · 줄바꿈 포함 셀 266 · 빈 문자열 19 |
분석 스크립트 |
| 4 | 데이터 19시트를 참조하는 요소 0(정의된 이름·타 시트 수식·연결 파트 XML 전수 검색) · 해당 VBA 문서 모듈(Sheet9~27) 코드 0줄 · VBA 에 ImmortalSword 고정 경로 없음(루트 = ThisWorkbook.path 기준 동적 계산, §5 설계) |
XML 검색 · olevba |
| 5 | 워크북·TableManager/ git 미추적(??) · Excel 실행 중 없음 · 파일 잠금 없음 |
git · 프로세스 · 잠금 테스트 |
결정과 기각안 (C32)
결정 1 — 기존 데이터 19시트를 ReaperGirlIdle 데이터로 교체(삭제 후 같은 이름으로 재생성): PD 문언 "json 파일들을 csv로 변환한 후 엑셀에 시트로 추가" + 실측 1(같은 이름 시트가 ImmortalSword 데이터로 이미 존재). 시트명 = 매크로 JSON 내보내기 파일명이므로 ImmortalSword 데이터가 남으면 기본 저장(JSON) 시 Assets\DataTables 게임 JSON 11종이 ImmortalSword 값으로 덮어써진다. 삭제분은 ImmortalSword JSON 파생물이며 ImmortalSword.xlsm·백업에 그대로 남아 정보 손실 0.
- 기각안 A — 기존 시트 유지 + 이름 변형 시트 추가: 시트명 = 내보내기 파일명 규칙이 깨지고 ImmortalSword 데이터 잔존 위험이 그대로 남는다.
- 기각안 B — 기존 시트 셀만 지우고 재기입: 열 너비·서식·오류 무시 플래그 등 잔여 상태를 남길 수 있어 검증 대상이 늘어난다. 삭제 후 재생성은 ImmortalSword §4 에서 검증된 생성 경로를 그대로 재사용한다.
결정 2 — 시트 구성·서식·형 보존·CSV 형식 = ImmortalSword §4 결정 1~3 그대로: 저장 주체 Excel COM(AutomationSecurity=3 매크로 강제 비활성 · 저장 없는 DryRun 선행) · 1행 헤더 = JSON 키 원문 · 클라 헤더 서식(ShopGoods!A1 복제, Accent6 미사용) · 텍스트 열 @ 선지정 · 1행 틀 고정 · 열 너비 자동(텍스트 상한 60) · 숫자/문자열/논리/중첩(압축 JSON 문자열) 형 보존 · CSV = UTF-8 BOM·CRLF·전 필드 따옴표·RFC 4180 이스케이프.
CSV 파일: C:\BurningTimes\ReaperGirlIdle\output\DataTables_csv\*.csv 19개(480,666B) — ImmortalSword 와 같은 위치 규칙(Assets 밖).
집행
- 백업(C6):
공유/개발팀_백업/ReaperGirlIdle/ReaperGirlIdle.xlsm.bak_20260917_0139.xlsm(359,359B · SHA256 원본 일치 ·*.bak_*gitignore = 이 PC 로컬 보존) - 변환: CSV 19 + 정규화 데이터 (ImmortalSword
prep_tables.py경로만 치환) - DryRun(저장 없음 · 착수 전 해시 일치 가드 · 기본/데이터 외 시트 존재 시 중단 가드): 19시트 불일치 0 · 원본 해시 불변
- 본 실행 01:41:23 저장 — 시트 27(기본 8 + 데이터 19 이름순, 순서 동일) · 359KB → 348KB · 활성 시트 MonthlyReward 복원 · Excel 잔존 0
검증
- Excel 세션 내(저장 전): 19시트 Value2 전수 불일치 0 · 숫자·논리 셀
.Text(매크로 내보내기 값) 4,393셀 불일치 0 · 255자 초과 텍스트 34셀.Text잘림 0 - Excel 밖 독립 검증(openpyxl + olevba, 백업 대비) — PASS:
- 기본 8시트 셀 값·수식 변경 0 · 병합·틀 고정·열 너비 동일
- 데이터 19시트 15,327셀 타입·값 불일치 0 · 범위 초과 셀 0 · 텍스트 셀
@누락 0 · CSV 엄격 파싱·셀 불일치 0 · 헤더 =ShopGoods!A1서식 · Accent6(서버) 헤더 0 · 틀 고정 A2 - 비시트 파트 유실 0 (
vbaProject.bin·connections.xml·customXml/item1.xml·ctrlProp1.xml·drawing1.xml·vmlDrawing1.vml) - VBA 표준·폼·통합 문서·기본 시트 모듈 16개 중 15개 코드 동일 ·
UserForm은Attribute VB_BaseGUID 1줄만 상이(ImmortalSword §4 와 같은 현상) · 구 데이터 시트 문서 모듈 19개(코드 0줄) 제거·잔존 0 · 코드 내 데이터 시트 코드네임 참조 0
참고·발견 (PD 안내)
- 새 19시트는 코드네임 미부여 상태로 저장됨(매크로 비활성 상태에서 추가된 시트 — ImmortalSword §4 직후와 같은 상태). 매크로 활성으로 열면 Excel 이 문서 모듈을 자동 생성하며, 매크로는 시트를 이름·순회로 다루므로 영향 없음
- 따옴표 276셀·줄바꿈 266셀은 §5 패치 매크로(CSV
""이스케이프·JSON 재작성)가 처리하는 유형. 매크로 내보내기는 게임 JSON 덮어쓰기 경로라 본 지시 범위 밖으로 보고 실행하지 않음 - 기본 8시트(Info·ShopConfig 등)는 복사된 내용 그대로 — 지시 범위 밖이라 미변경
- 커밋: ImmortalSword §4 ④ "커밋은 내 지시 전까지 진행하지 말고 대기해." 해제 전 → BT 기록은 작업 트리에 둠 · 게임 레포 미커밋
- 세션 시작 hook 의 C40 세션 수명 경고(113MB·이미지 165장)는 오측정 — 본 세션 기록 실측 0.6MB. BT16 별건
session_health.sh타 세션 오측정과 같은 건