원클릭으로
verify-remote-data
구글 시트(GAS) 기반 리모트 데이터 동기화 시스템의 정합성을 검증합니다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
구글 시트(GAS) 기반 리모트 데이터 동기화 시스템의 정합성을 검증합니다.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | verify-remote-data |
| description | 구글 시트(GAS) 기반 리모트 데이터 동기화 시스템의 정합성을 검증합니다. |
구글 시트에서 JSON 데이터를 실시간으로 가져와 게임 데이터에 반영하는 시스템의 안정성을 검증합니다:
RemoteDataService에 설정된 GAS Web App URL이 유효하고 배포된 상태인지 확인SkillDatabase 및 StageDatabase가 JSON 데이터를 통해 에셋(WeaponDataSO 등)을 올바르게 동기화하는지 확인persistentDataPath/DataCache에 올바른 명칭으로 저장되고 관리되는지 확인SheetDataDTO의 필드명과 구글 시트의 컬럼명이 일치하여 파싱 오류가 없는지 확인SkillDatabase 또는 RemoteDataService 로직을 수정한 후| File | Purpose |
|---|---|
Assets/_Game/Scripts/Data/Services/RemoteDataService.cs | 구글 서버 통신 및 버전 체크 |
Assets/_Game/Scripts/Data/Managers/RemoteDataUpdateManager.cs | 데이터 동기화 흐름 제어 |
Assets/_Game/Scripts/ScriptableObjects/SkillDatabase.cs | 스킬/무기 데이터 에셋 동기화 |
Assets/_Game/Scripts/ScriptableObjects/StageDatabase.cs | 스테이지/웨이브 데이터 로딩 |
Assets/_Game/Scripts/Data/DTOs/SheetDataDTO.cs | 데이터 전송 객체 구조 정의 |
RemoteDataService에 설정된 URL이 배포된 Web App 형식인지 확인합니다.
파일: Assets/_Game/Scripts/Data/Services/RemoteDataService.cs
검사:
grep "k_BaseUrl =" Assets/_Game/Scripts/Data/Services/RemoteDataService.cs
PASS: https://script.google.com/macros/s/.../exec 형식이 포함됨
FAIL: URL이 비어있거나 구형 배포 링크임
수정: 최신 GAS 배포 URL로 업데이트
SkillDatabase에서 시트의 컬럼명(DTO)과 실제 WeaponDataSO 프로퍼티 매칭이 올바른지 확인합니다. 특히 최근 변경된 Range 등을 점검합니다.
파일: Assets/_Game/Scripts/ScriptableObjects/SkillDatabase.cs
검사:
grep -E "(Damage|Cooldown|AttackSpeed|Range|Duration|ProjectileCount)" Assets/_Game/Scripts/ScriptableObjects/SkillDatabase.cs
PASS: "Range" 컬럼이 BaseAttackRange와 매칭됨 (구 "WeaponSize" 사용 금지)
FAIL: 구형 컬럼명(WeaponSize 등)이 잔존함
수정: 시트 컬럼명에 맞춰 매칭 로직 업데이트
데이터가 로컬에 저장될 때 .json 확장자를 사용하고 올바른 폴더에 담기는지 확인합니다.
파일: SkillDatabase.cs, StageDatabase.cs
검사:
grep "DataCache" Assets/_Game/Scripts/ScriptableObjects/*.cs
PASS: DataCache 폴더 내에 .json 파일로 저장/로드함
FAIL: 다른 확장자나 상이한 경로 사용
수정: Application.persistentDataPath/DataCache로 경로 통일
JsonUtility가 파싱할 수 있도록 DTO 클래스와 필드가 구성되어 있는지 확인합니다.
파일: Assets/_Game/Scripts/Data/DTOs/SheetDataDTO.cs
검사:
grep "public class" Assets/_Game/Scripts/Data/DTOs/SheetDataDTO.cs
PASS: StatValueDTO, SkillDescriptionDTO 등이 정의되어 있음
FAIL: 필수 DTO 클래스 누락
초기 로딩 시 구글 시트 데이터의 즉각 반영을 위해 force: true를 사용하는지, 그리고 에디터 직접 실행 시 GameManager에서 동기화를 수행하는지 확인합니다.
파일: LoadAddresaableManager.cs, GameManager.cs
검사:
LoadAddresaableManager에서 UpdateAllRemoteDataAsync(force: true) 호출 확인.GameManager.InitializeAsync 내에 #if UNITY_EDITOR를 활용한 리모트 데이터 동기화 폴백 존재 확인.grep "UpdateAllRemoteDataAsync(force: true)" Assets/_Game/Scripts/Title/LoadAddresaableManager.cs
grep -A 10 "UNITY_EDITOR" Assets/_Game/Scripts/InGame/Manager/GameManager.cs | grep "RemoteDataUpdateManager"
PASS: 강제 동기화 및 에디터 폴백 로직 존재 FAIL: 데이터 정합성 누락 가능성 있음
RemoteDataService의 타임아웃 처리와 RemoteDataUpdateManager가 씬 로더와 정상 연동되는지 확인합니다.
파일: RemoteDataService.cs, RemoteDataUpdateManager.cs
검사:
# 1. RemoteDataService의 모바일 타임아웃(15초) 적용 확인
grep "k_MobileTimeoutSeconds = 15" Assets/_Game/Scripts/Data/Services/RemoteDataService.cs
# 2. RemoteDataUpdateManager의 ISceneInitializer 구현 여부 확인
grep "class RemoteDataUpdateManager : MonoBehaviour, IRemoteDataUpdateService, InGame.Core.ISceneInitializer" Assets/_Game/Scripts/Data/Managers/RemoteDataUpdateManager.cs
PASS: 타임아웃 15초 설정 확인됨, ISceneInitializer를 통한 씬 로딩 대기 루프 참여 확인
FAIL: 무한 대기 위험 또는 씬 초기화 인터페이스 미구현
수정: 타임아웃 로직 추가 및 ISceneInitializer 인터페이스 구현
| 검사 항목 | 상태 | 파일/상세 |
|---|---|---|
| GAS URL 유효성 | PASS | 최신 배포 URL 확인됨 |
| 스탯 매칭 정합성 | PASS | Range/Duration 매칭 완료 |
| 모바일 안정성 | PASS | 15초 타임아웃 및 네트워크 체크 적용 |
| 씬 초기화 대기 | PASS | ISceneInitializer를 통한 안정적 대기 |
| 로컬 캐싱 경로 | PASS | DataCache/.json 사용 중 |
UNITY_EDITOR) 로직은 빌드 포함 여부에 따라 분기 처리되어야 하므로, 빌드 시 에러 여부만 확인합니다.인게임 핵심 시스템(GameManager, UIManager), 초기화 순서 안전성, UI 데이터 바인딩을 검증합니다.
로비 UI의 팝업 관리 및 뒤로가기(ESC) 로직을 검증합니다. PopupManager 등록 및 중복 입력 처리 여부를 확인합니다.
타이틀 씬의 로그인 흐름(MVVM), 어드레서블 로딩, 앱 업데이트 관리를 검증합니다.
프로젝트 전체의 사운드 구현 패턴을 검증합니다. 싱글톤(Singleton) 대신 인터페이스 주입(DI) 방식의 사용을 권장합니다.
세션 변경사항을 분석하여 검증 스킬 누락을 탐지합니다. 기존 스킬을 동적으로 탐색하고, 새 스킬을 생성하거나 기존 스킬을 업데이트한 뒤 GEMINI.md를 관리합니다.
플레이어 데이터의 DTO/Service 구조, 암호화 처리, 로컬 저장소 정합성을 검증합니다.