f7d86011c1
- 新增 GET /admin/api/ad-revenue-report:展示条数/收益 + 复用金币审计逐条复算做发奖对账 - ad_ecpm/ad_reward/ad_feed_reward 各加 app_env + our_code_id 两列(alembic 迁移) - ecpm-report / feed-reward 接收并落库 app_env/our_code_id;激励发奖按 ad_session_id 回填 - ad_audit 抽出 audit_rows,报表与逐条审计复用同一复算口径 - 组级 matched 改「组内逐条全一致」,避免应发和==实发和的互相抵消掩盖错误 - list_feedbacks 改 offset 分页并返回 total(配合 admin 页码分页) - 反馈正文上限 _CONTENT_MAX 2000→200 - 文档:新增 admin-ad-revenue-report,更新 ecpm/feed-reward/feedback 及对应 db docs Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: OuYingJun1024 <1034284404@qq.com> Reviewed-on: #54 Co-authored-by: ouzhou <ouzhou@wonderable.ai> Co-committed-by: ouzhou <ouzhou@wonderable.ai>
1.8 KiB
1.8 KiB
ad_feed_reward_record — 信息流广告奖励记录
点位 2 的奖励记录。每条记录对应客户端完成的一次信息流广告展示/播放事件。
字段
| 字段 | 类型 | 约束 | 说明 |
|---|---|---|---|
id |
Integer | PK | 自增主键 |
client_event_id |
String(64) | UNIQUE, NOT NULL | 客户端幂等事件 id |
ad_session_id |
String(64) | index, nullable | 客户端生成的一次信息流广告会话 id |
user_id |
Integer | FK → user.id, index, NOT NULL |
用户 |
reward_date |
String(10) | index, NOT NULL | 北京时间日期 YYYY-MM-DD |
duration_seconds |
Integer | NOT NULL | 整场比价累计观看秒数(轮播各条相加) |
unit_count |
Integer | NOT NULL | duration_seconds // 10 得到的奖励份数 |
ecpm_raw |
String(32) | NOT NULL | 客户端上报 eCPM 原始值 |
adn |
String(32) | nullable | 实际投放 ADN(聚合后实际填充子渠道) |
slot_id |
String(64) | nullable | 实际展示代码位(底层 mediation rit) |
app_env |
String(16) | nullable | 来源应用 prod(傻瓜比价)/test(测试),客户端 feed-reward 上报;旧数据 NULL。广告收益报表金币侧按它聚合 |
our_code_id |
String(64) | nullable | 我们配置的代码位 104xxx,客户端上报;旧数据 NULL |
coin |
Integer | NOT NULL | 实发金币,非 granted 时为 0 |
status |
String(16) | NOT NULL | granted(已发) / capped(当日次数超限) / too_short(整场总时长<10s 凑不满一份) / closed_early(用户中途 ✕ 关闭,全程未看完) |
created_at |
DateTime | index, NOT NULL | 创建时间 |
约束
UNIQUE(client_event_id):同一完成事件重试不重复发奖。
关联
- 入账时写
coin_transaction.biz_type=feed_ad_reward,ref_id=client_event_id。