BurningTimesAi/공유/대화로그/ReaperGirlIdle/2026-09-17.md

6.8 KiB

ReaperGirlIdle 대화로그 — 2026-09-17

프로젝트 경로 C:\BurningTimes\ReaperGirlIdle (origin bluecell2/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 밖).

집행

  1. 백업(C6): 공유/개발팀_백업/ReaperGirlIdle/ReaperGirlIdle.xlsm.bak_20260917_0139.xlsm (359,359B · SHA256 원본 일치 · *.bak_* gitignore = 이 PC 로컬 보존)
  2. 변환: CSV 19 + 정규화 데이터 (ImmortalSword prep_tables.py 경로만 치환)
  3. DryRun(저장 없음 · 착수 전 해시 일치 가드 · 기본/데이터 외 시트 존재 시 중단 가드): 19시트 불일치 0 · 원본 해시 불변
  4. 본 실행 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_Base GUID 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 타 세션 오측정과 같은 건