Files
HEROLL/design/gameplay-monetization/specs/analytics-events.csv
T

23 lines
3.9 KiB
CSV

"event_name","trigger","required_fields","privacy_rule","validation"
"run_start","服务端确认体力扣除并生成 run_id 后","run_id,mode,stage,loop,energy_before,energy_after,seed_version,boosters","不记录广告 ID 或账户明文","run_id 全局唯一;体力流水恰好一条"
"dice_roll_committed","骰子结果写入局内状态时","run_id,turn,dice_a,dice_b,is_double,position_before,position_after,rng_counter","seed 仅记录版本和审计散列,不上传可反推账户的信息","每次移动前恰好一个 committed 事件;与存档可重放一致"
"tile_landed","棋子完成落点处理时","run_id,turn,tile_id,tile_type,reward_ids,combat_id","不记录自由文本","位置与 dice_roll_committed 对得上"
"battle_end","战斗状态进入 PostBattle 时","run_id,battle_id,result,duration_sec,hp_ratio,rewards,revive_count","不上传设备稳定标识","奖励流水总和与 reward_grant 一致"
"run_end","结算或合法退出时","run_id,result,stage,loop,duration_sec,reason,rewards","reason 使用枚举","每个 run_id 最终恰好一个终态"
"economy_flow","任何资源变化时","transaction_id,resource_id,delta,balance_after,source_or_sink,reason,run_id,sku_id","sku_id 可为空;不得含平台回执全文","同 transaction_id 幂等;balance_after 不为非法负数"
"ad_offer","广告入口展示时","placement,run_id,eligible_reason,daily_count","不写广告网络用户标识","非 eligible 状态不得出现 offer"
"ad_start","播放器确认开始时","placement,request_id,network,daily_count","network 为枚举,不记录 ad_unit_id","必须先有同 request_id 的成功加载状态"
"ad_complete","服务端接受完成证明时","placement,request_id,reward_transaction_id,duration_sec","不记录广告收入明细到客户端分析流","一个 request_id 最多发放一次奖励"
"ad_fail","加载或播放失败时","placement,request_id,error_category,retryable","错误详情脱敏","失败不增加已完成次数且不扣奖励资格"
"store_view","商店或礼包页面曝光时","surface,catalog_version,visible_skus,session_impression_count","不记录平台支付账户信息","visible_skus 必须均为当前平台 available"
"purchase_start","玩家在确认页主动提交时","sku_id,localized_price,currency,catalog_version,offer_context","价格来自平台;不上传支付凭证","必须存在先前 purchase_confirm_view"
"platform_purchase_result","平台返回购买状态时","sku_id,transaction_id,status,error_category","回执只发安全校验服务,不进普通分析仓","重复平台回调不重复记 success"
"receipt_verify","服务端校验回执时","sku_id,transaction_id,result,platform,latency_ms","严禁记录原始回执、签名和账户标识","成功后才能产生 entitlement_grant 或 reward_grant"
"entitlement_grant","永久/订阅权益发放时","transaction_id,entitlement_id,start_at,end_at,restore","时间为 UTC","恢复购买不会创建重复权益"
"gacha_pull_start","抽取消耗确认时","pull_id,pool_id,cost_resource,cost,pity_before,probability_version","不上传可预测随机种子","先成功扣费再请求服务端结果,失败可原子回滚"
"gacha_pull_result","服务端结果落库时","pull_id,pool_id,item_id,rarity,is_duplicate,pity_after,conversion","不含 RNG 内部状态","与概率版本、保底规则一致;pull_id 幂等"
"offer_impression","礼包卡片达到可见阈值时","offer_id,trigger,stage,time_since_failure_sec,impression_count","不使用敏感画像字段","post_failure_disabled 时 time_since_failure_sec 小于 1800 的事件数为 0"
"pass_xp_gain","通行证经验变化时","season_id,source,delta,xp_after,free_cap,premium_cap","不记录任务自由文本","经验上限与配置一致;购买高级轨不重置既有经验"
"afk_claim","领取离线收益时","offline_sec,capped_sec,multiplier,rewards,quick,ad_used","不记录前后台应用列表","服务器时间决定 capped_sec;相同领取窗口只发一次"