c9578f5ba2
轮播 feed(marquee_seed,全新): - 新增 marquee_seed 表 + admin CRUD/批量生成/预览;真实比价记录(success 且 0<省额≤300元、按 user 去重)优先,种子兜底混播 - 种子为「生成规则」:用户名可空(空则按脱敏格式随机合成、避开同屏撞名),金额改 [min,max] 区间随机,feed 公平随机抽取(不看 sort_order) - 新增 GET /api/v1/platform/savings-feed(无鉴权);展示时间统一刷新为相对当前的最近时刻 三统计配置(platform_stat_display)增强: - 自增长新增「绝对增量」方式(random_kind=add,每周期 +[step_min,step_max]) - 真实值模式加基数偏移(real_offset,展示=真实+偏移) - 只增不减护栏(allow_decrease 默认关,real/manual 不回退防门面缩水) - 累计节省 real 口径只计 0<单条≤300元防虚高;倍率上限 5.0→1.5;PATCH 支持 apply_now 立即更新 迁移:marquee_seed_table / marquee_seed_range / platform_stat_growth_offset(均可逆,已验证) 文档:API/DB 对应文档同步更新 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.3 KiB
2.3 KiB
marquee_seed — 首页轮播种子(生成规则)
模型
app/models/marquee_seed.py| 关联接口 platform-savings-feed / admin-marquee-seeds | ← 表索引
首页「用户****xxx 比价后节省 xx 元」轮播的兜底假数据。轮播真实数据源是全平台比价记录,真实不足 N 条时用本表启用的种子补齐「混播」,保证轮播不空。种子是「生成规则」而非死记录:用户名可空(→随机合成)、金额是区间(→随机取值)。运营后台增删改。逻辑见 app/repositories/marquee.py。
字段
| 列 | 类型 | 约束 / 默认 | 说明 |
|---|---|---|---|
id |
Integer | PK, autoincrement | |
masked_user |
String(64) | NULL 可空 | 脱敏用户名,如 用户********a52(整串存)。留空 → feed 展示时按脱敏格式随机合成(用户********+3 位 hex,避开同屏撞名),风格与真实条一致、永不穿帮 |
min_cents |
Integer | NOT NULL | 节省金额区间下限(分) |
max_cents |
Integer | NOT NULL | 节省金额区间上限(分);feed 每次在 [min,max] 随机取值,固定金额则 min==max |
enabled |
Boolean | NOT NULL, default true | 停用的不参与混播 |
sort_order |
Integer | NOT NULL, default 0 | 仅后台列表排序(小在前);feed 是公平随机抽取,不看此字段 |
created_at |
DateTime(tz) | server_default now() | 创建时间 |
初始数据(migration 播种)
6 条 = 客户端原写死的轮播条目(金额转分、min==max 固定值):a52/18.60、k89/42.40、m71/7.90、p46/156.30、r93/23.50、c28/89.40。
(marquee_seed02 迁移把旧单值列 saved_amount_cents 拆成 min_cents=max_cents,并把 masked_user 改为可空。)
说明
- feed 取真实(
comparison_recordsuccess 且0<saved≤300 元,按 user 去重)优先,不足用本表启用种子公平随机抽取补齐(不再固定取前 N,所有种子都有机会露出)。种子用户名空则随机合成、金额区间随机取值。展示时间统一刷新成「相对现在的最近时刻」(详见 platform-savings-feed)。 - 改种子走 admin
/admin/api/marquee-seedsCRUD + 批量生成(/bulk)+ 预览(/preview),写操作带审计。