Files
guke 2ddea4159d feat(coupon-data): 领券成功率看板(整单/点位/分平台 + 按券) (#130)
后台「领券数据」看板此前只有发起/完成数与耗时分位,缺少成功率视角。本 MR 补齐三档平台粒度成功率与一张按券(coupon_id)成功率表,并为看板增加领券状态多选过滤。
服务端埋点
领券每帧按 trace_id 把「成功平台」并集幂等写入 platform_success(merge_session_platform_success;读不到 session 行则静默跳过,不建兜底行;无新平台不写库)。
record_claims 按 session_app_env(trace_id) 反查并打 app_env 标。
新增平台推导:coupon_id_to_platform(前缀 mt_→美团 / tb_·ele_·elm_→淘宝 / jd_→京东,与客户端 couponIdToPlatform 同词表)、succeeded_platforms。成功语义统一为 success + already_claimed。
复用同一 SessionLocal、紧接 record_claims,不新增连接;fire-and-forget,异常已吞。

后台指标与接口
Summary 新增:②整单成功率(勾选平台全领到的 session 占发起数)、③点位成功率(Σ成功平台 / Σ勾选平台)、分平台点位成功率(恒含美团/淘宝/京东三档)。基数与「发起数」一致,含全部 session。
新端点 GET /coupon-data/coupons(coupon_slot_report):按券成功率表,数据源 coupon_claim_record,设备-天粒度,成功率 = 成功 /(成功+失败),skipped 排除,按尝试数倒序。
主表加 status 多选过滤(started/completed/failed/abandoned),汇总/成功率/趋势/明细整体按选中状态算,与 app_env 同级。

兼容性 / 风险
两个新列均可空、旧行按空集/不回填处理,无数据回填;埋点 fire-and-forget,失败不影响领券主流程。
部署务必 alembic upgrade head(因新增了 head 合并迁移)。

---------

Co-authored-by: guke <guke@autohome.com.cn>
Reviewed-on: #130
2026-07-09 17:31:48 +08:00
..
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00
2026-07-09 14:24:46 +08:00

傻瓜比价 App 后端 — 数据库表文档(索引)

数据库:SQLite 起步(data/app.db),生产可切 PostgreSQL(改 DATABASE_URL)。 ORM:SQLAlchemy 2.0(app/models/),迁移:Alembic(alembic/versions/,render_as_batch 兼容 SQLite)。 金额字段一律存整数:金币=个数,现金=(*_cents)。时间列 DateTime(timezone=True)。 最后更新:2026-07-09(补 5 张新表文档并入索引:coupon_session(#99 领券任务流水)、analytics_event(#83 埋点)、invite_cash_transaction(#82 邀请奖励金账本)、admin_role(#117/#126 RBAC 角色)、ad_pangle_daily_revenue(#92,文档已有、补进索引);同步改动列:comparison_record.product_nameswithdraw_order.sourcecoin_account.invite_cash_balance_centsfeedback 审核/环境列、cps_order 京东列、device_liveness.first_protected_atad_feed_reward_record.ad_type/feed_sceneadmin_user.plain_password/pages_override。上一次 2026-06-23)

🧭 先看 OVERVIEW.md — 表 × 功能 × 关系:跨表的「每块功能用哪些表 / 什么操作写哪张表 / 表间 join key」都在那;本页只做单表索引,点进每张表的详情看字段级说明。


表总览(45 张业务表 + alembic_version 框架表)

账号 / 反馈

用途 模型 文档
user 用户(登录主体);几乎所有表的外键宿主 models/user.py 详情
onboarding_completion 新手引导完成标记(按 设备+账号 去重,登录时据此跳过引导) models/onboarding.py 详情
feedback 用户帮助与反馈(含截图) models/feedback.py 详情
device_liveness 无障碍存活监控(心跳超时检出 + 掉线召回;(user_id, device_id) 唯一) models/device.py 详情

好友邀请(注册增长)

用途 模型 文档
invite_relation 邀请绑定关系(注册即生效但绑定不发奖 #113;好友比价并下单后发邀请奖励金,compare_reward_granted 幂等闸;invitee_user_id 唯一) models/invite.py 详情
invite_fingerprint 剪贴板归因失败时的指纹兜底(落地页记 ip+屏幕+机型,登录后反查邀请人) models/invite_fingerprint.py 详情

钱包 / 福利(看广告赚钱闭环)

用途 模型 文档
coin_account 金币+现金余额快照(一用户一行) models/wallet.py 详情
coin_transaction 金币流水账本 models/wallet.py 详情
cash_transaction 现金流水账本(分,金币兑换账) models/wallet.py 详情
invite_cash_transaction 邀请奖励金流水账本(分,与现金物理隔离;好友比价并下单发奖 + source=invite_cash 提现) models/wallet.py 详情
withdraw_order 提现单(现金→微信零钱,含人工审核态;source 分账 coin_cash/invite_cash) models/wallet.py 详情
wechat_transfer_authorization 微信免确认转账授权(一用户一行) models/wallet.py 详情
signin_record 签到记录(7 天循环) models/signin.py 详情
signin_boost_record 签到后看广告膨胀记录 models/signin.py 详情
user_task 一次性任务领取去重 models/task.py 详情
ad_reward_record 看激励视频发奖记录(S2S 回调,trans_id 幂等) models/ad_reward.py 详情
ad_watch_log 看广告观看时长(旧版兼容字段) models/ad_watch_log.py 详情
ad_ecpm_record 广告展示 eCPM 上报(收益对账) models/ad_ecpm.py 详情
ad_feed_reward_record 信息流/Draw 广告结算记录(10 秒一份,client_event_id 幂等;ad_type+feed_scene 分形态/场景) models/ad_feed_reward.py 详情
ad_pangle_daily_revenue 穿山甲 GroMore 后台收益日表(定时拉取,收益报表/大盘真实收益源,#92) models/ad_pangle_revenue.py 详情

比价 / 省钱

用途 模型 文档
comparison_record 比价记录(每次比价完整明细) models/comparison.py 详情
comparison_milestone_claim 比价战绩里程碑领取记录 models/comparison_milestone.py 详情
savings_record 省钱记录(profile 省钱战绩源;真实下单归因 + demo) models/savings.py 详情
price_report 上报更低价(众包纠偏,人工审核发奖) models/price_report.py 详情

比价数据沉淀(pricebot server→server 内部上报,不走用户鉴权)

用途 模型 文档
price_observation 价格观测(平台/门店视角的到手价事实,匿名也记;comparison_record 的客观对照) models/price_observation.py 详情
store_mapping 跨平台「同一家店」id/名/deeplink 身份映射(淘宝/美团/京东,供 lookup 反查省现场搜店) models/store_mapping.py 详情
launch_confirm_sample 启动确认窗 agent 兜底样本(pricebot LLM 放行跨 App 启动窗后回写,供研发人工沉淀规则) models/launch_confirm_sample.py 详情

领券(每日领券联动 · 今日状态)

用途 模型 文档
coupon_prompt_engagement 领券引导窗频控源(今日是否已 engage,按 device+package+日) models/coupon_state.py 详情
coupon_daily_completion 首页「去领取」置灰源(今日是否已跑完整轮) models/coupon_state.py 详情
coupon_claim_record 每张券领取结果沉淀(资产/画像/排查,不参与判断) models/coupon_state.py 详情
coupon_session 一次领券任务一行的全程流水(发起/终态/耗时/机型,admin 领券看板数据源,#99) models/coupon_state.py 详情

美团 CPS 券缓存

用途 模型 文档
meituan_coupon 美团 CPS 券本地缓存(智能推荐/销量榜从库出,定时 ETL 灌入) models/meituan_coupon.py 详情

美团 CPS 群发联盟(私域社群比价 · 群发选品→点击→对账漏斗)

用途 模型 文档
cps_activity 可推广活动池(运营预存的券/物料:美团 actId / 淘宝淘口令 / 京东链接) models/cps_activity.py 详情
cps_group 推广微信群(sid=美团二级渠道追踪位,订单按 sid 归群对账) models/cps_group.py 详情
cps_link 群发短链 /c/{code}(群×活动生成,302 跳/淘宝落地页) models/cps_link.py 详情
cps_click 短链点击事件流(visit/copy,PV/UV 漏斗源) models/cps_link.py 详情
cps_wx_user CPS 落地页微信用户身份(openid 维度;网页授权拿 openid/昵称/unionid,记首次来源群) models/cps_wx_user.py 详情
cps_order 美团联盟 query_order 拉回的对账订单(按 sid 归群算佣金) models/cps_order.py 详情

首页门面数据

用途 模型 文档
ops_stat_config 首页三统计展示配置(real/manual/random) models/ops_stat_config.py 详情
ops_marquee_seed 首页轮播种子(真实不足时兜底混播) models/ops_marquee_seed.py 详情

埋点

用途 模型 文档
analytics_event 客户端埋点事件流(批量上报,一事件一行;admin 埋点日志检索,#83) models/analytics_event.py 详情

运营后台 admin(独立子应用 app/admin/,独立鉴权)

用途 模型 文档
admin_user 管理员账号(独立 JWT + RBAC;pages_override 个人可见页覆盖) models/admin.py 详情
admin_role 后台角色→可见页配置(内建三角色 + 自定义角色,#117/#126) models/admin_role.py 详情
admin_audit_log 操作审计日志(只追加) models/admin.py 详情
app_config 运营可配置项(覆盖 rewards 常量) models/app_config.py 详情

通用约定

  • 主键:id Integer autoincrement;例外:coin_account / wechat_transfer_authorizationuser_id 既是主键也是外键(一用户一行),app_configkey 作主键。
  • 外键:所有用户维度表 user_iduser.id 且建 index(含 device_liveness);admin_audit_log.admin_idadmin_user.id;price_report.comparison_record_idcomparison_record.id
  • 金额:整数;金币计数,现金/价格存「分」(*_cents)。汇率 10000 金币 = 1 元 = 100 分
  • 时间:created_at 等用 DateTime(timezone=True) + server_default=func.now();业务"今天"按北京时间(core/rewards.cn_today),跨天计数用「日期串」列(reward_date / watch_date / report_date,String(10)YYYY-MM-DD)等值查,不在 SQL 里做跨时区 date 比较(SQLite 不可靠)。
  • JSON 列:JSON().with_variant(JSONB(), "postgresql") —— PG 上 JSONB(可建 GIN 索引),SQLite 退化为通用 JSON(否则 create_all 编译报错);feedback.images 例外,用通用 JSON
  • 分页:列表接口统一游标式(id 倒序,cursor=上页最后一条 id,返回 next_cursor)。
  • 迁移:改表必写 alembic 迁移并保持单 head;改表/建表同时更新本目录对应文档(一表一文件)+ OVERVIEW.md