Files
doodle-mini/docs/展示基线方案.md
T
2026-05-11 12:38:10 +08:00

2.8 KiB
Raw Blame History

展示基线方案(Display Seed Baseline

背景

worksheet 的 likes(收藏)和 downloads(下载)初始值为 0,对用户缺乏吸引力。
之前的做法是直接修改数据库真实字段,导致无法区分哪些是运营配置的底数、哪些是真实用户行为。

方案概述

数据层拆开:真实 + 展示基线。

字段 含义 谁在写 初始值
likes 真实用户收藏累加 云函数 worksheetsStatsUpdate / userFavoritesinc(1) 0
downloads 真实用户下载累加 云函数 worksheetsStatsUpdate / userDownloadLogsinc(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 数据」按钮,点击后:

  1. 读取 MOCK_SEED_COUNTS
  2. 构建 patches[{ id, likes_seed, downloads_seed }, ...]
  3. 调用 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
用户端收藏/下载交互 保持现有行为不变

优势

  1. 真实数据干净likes / downloads 永远只反映真实用户行为
  2. 全站一致:所有出口在云端统一计算展示值,端上无需额外逻辑
  3. 调整无需发版:修改 seed 后通过管理页一键同步,不用重新构建小程序
  4. 运营可判断:直接查 DB 的 likes / downloads 字段即为真实数据