feat: 增加收藏、下载种子数据功能

This commit is contained in:
R524809
2026-05-11 12:38:10 +08:00
parent debecd67c6
commit 39b8e01c23
11 changed files with 521 additions and 21 deletions
+83
View File
@@ -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` 字段即为真实数据