2.8 KiB
2.8 KiB
展示基线方案(Display Seed Baseline)
背景
worksheet 的 likes(收藏)和 downloads(下载)初始值为 0,对用户缺乏吸引力。
之前的做法是直接修改数据库真实字段,导致无法区分哪些是运营配置的底数、哪些是真实用户行为。
方案概述
数据层拆开:真实 + 展示基线。
| 字段 | 含义 | 谁在写 | 初始值 |
|---|---|---|---|
likes |
真实用户收藏累加 | 云函数 worksheetsStatsUpdate / userFavorites 的 inc(1) |
0 |
downloads |
真实用户下载累加 | 云函数 worksheetsStatsUpdate / userDownloadLogs 的 inc(1) |
0 |
likes_seed |
运营配置的收藏基线 | worksheetSync 页面一键同步 | 0 |
downloads_seed |
运营配置的下载基线 | worksheetSync 页面一键同步 | 0 |
展示值 = likes + likes_seed(或 downloads + downloads_seed)
运营看板 只看 likes / downloads(真实值),不受 seed 污染。
涉及改动
1. 数据库 worksheets 集合
每条 worksheet 新增两个字段:
{
"likes_seed": 20,
"downloads_seed": 15
}
2. Seed 数据来源
文件路径:miniprogram/supportPages/worksheetSync/mockLikes.ts
导出 MOCK_SEED_COUNTS,以 worksheet id 为 key,值为 { downloads, likes }。
3. worksheetSync 管理页
新增「同步 Seed 数据」按钮,点击后:
- 读取
MOCK_SEED_COUNTS - 构建 patches:
[{ id, likes_seed, downloads_seed }, ...] - 调用
worksheetsBatchPatch批量写入
4. 云函数改动
所有对外返回 likes / downloads 的云函数,在返回前合并 seed 值:
item.likes = (item.likes || 0) + (item.likes_seed || 0);
item.downloads = (item.downloads || 0) + (item.downloads_seed || 0);
涉及的云函数:
| 云函数 | 改动点 |
|---|---|
worksheetsQuery |
返回数据前合并 seed |
ageRecommendedQuery |
合并 seed 后再排序和取 Top N |
homeAutoRefresh |
改为全量查询 + 合并 seed + 内存排序 |
pageContentBuild |
toDisplayItem 中合并 seed |
5. 不需要改动的部分
| 模块 | 原因 |
|---|---|
worksheetsStatsUpdate |
只 inc(1) 真实字段,不涉及 seed |
userDownloadLogs |
只 inc(1) downloads,不涉及 seed |
userFavorites |
只 inc(1) likes,不涉及 seed |
worksheetsPublish |
发布时设置真实初始值,不涉及 seed |
| 用户端收藏/下载交互 | 保持现有行为不变 |
优势
- 真实数据干净:
likes/downloads永远只反映真实用户行为 - 全站一致:所有出口在云端统一计算展示值,端上无需额外逻辑
- 调整无需发版:修改 seed 后通过管理页一键同步,不用重新构建小程序
- 运营可判断:直接查 DB 的
likes/downloads字段即为真实数据