Files
shaguabijia-app-server/docs/database/ops_marquee_seed.md
T
OuYingJun1024 fb661814cb fix(marquee): 首页轮播脱敏名改为按 user_id 恒定 + 去 Faker 依赖
- _mask_real 无昵称分支用 random.Random(user_id) 播种合成假名 → 同一用户每次展示恒定
  (刷新/翻页不变脸)、不同用户各异;修复原全局 _rng 导致同一用户每请求换名(像假数据)的问题
- 去掉 faker 依赖,改用本地姓池(~100)×名字字池(~120)组合真名 + 中英网络昵称语料,组合空间上万、
  同屏几乎不撞名;_synth_full_name/_synth_masked_name 串入 rng 参数,种子/兜底仍用全局 _rng 出多样
- 同步 docs/api/platform-savings-feed.md、docs/database/ops_marquee_seed.md 脱敏描述
  (去手机尾号/Faker 表述,补 user_id 恒定 + JOIN user 仅活跃用户记录说明)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 17:27:05 +08:00

2.6 KiB

ops_marquee_seed — 首页轮播种子(生成规则)

模型 app/models/ops_marquee_seed.py | 关联接口 platform-savings-feed / admin-marquee-seeds | ← 表索引

首页「XXX 比价后节省 xx 元」轮播的兜底假数据。轮播真实数据源是全平台比价记录,真实不足 N 条时用本表启用的种子补齐「混播」,保证轮播不空。种子是「生成规则」而非死记录:用户名可空(→随机合成手机尾号/中文昵称混合名)、金额是区间(→随机取值)。运营后台增删改。逻辑见 app/repositories/ops_marquee.py

字段

类型 约束 / 默认 说明
id Integer PK, autoincrement
masked_user String(64) NULL 可空 脱敏用户名(整串存)。留空或旧 用户****xxx 模板名 → feed 展示时按脱敏规则随机合成(本地姓/名字池组合的真名 + 中英网络昵称语料,首末字+星;避开同屏撞名、自愈历史种子),风格与真实条一致、永不穿帮。详见 platform-savings-feed
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 改为可空;opsrename01 迁移把表名由 marquee_seed 改为 ops_marquee_seed,与代码 ops_ 前缀对齐,路由 /admin/api/marquee-seeds 不变。)

说明

  • feed 取真实(comparison_record success 且 0<saved≤300 元,按 user 去重)优先,不足用本表启用种子公平随机抽取补齐(不再固定取前 N,所有种子都有机会露出)。种子用户名空则随机合成、金额区间随机取值。展示时间统一刷新成「相对现在的最近时刻」(详见 platform-savings-feed)。
  • 改种子走 admin /admin/api/marquee-seeds CRUD + 批量生成(/bulk)+ 预览(/preview),写操作带审计。