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

84 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 展示基线方案(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 新增两个字段:
```json
{
"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 值:
```js
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` 字段即为真实数据