feat(ad-revenue): 领券/比价看板逐次广告收益(ad_ecpm.trace_id + 逐页聚合) #131

Merged
guke merged 6 commits from feat/per-session-ad-revenue into main 2026-07-10 22:14:01 +08:00

6 Commits

Author SHA1 Message Date
guke 4680277c2a fix(admin-coupon-data): fill ad_revenue_yuan in user-records drawer too
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 14:37:18 +08:00
guke e9c0a80d44 feat(admin): 两看板逐行补「本次广告收益」(ad_revenue_yuan)
按本页 trace_id 一次性聚合 ad_ecpm_record 展示收益(元),挂到领券数据
看板明细行(dict 字段)与比价记录列表项(ORM 瞬态属性),防 N+1 范式与
现有 _attach_user_info / _ad_coins_by_trace 一致。

- CouponDataRow: 新增 ad_revenue_yuan: float = 0.0 字段
- AdminComparisonListItem: 新增 ad_revenue_yuan: float = 0.0 字段
- coupon_data.py: _session_to_row 增 ad_revenue_yuan 参数;coupon_data_report
  在分页后调用 crud_ecpm.revenue_yuan_by_trace 按本页批量聚合
- queries.py: list_comparison_records 在 _attach_user_info 后瞬态挂 ad_revenue_yuan
- 新增 tests/test_board_ad_revenue.py:两个看板各一个集成测试

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 14:24:07 +08:00
guke 166fe9e8dd test(ad-ecpm): exercise eCPM ¥500 clamp path + explicit zero-revenue assert
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 14:18:22 +08:00
guke 5e8c9d3028 test(ad-ecpm): revenue_yuan_by_trace TDD — 按 trace 聚合展示收益(元)(A4)
三个测试覆盖:
- 同一 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>
2026-07-10 12:25:50 +08:00
guke 107157cdd1 feat(ad-ecpm): trace_id 端到端落库 — 模型/迁移/Schema/Repository/Endpoint(A1-A3+A5)
- AdEcpmRecord 新增 trace_id(String 64, index, nullable)列,与 ad_feed_reward_record 一致
- 迁移 ad_ecpm_trace_id:ADD COLUMN + CREATE INDEX,同时收敛双 head
  (11c44afbea58 selfstat + merge_pages_override_coupon_slot → 单 head)
- EcpmReportIn.trace_id 字段透传客户端本场比价/领券 session ID
- create_ecpm_record 新增 trace_id 参数并落库
- ecpm_report 端点 forward payload.trace_id 到 repository

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 12:25:43 +08:00
guke 80e0fb90db docs: plan for per-session ad revenue in admin boards
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 12:18:20 +08:00