SHIN 钻石支付审计 — 推翻"SHIN 没钻石"错判

数据范围 2025-11-04 至 2026-05-05 (7 个月) · game_id=2020303 · 生成于 2026-05-07
⚠ 之前所有 deep_analysis 商业化报告都漏拉了钻石支付维度

reference_dquery_tables.md 第 460-499 行 "SHIN 没有钻石资源, res_id=7 是法币 ledger" 的结论 。已通过后端代码 (G123GemCurrencyService.kt + ResourceType.GEM(7,"钻石") + HomePayHandler 钻石购买流程) 和数据交叉验证推翻。

📊 顶部 KPI

SHIN 7个月总营收 (IAP+钻石, JPY等价)
¥824,750,122
合并玩家 77,566 人
钻石支付总额 (JPY 等价)
¥78,739,493
占总营收 9.55%, 3,983 个钻石玩家
钻石买礼包活动数
11 类
payGiftType 全覆盖, 8 大类金额过 50 万 JPY
鲸鱼层(top 1%)钻石占比
14.21%
¥5050 万钻石漏拉, 鲸鱼真实消费比 IAP 报告高 16.6%

🔎 一、SHIN 钻石的真实身份 (后端代码验证)

✅ 推翻 "res_id=7 是法币 ledger" 的错判, 证据如下

1.1 ResourceType.GEM 在源码里就叫"钻石"

文件: C:/code/shinchan/server/shared/src/main/kotlin/com/youzu/crayon/shared/PlayerParamType.kt

