feat(ad-revenue): 领券/比价看板逐次广告收益(ad_ecpm.trace_id + 逐页聚合) #131
Reference in New Issue
Block a user
Delete Branch "feat/per-session-ad-revenue"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
admin「领券数据」「比价记录」两个看板此前只能看到场景级(所有领券/比价)的广告收益,
无法定位「这一次领券/比价具体赚了多少」。根因:收益表
ad_ecpm_record缺trace_id,无法与领券会话 / 比价记录按 trace 关联。
改动
ad_ecpm_record新增trace_id(String(64), index, nullable);迁移
ad_ecpm_trace_id加列 + 索引ix_ad_ecpm_record_trace_id,并收敛当前两个alembic head(
11c44afbea58selfstat +merge_pages_override_coupon_slot)为单 head。EcpmReportIn增trace_id字段;/api/v1/ad/ecpm-report透传;create_ecpm_record落库。revenue_yuan_by_trace(db, trace_ids)——按 trace_id 聚合展示收益,单条 =
min(eCPM元, ¥500钳顶)/1000,与广告收益报表ad_revenue.py同口径;只吃当前页的 trace_id(逐页批量,索引命中,无 N+1)。
CouponDataRow/AdminComparisonListItem增ad_revenue_yuan;coupon_data_report(主表 + 用户抽屉)与list_comparison_records分页后逐页补该字段。tests/test_ad_ecpm_trace_revenue.py(聚合/钳顶/落库)、tests/test_board_ad_revenue.py(两看板 + 抽屉)。三个测试覆盖: - 同一 trace 多条 eCPM 求和 + min(eCPM元, ¥500)/1000 钳顶 - 空 trace 列表直接返回 {}(避免 IN () 非法) - create_ecpm_record 落 trace_id 持久化验证 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>