Files
HolodoriCalc/docs/analytics.md
T
dal4segno b97a4008bb
Publish GitHub Pages output / publish (push) Successful in 43s
feat: collect consented analysis usage statistics
2026-09-06 20:56:08 +09:00

29 lines
2.7 KiB
Markdown

# 이용 통계 운영
온라인 앱은 기존 GA4 측정 ID를 사용한다. 서버 빌드는 `PUBLIC_GA_MEASUREMENT_ID`, Pages 빌드는 `VITE_GA_MEASUREMENT_ID`를 설정한다. 유효한 ID가 없거나 이용자가 동의하지 않으면 앱의 통계 이벤트를 전송하지 않는다.
## 동의 범위
동의 키는 `holodori:analytics-consent:v2`다. 이전 키의 동의는 새 범위에 적용하지 않으며, 기존 이용자에게도 안내를 다시 표시한다. 분석 설정에서 거부하면 이후 전송을 중단한다. 전체 보유 목록, 검색어, 성장 데이터, 계산 결과는 이벤트에 포함하지 않는다.
## 배치 분석 이벤트
사용자가 최적 배치 분석을 실행하고 입력 검증을 통과하면, 비동기 악곡 로딩 전에 실행 당시 입력을 전송한다. 이후 로딩이나 계산이 실패해도 실행 횟수에는 포함된다. 카드 선택 변경, 기록 열기, 성장 비교, 연결 카드 최적화는 이 이벤트를 발생시키지 않는다.
| 이벤트 | 실행당 횟수 | 매개변수 |
| --- | --- | --- |
| `analysis_start` | 1 | `song_id`, `difficulty`, `card_1_id`~`card_5_id`, `card_1_awakening`~`card_5_awakening` |
| `analysis_card_used` | 5 | `song_id`, `difficulty`, `card_id`, `awakening`, `slot` |
카드와 악곡은 앱 데이터의 ID로 기록한다. slot은 실행 당시 입력 슬롯(1~5)이며 최적화 결과 순서가 아니다. 카드 이벤트를 분리해 어느 슬롯에 사용했든 같은 카드로 집계할 수 있다.
## GA4 보고서 설정
GA4 관리의 맞춤 정의에서 `song_id`, `difficulty`, `card_id`, `awakening`, `slot`을 이벤트 범위 맞춤 측정기준으로 등록한다. 편성 단위 비교가 필요하면 `card_1_id`~`card_5_id`와 각 개화 매개변수도 등록한다.
탐색에서 이벤트 이름을 `analysis_card_used`로 필터링하고 행을 `card_id`, 값을 이벤트 수로 설정하면 카드 사용 빈도를 볼 수 있다. 악곡과 난이도를 추가해 곡별 사용 현황을 확인한다. 실행 횟수는 `analysis_start`의 이벤트 수를 사용한다. 두 이벤트를 합친 수는 실행 횟수가 아니다. 반복 실행도 각각 집계하며, 동의 거부·차단 도구 등으로 전체 이용량과 차이가 날 수 있다.
배포 후 동의한 브라우저에서 분석을 한 번 실행하고 GA4 실시간 보고서에서 이벤트 도착을 확인한다. 맞춤 보고서 반영에는 시간이 걸릴 수 있다. 코드 검증은 실제 GA4 수신 확인을 대신하지 않는다.
참고: [GA4 이벤트 설정](https://developers.google.com/analytics/devguides/collection/ga4/events), [이벤트 매개변수](https://developers.google.com/analytics/devguides/collection/ga4/event-parameters).