fix: 领券成功率剔除中途退出 #213
Reference in New Issue
Block a user
Delete Branch "codex/coupon-rate-exclude-abandoned"
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?
改动说明
验证
配套前端:WonderableAI/shaguabijia-admin-web#101
🤖 review-pr 深审结论
🟡 需作者/产品确认 · 0.8 — 领券成功率分母改为「发起数 − 中途退出数」,改动本身正确、有测试、无回归;但大盘总览与领券数据页两处「领券成功率」的分母口径现在不一致,值得确认是否有意为之。
需确认
app/admin/repositories/stats.py:569vsapp/admin/repositories/coupon_data.py:128,150:coupon.success_rate分母 =started − abandoned(剔除中途退出)。coupon_data._success_rates.full_success_rate分母仍 =started(含 abandoned;该函数注释明确写「基数含全部 session…与发起数同基数」,用于流失分析)。构建 / 测试(已实跑,诚实)
main(PR head 已含最新 main)后隔离 worktree 实跑:tests/test_admin_read.py(含新增用例)→ 25 passedtests/test_coupon_platform_success.py(coupon_data 侧回归)→ 13 passed,无回归。做得对
if coupon_success_denominator else None,避免除零;abandoned ⊆ started保证分母非负。abandoned/success_denominator带默认值),向后兼容;配套前端 admin-web#101。建议
full_success_rate是否也应剔除 abandoned(跨页一致);若维持不同口径,建议在两处 UI / 字段注释里点明差异,免得对数对不上。🤖 自动深审 · 全程只读 · 合并 base 后隔离 worktree 实跑 pytest
🤖 review-pr 深审结论(增量复审 @8fc2cd41)
🟢 可合并 · 0.85(上轮 🟡 的跨页口径疑点已确认系有意为之)— 本次新提交「区分跳过事件与无逐券结果」是对逐券展示的正交精修,加性、有测试、无回归。
本次增量(
37fba3c → 8fc2cd41,coupon_data 3 文件 +148/-15)coupon_data._point_scores_by_trace:改为一次聚合出succeeded(_SLOT_OK) /tried(_SLOT_TRIED) /events(全部),去掉原WHERE status IN _SLOT_TRIED过滤 → 只有 skipped 事件的 trace 也能返回(tried=0, events>0),从而区分「跳过」与「无事件」。_session_to_row:逐券计数语义更清晰 ——point_stats有则用实际值;abandoned且无事件 → 0/0(退出前无结果);其它无事件 →None;新增point_event_count。coupon_user_records:抽屉行也补算point_stats(原来传 None,现能显示逐券分)。CouponDataRow+point_event_count: int = 0(加性、带默认)。关键核对:不影响聚合口径
_point_scores_by_trace只喂逐行展示;聚合full_success_rate/point_success_rate走的是会话级platform_success独立算法(_success_rates),不受本次重构影响(已核对 + 43 passed)。故上轮我提的「大盘剔除 abandoned vs coupon_data 含 abandoned」依旧存在,但经 admin-web#101 body 明确「点位成功率维持原有独立口径」+ 本次改动方向,确认系有意的双口径(大盘看真实成功率、数据页看流失基数),非缺陷。构建 / 测试(已实跑,诚实)
main后隔离 worktree 实跑:test_coupon_point_score+test_coupon_platform_success+test_admin_read→ 43 passed,无回归。建议
🤖 自动深审 · 增量复审 · 合并 base 后隔离 worktree 实跑 pytest