enum class ResourceType(...
  GEM(7, "钻石", false, true),  // ← res_id=7 = 钻石, 不是法币
  ...

1.2 G123GemCurrencyService.kt 类注释说得很清楚

文件: C:/code/shinchan/server/home/.../services/G123GemCurrencyService.kt

/**
 * 钻石货币ID使用了资源的ID[ResourceType.GEM],但是其产出和消耗有特定渠道。
 * 不走通用的产出消耗接口(通用产出消耗接口已屏蔽钻石)!!
 *
 * 钻石产出:
 *   1. G123运营发放 (G123发放日元的钻石货币, 需要转成玩家当前货币)
 *   2. 通过商店直购钻石 (玩家当前货币单位与价格1:1发放)
 *
 * 钻石消耗:
 *   1. 购买各个付费礼包消耗 (礼包价格与钻石消耗数量1:1)
 */

1.3 钻石按 g123Currency 分币种记账, 这就是 res_id=7 多币种的真相

res_idres_name性质
7JPY/USD/HKD/SGD/KRW/TWD/IDR/THB/PHP/VND/MYR/AUD/NZD/EUR/GBP/CAD/BRL/MXN 钻石 (按玩家当前货币分桶) — 不是法币

因为 G123 平台玩家用各国法币按 1:1 充钻石, 所以 res_name 是货币代码而非"钻石"两字。 之前的 reference 误以为这是法币 ledger, 其实是钻石的多币种账户

1.4 钻石买礼包埋点 (HomePayHandler.kt L249-252)

ensure(g123GemService.hasEnoughG123GemCurrency(g123GemSubDC, g123Currency, needGemAmount), NOT_ENOUGH_GEM)
val logParam = listOf(req.payGiftType.name, giftId.toString(), giftIndex.toString(),
                      g123PopupId, giftCanBuyInfo.priceCfg.priceId.toString())
g123GemService.consumeG123GemCurrency(g123GemSubDC, needGemAmount, Reason.钻石购买, logParam = logParam)

1.5 钻石支付查询口径 (经探查校准)

字段取值说明
event_idroleres资源/钻石产销流水
res_id7ResourceType.GEM
res_nameJPY/USD/KRW/TWD/HKD/SGD...玩家当前货币 (g123Currency)
change_type2消耗 (=买礼包)
change_reason钻石购买消耗 reason 唯一值
change_amount整数= 真实金额 × 100 (单位是货币)
extra_2payGiftType.name礼包类型: PAY_TRIGGER_PACKAGE 等
extra_3giftId礼包 ID
extra_4giftIndex第几格 (连续礼包/翻转礼包用)
extra_5g123PopupId触发弹窗 ID
extra_6priceId对应 pay_price.xlsx 价格 ID

💎 二、钻石买礼包: 11 类 payGiftType, 7 个月汇总

payGiftTypeJPY 等价占钻石总说明
PAY_TRIGGER_PACKAGE22,898,72029.08%触发礼包 (弹脸礼包等)
PAY_SHOP_PACKAGE16,114,18320.47%商店礼包
PAY_CONTINUOUS_PACKAGE15,373,99219.53%连续礼包 (3 格 + 6 格)
PAY_FLIP_PACKAGE10,102,73412.83%翻转礼包
PAY_ACTIVITY_PACKAGE5,488,0576.97%活动礼包 (大冒险/合作/弹珠/Merge等)
PAY_PASS_PACKAGE3,952,2535.02%通行证 (单/双周)
PAY_PLAY_FUNCTION_PACKAGE3,079,2293.91%玩法功能礼包 (金不理复活/重翻/大冒险复活/行动嘉奖)
PAY_MONTH_CARD641,7690.82%月卡
PAY_CHOOSE_PACKAGE550,4120.70%自选礼包
PAY_TEAM_PACKAGE449,6760.57%团队礼包
PAY_GOLD_PACKAGE88,4680.11%金币礼包 (1 级货币购买)
合计78,739,493100.00%
⚠ 重要修正: PAY_FLIP_PACKAGE / PAY_PLAY_FUNCTION_PACKAGE / PAY_ACTIVITY_PACKAGE 都有钻石支付

之前 reference memory 第 478-479 行说"PAY_FLIP_PACKAGE / PAY_PLAY_FUNCTION_PACKAGE / PAY_ACTIVITY_PACKAGE 不走 ledger" — 。实际数据显示:

🐋 三、鲸鱼分层 — 钻石占比是关键修正量

3.1 全平台分层 (按 IAP+钻石 合并金额降序)

层级玩家数IAP (JPY)钻石 (JPY)合计钻石占该层
top 1% (鲸鱼)775304,980,18450,496,055 355,476,23914.21%
top 1-5% (中鲸)3,103255,806,32913,412,967 269,219,2964.98%
top 5-10% (大R)3,87895,814,5036,168,976 101,983,4796.05%
top 10-30% (中R)15,51380,748,4896,909,995 87,658,4847.88%
top 30%+ (小+微)54,2978,661,1241,751,500 10,412,62416.82%

3.2 鲸鱼层钻石绝对量 = 5050 万 JPY (相当于 33.7 万美元)

这个量级不是边角料: 7 个月内, 顶部 775 个鲸鱼合计用钻石买礼包/道具值 5050 万 JPY, 平均每个鲸鱼多氪了 65,156 JPY 的钻石消费, 这部分在所有 deep_analysis 报告中都被漏算。

3.3 鲸鱼集中度对照 (含/不含钻石)

口径top 1% 占总top 5% 占总top 10% 占总
不含钻石 (仅 IAP)42.60%76.42%88.96%
含钻石 (IAP+钻石)43.10%75.74%88.11%
差异+0.50pp-0.68pp-0.85pp

解读: 加上钻石后, 鲸鱼绝对消费提升, 但中段玩家 (top1-5% 中鲸 + top5-10% 大R) 钻石支付密度也较高 (4.98%~6.05%), 中段被低估的程度跟鲸鱼差不多。原本看起来"集中在头部" 的现象, 加钻石后反而更分散

🔧 四、各报告失真程度评估 + 是否需要重跑

报告对应 payGiftType钻石漏拉量(JPY)失真%需要重跑?
deep_analysis_continuous_pack_6grid.html
deep_analysis_continuous_pack_3grid.html
PAY_CONTINUOUS_PACKAGE 15,373,992中等 (≈15-25% 失真) 需要重跑
deep_analysis_pop_face_pack.html (真弹脸) PAY_TRIGGER_PACKAGE (含 type≥4 弹脸子档) 22,898,720高 (≈30%+ 失真) 必须重跑
deep_analysis_lucky_card_pack.html (金不理) PAY_PLAY_FUNCTION_PACKAGE (function=1,2) 3,079,229 全口径
金不理估 ≈90%
高 (≈30-40% 失真) 必须重跑
deep_analysis_merge_pack.html (Merge) PAY_ACTIVITY_PACKAGE (Merge 子集) 5,488,057 中含 Merge 一部分中等 (待精拆) 需要重跑
单/双周通行证 PAY_PASS_PACKAGE 3,952,253中低 (5%~10%) 建议重跑
翻转礼包 (gameplay_pack_matrix 中标的"钻石维度N/A") PAY_FLIP_PACKAGE 10,102,734高 (≈25%+) 必须重跑 (推翻"钻石维度N/A"结论)
必须重跑的报告 (按优先级)
  1. 真弹脸礼包 (deep_analysis_pop_face_pack.html) — PAY_TRIGGER_PACKAGE 钻石占 29%, 失真最大
  2. 翻转礼包矩阵 (gameplay_pack_matrix.html) — 直接推翻"钻石维度N/A"结论
  3. 金不理玩法礼包 (deep_analysis_lucky_card_pack.html) — 复活/重翻钻石档不可忽略
  4. 连续礼包 6格 + 3格 — 钻石档约占 15-25%, owner 截图特别提到
  5. Merge 道具礼包 — 在 PAY_ACTIVITY_PACKAGE 中

🛠 五、技术细节: 正确的钻石查询模板

5.1 钻石支付总量 (按 payGiftType 拆)

SELECT element_at(event_info,'extra_2') AS pay_gift_type,
       element_at(event_info,'res_name') AS currency,
       COUNT(DISTINCT role_id) AS users,
       SUM(CAST(element_at(event_info,'change_amount') AS BIGINT)) / 100.0 AS amt_in_currency
FROM gameeco_raw.v_presto_ods_game_event_eco_log_d
WHERE ds BETWEEN '20251104' AND '20260505'
  AND game_id = 2020303
  AND event_id = 'roleres'
  AND element_at(event_info,'res_id') = '7'
  AND element_at(event_info,'change_type') = '2'
  AND element_at(event_info,'change_reason') = '钻石购买'
GROUP BY 1, 2;
-- 注意: change_amount 单位是 货币×100, 真实金额需 ÷100
-- 注意: res_name 是 g123Currency (JPY/USD/KRW...), 不是"钻石" 两字

5.2 定位某个具体玩法/礼包的钻石支付

-- 例: 翻转礼包某 giftId
WHERE element_at(event_info,'extra_2') = 'PAY_FLIP_PACKAGE'
  AND element_at(event_info,'extra_3') = '5000XX'   -- giftId
  AND element_at(event_info,'extra_4') = 'X'        -- giftIndex (第几格)
-- 例: 连续礼包某档
WHERE element_at(event_info,'extra_2') = 'PAY_CONTINUOUS_PACKAGE'
  AND element_at(event_info,'extra_3') = 'XXXX'