# 원본 Excel/CSV 게임 데이터 등록

등록은 원본 파일을 게임 데이터 원본으로 지정하는 기능입니다. 별도의 편집 사본으로 갈라놓지 않습니다. 앞선 사본 방식은 폐기했습니다.

## 동작

1. 일반 XLSX/CSV 뷰어에서 선택한 시트의 **게임 데이터로 등록**을 누릅니다.
2. 논리 테이블 이름, 첫 행 제목 사용 여부, 자료형·필드 이름, 수식 값 가져오기 여부를 확인합니다.
3. 원본 파일의 선택 시트에 이름·자료형 두 행과 Id 열을 구성합니다. 기본값은 원래 모든 행을 데이터로 보존합니다. 제목 옵션을 선택하면 첫 행은 열 이름으로 사용합니다.
4. 등록한 원본에서 게임 데이터 편집·저장을 수행합니다. 등록 상태는 원본 GUID와 시트로 구분합니다. 원본 파일명과 논리 테이블 이름이 달라도 동작합니다.
5. 등록한 원본이 Unity에 다시 임포트되면 원본을 읽어 C# 및 바이너리를 갱신합니다. 잘못된 데이터면 오류를 표시하고 유효한 바이너리를 새 오류 데이터로 덮어쓰지 않습니다.

프로젝트 Assets 안의 원본 파일을 등록합니다. 프로젝트 밖에서 연 파일은 먼저 Assets 안에 두어야 합니다. 생성물만 `Assets/DesignDataTable/Generated/Code`와 `Generated/Binary`에 모읍니다. 등록 전 원본은 `Tools/RegistrationBackups`에 백업하며, 등록 도중 실패하면 원본 복원과 이번 생성물 정리를 시도합니다.

## 여러 시트

선택 시트만 갱신하며 다른 시트 XML은 바이트 단위로 유지합니다. 한 XLSX의 여러 시트를 각각 등록할 수 있고, 시트별 메타데이터를 분리합니다. 파일을 다시 열 때는 여러 시트를 선택할 수 있는 뷰어를 사용하고 등록된 시트의 편집 버튼으로 이동합니다. 등록 해제나 생성 데이터 삭제에서 원본을 삭제하지 않도록 보호했습니다.

원본을 직접 수정하는 동작이며, 등록한 시트의 기존 서식 전체를 보존하는 기능은 아닙니다. 시트 간 수식 참조의 구조 변경까지 완전한 Excel 호환으로 검증하지 않았습니다. 지원되지 않는 수식은 저장된 계산값으로 가져오거나 오류를 해결해야 합니다.

## 검증 근거

- 전체 소스 컴파일 및 **9,608개 회귀 검증 통과**.
- 원본의 게임 데이터 스키마 구성, 동일 원본으로 다시 저장, 파일명과 다른 테이블 이름, 외부 원본 변경을 읽어 바이너리 재생성, 중복 등록 거부를 실제 Unity에서 확인했습니다. 최신 **100개 통과, 오류 0개, 샘플 씬 3개 완료**. [실행 기록](original-registration-complete/unity-session.jsonl).
- 독립적으로 만든 다중 시트 XLSX에서 선택한 시트 변환, 다른 시트 XML의 바이트 보존, 재저장, 두 등록 시트의 독립 데이터·메타데이터를 검증했습니다. [변환 테스트](../../../Tools/Verification/WorkbookConversionChecks.cs).
- 이전 테스트 폴더를 재사용한 첫 실행은 남아 있던 이전 사본 파일과 현재 레지스트리 불일치로 실패했습니다. 새 격리 프로젝트로 재검증하여 통과했으며 실패 기록도 보존했습니다.
- 9개 언어 UI·HTML 가이드 및 기본 영어 PDF를 원본 직접 등록 방식으로 갱신했습니다. PDF 7페이지를 렌더링해 배치를 확인했습니다.
- 마우스 클릭과 실제 팝업 배치는 미검증입니다. Unity API 실행 검증을 UI 실사용 통과로 보고하지 않습니다.

XERJ: 미사용 — 연결 도구가 없어 rg로 현재 소스를 확인했습니다.
동일 원본 파일을 공유하는 두 시트가 정리 과정에서도 구분되는 것과, 등록 삭제 후 원본 파일이 남는 것도 Unity에서 확인했습니다.
