feat: 信息流广告改"所见即所得"发奖——直接发客户端小球显示金币
原规则"看满 10 秒(1 份时长)才发整份、不逐份累加",客户端小球显示与 实发口径可能对不上。用户 2026-06-27 拍板「显示多少给多少」。 - schemas/ad.py:FeedRewardIn 新增 display_coin(客户端小球本条显示金币,缺省 0)。 - repositories/ad_feed_reward.py:grant_feed_reward 优先直接发 display_coin, 钳到本条"1 份满额"(unit_cap = calculate_ad_reward_coin(ecpm, existing_ads+1)) 防刷——合法显示(实际因子2 × 进度 p ≤ 1 份)不被砍,只挡伪造天价值。 - 因子2(LT)改由客户端按 granted 行 COUNT 计入 display_coin,后端只记 granted 行让计数自增,不再服务端重算份值。 - 旧客户端不传 display_coin → 退回"看满 1 份发整份"兼容,不断币。 - display_coin 为 0 且不足一份 → too_short 不发(不计 LT / 当日上限); closed_early / capped 留痕不变。 - api/v1/ad.py:feed_reward 端点透传 display_coin。
This commit is contained in:
@@ -411,6 +411,7 @@ def feed_reward(payload: FeedRewardIn, user: CurrentUser, db: DbSession) -> Feed
|
||||
app_env=payload.app_env,
|
||||
our_code_id=payload.our_code_id,
|
||||
aborted=payload.aborted,
|
||||
display_coin=payload.display_coin,
|
||||
)
|
||||
logger.info(
|
||||
"feed ad reward user_id=%d event=%s status=%s units=%d coin=%d",
|
||||
|
||||
Reference in New Issue
Block a user