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