feat: 增加收藏、下载种子数据功能
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
# 展示基线方案(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` 字段即为真实数据
|
||||
Reference in New Issue
Block a user