feat: @apps-in-toss/analytics 이벤트 트래킹 구현 (JSA-32)

- src/analytics.ts: initAnalytics / trackGameEvent 유틸 추가
- _app.tsx: 앱 시작 시 Analytics.init 호출
- pages/index.tsx: app_open 이벤트 (플랫폼 시간, 보유 원소 수, 골드, 강화 레벨 합계)
- FusionScreen: fusion_completed (결과 tier/name, 골드 획득, 재료 ID)
- EvolutionScreen: enhancement_completed + level_up (원소 ID/이름, 새 레벨, 비용)
- ShopScreen: item_purchased (아이템 ID/이름, 가격, 희귀도)
- OfflineRewardModal: offline_reward_claimed (오프라인 시간, 골드, 원소 종류 수)
- package.json: @apps-in-toss/analytics ^2.3.0 명시적 추가

Co-Authored-By: Paperclip <noreply@paperclip.ing>
This commit is contained in:
2026-04-01 00:29:14 +09:00
commit 56bc71a71a
8 changed files with 1623 additions and 0 deletions

21
src/analytics.ts Normal file
View File

@@ -0,0 +1,21 @@
import { Analytics, type AnalyticsConfig } from '@apps-in-toss/analytics';
type LogParams = Record<string, string | number | boolean | null | undefined>;
let _logger: AnalyticsConfig['logger'] | null = null;
export function initAnalytics(debug = false) {
const logger: AnalyticsConfig['logger'] = ({ log_name, log_type, params }) => {
if (debug) {
console.log(`[Analytics] ${log_type}:${log_name}`, params);
}
// 프로덕션에서는 여기서 서버로 이벤트 전송
};
Analytics.init({ logger, debug });
_logger = logger;
}
export function trackGameEvent(logName: string, params: LogParams = {}) {
_logger?.({ log_name: logName, log_type: 'game_event', params });
}