11
Some checks failed
CI / verify (push) Has been cancelled

This commit is contained in:
2026-04-16 21:47:20 +08:00
parent 2456c10c63
commit 09d4c0c31b
79 changed files with 11873 additions and 2341 deletions

View File

@@ -0,0 +1,147 @@
# “我的”Tab 历史浏览 PRD
更新时间:`2026-04-16`
## 0. 目标
把“历史浏览”从本地浏览记录升级成账号级内容回访能力,让玩家能找回最近看过的作品,并支持跨设备同步。
---
## 1. 当前现状与问题
当前仓库里 `platformBrowseHistory.ts` 采用 `localStorage` 方案,存在明显限制:
1. 仅本机可见
2. 浏览记录上限固定且不可运营
3. 删除缓存后全部丢失
4. 无法用于账号级推荐和召回
---
## 2. 本期范围
## 2.1 本期要做
1. 账号级历史浏览记录
2. 历史浏览列表接口
3. 浏览记录去重与排序
4. 清空历史入口
## 2.2 本期不做
1. 浏览历史搜索
2. 收藏夹合并
3. 基于历史的复杂推荐页
---
## 3. 详细设计
## 3.1 记录时机
用户进入公开作品详情页时写入浏览记录。
不写入的场景:
- 草稿世界
- 未真正打开详情的列表曝光
## 3.2 列表规则
每条记录展示:
- 世界名
- 作者名
- 摘要
- 封面
- 最近浏览时间
排序:
-`visitedAt` 倒序
去重:
- 同一用户对同一作品只保留最近一次
## 3.3 管理动作
支持:
1. 点击记录进入作品详情
2. 清空全部浏览历史
首期不做单条删除,避免交互复杂化。
---
## 4. 后端设计
## 4.1 数据模型
建议新增:
### `user_browse_history`
- `id`
- `user_id`
- `owner_user_id`
- `profile_id`
- `world_name`
- `subtitle`
- `summary_text`
- `cover_image_src`
- `theme_mode`
- `author_display_name`
- `visited_at`
并对 `user_id + owner_user_id + profile_id` 做唯一约束或 upsert。
## 4.2 接口
### `POST /api/profile/browse-history`
用途:
- 进入作品详情时写入记录
### `GET /api/profile/browse-history`
返回:
- 浏览历史列表
### `DELETE /api/profile/browse-history`
用途:
- 清空当前账号浏览历史
---
## 5. 迁移策略
为了兼容当前本地历史:
1. 用户首次登录后可尝试把本地历史批量上报一次
2. 服务端落库成功后,以服务端历史为主
3. 本地历史保留为短期兜底缓存,不再作为主数据源
---
## 6. 前端实现要求
1. “我的”页优先读服务端历史
2. 清空历史前给出确认
3. 空态保持轻量,不写规则说明
4. 失败时保留当前列表,不做闪断
---
## 7. 验收标准
1. 浏览详情后能在历史浏览中看到记录
2. 同一作品重复浏览只保留最新一条
3. 跨设备登录后可看到同一份历史
4. 清空后列表立即刷新