修复:补齐收益明细广告网络来源 #179

Merged
guke merged 2 commits from codex/ad-revenue-detail-adn into main 2026-07-27 10:24:34 +08:00
Member

本次改动

  • 激励视频发奖记录按用户与 ad_session_id 回填展示侧 ADN
  • 信息流明细保留每条发奖自身上报的 ADN 与底层代码位
  • 历史记录仅在 用户 + trace_id + eCPM 候选网络唯一时安全回填
  • 多网络候选保持空值,避免错误归因

验证

专项测试 4 passed,覆盖不同 ADN 明细及唯一/歧义回填场景。

## 本次改动 - 激励视频发奖记录按用户与 `ad_session_id` 回填展示侧 ADN - 信息流明细保留每条发奖自身上报的 ADN 与底层代码位 - 历史记录仅在 `用户 + trace_id + eCPM` 候选网络唯一时安全回填 - 多网络候选保持空值,避免错误归因 ## 验证 专项测试 4 passed,覆盖不同 ADN 明细及唯一/歧义回填场景。
linkeyu added 1 commit 2026-07-26 20:03:51 +08:00
Member

🤖 review-pr 深审结论

🟢 通过,质量高 — 从展示记录回填发奖记录缺失的 ADN,归因谨慎、有测试。

核心设计:发奖记录(S2S 回调 / 历史信息流)常缺实际填充 ADN,用同 user 的展示记录 AdEcpmRecord 回填。关键是宁缺勿错_unique_ad_source 仅在候选指向唯一 ADN 时回填,多候选(歧义)→ 留空不猜,避免错误归因。

一个看似不对称、实则正确的点:激励视频回填(impression_by_session)直接按 (user_id, ad_session_id) 取、未做唯一性检查,信息流则做了。查证数据模型后确认这是对的 —— AdEcpmRecord.ad_session_id 有唯一约束 uq_ad_ecpm_record_session,激励视频每次一个唯一 session;信息流一整场复用同一 session(多条),故只有信息流需要唯一性检查 + (trace_id, ecpm) 回退。

其它:每条 sub_rewards/reward_detail 各自保留自己的 ADN(聚合父行可能多 ADN),配对前端 #81;批量 IN 查询、无 N+1;测试覆盖唯一 vs 歧义、每条明细独立 ADN。

小 nit(非阻断):激励视频回填无「多展示」测试 —— 不过 ad_session_id 唯一约束已保证不会多条,实际不需要,仅测试对称性。

review-pr 自动深审 · 完整仓 worktree 上下文

## 🤖 review-pr 深审结论 🟢 **通过,质量高** — 从展示记录回填发奖记录缺失的 ADN,归因谨慎、有测试。 **核心设计**:发奖记录(S2S 回调 / 历史信息流)常缺实际填充 ADN,用同 user 的展示记录 `AdEcpmRecord` 回填。关键是**宁缺勿错**:`_unique_ad_source` 仅在候选指向唯一 ADN 时回填,多候选(歧义)→ 留空不猜,避免错误归因。 **一个看似不对称、实则正确的点**:激励视频回填(`impression_by_session`)直接按 `(user_id, ad_session_id)` 取、未做唯一性检查,信息流则做了。查证数据模型后确认这是对的 —— `AdEcpmRecord.ad_session_id` 有唯一约束 `uq_ad_ecpm_record_session`,激励视频每次一个唯一 session;信息流一整场复用同一 session(多条),故只有信息流需要唯一性检查 + `(trace_id, ecpm)` 回退。 **其它**:每条 `sub_rewards`/`reward_detail` 各自保留自己的 ADN(聚合父行可能多 ADN),配对前端 #81;批量 `IN` 查询、无 N+1;测试覆盖唯一 vs 歧义、每条明细独立 ADN。 **小 nit(非阻断)**:激励视频回填无「多展示」测试 —— 不过 `ad_session_id` 唯一约束已保证不会多条,实际不需要,仅测试对称性。 *review-pr 自动深审 · 完整仓 worktree 上下文*
guke added 1 commit 2026-07-27 10:24:28 +08:00
guke merged commit cdd49c6421 into main 2026-07-27 10:24:34 +08:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: WonderableAI/shaguabijia-app-server#179