书签管理系统 - 产品需求文档
版本: 2.0.0
最后更新: 2025-12-12
文档类型: 产品需求文档 (PRD)
目录
- 产品概述
- 用户场景
- 功能模块
- 浏览器扩展功能
- 用户与设备管理
- 后台管理系统
- 数据同步机制
- 功能优先级
- 非功能需求
1. 产品概述
1.1 产品定位
书签管理系统是一个云端多设备协同的个人网页书签管理工具,通过 Web 应用 + 浏览器扩展 + 后台管理的组合,提供统一的书签管理、智能搜索、多设备同步和隐私控制能力。
- v1.0 MVP版本:已完成,代码放在 mvp/ 文件夹下 ✅
- v2.0 云端版本:已完成,代码放在 src/ 文件夹下 ✅
1.2 目标用户
- 需要管理大量网页书签的个人用户
- 经常在多个浏览器/设备间切换的用户
- 需要对书签进行分类整理的知识工作者
- 希望快速检索历史收藏的开发者/研究人员
- 需要在不同场景(公司/家庭)控制书签可见性的用户
1.3 核心价值
| 价值点 |
描述 |
| 统一管理 |
跨浏览器、跨设备统一管理所有书签 |
| 智能搜索 |
支持模糊搜索、拼音搜索、多关键词搜索 |
| 自动同步 |
浏览器书签操作自动同步到云端 |
| 便捷访问 |
新标签页即为书签主页,随时可用 |
| 隐私控制 |
不同设备可设置不同的书签可见范围 |
| 多设备协同 |
一个账号登录多台设备,数据云端同步 |
1.4 产品组成
| 组件 |
技术栈 |
描述 |
| Bookmark SPA |
Vue 3 |
书签管理 Web 应用(核心功能载体) |
| Browser Extension |
JavaScript |
浏览器扩展(同步桥梁 + 便捷入口) |
| Backend API |
C# / .NET |
后端服务(数据存储(ORM使用freesql) + 业务逻辑) |
| Admin Panel |
Vue |
后台管理系统(用户管理 + 数据管理) |
| Database |
SQL Server / PostgreSQL |
数据持久化存储 |
1.5 系统架构
┌─────────────────────────────────────────────────────────────────┐
│ 客户端 │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────────┐ │
│ │ Bookmark SPA│ │ 浏览器扩展 │ │ 后台管理系统 │ │
│ │ (Vue 3) │ │ (Extension) │ │ (Admin Panel) │ │
│ └──────┬──────┘ └──────┬──────┘ └───────────┬─────────────┘ │
└─────────┼────────────────┼─────────────────────┼────────────────┘
│ │ │
└────────────────┼─────────────────────┘
│
┌──────▼──────┐
│ Backend API │
│ (C#/.NET) │
└──────┬──────┘
│
┌──────▼──────┐
│ Database │
│ (SQL Server) │
└─────────────┘
2. 用户场景
2.1 场景一:日常书签收藏
用户故事: 作为一个用户,我希望在浏览网页时能快速收藏当前页面,并自动同步到我的书签管理系统。
操作流程:
- 用户在浏览器中正常使用 Ctrl+D 添加书签
- 扩展自动检测到新增书签
- 书签自动同步到云端服务器
- 系统根据书签来源文件夹自动添加标签
2.2 场景二:快速查找书签
用户故事: 作为一个用户,我希望能快速找到之前收藏的某个网页,即使我只记得部分关键词。
操作流程:
- 用户打开新标签页(直接看到书签主页)
- 按 Ctrl+K 打开搜索
- 输入模糊关键词或拼音首字母
- 从搜索结果中找到目标书签并打开
2.3 场景三:整理分类书签
用户故事: 作为一个用户,我希望能对我的书签进行分类整理,方便日后查找和管理。
操作流程:
- 用户打开书签管理应用
- 为书签添加/修改标签
- 按标签分组查看书签
- 拖拽调整书签顺序
2.4 场景四:多设备同步
用户故事: 作为一个用户,我希望在不同设备上都能访问我的书签,数据实时同步。
操作流程:
- 用户在设备 A 上登录账号
- 在设备 A 上收藏书签
- 数据自动同步到云端
- 在设备 B 上登录同一账号
- 在设备 B 上查看同步后的书签
2.5 场景五:公司电脑隐私保护 ⭐ 新增
用户故事: 作为一个用户,我在公司电脑上使用书签管理系统,但有些私人书签不想在公司设备上显示。
操作流程:
- 用户在家庭电脑(管理员设备)上登录
- 将某些书签标记为「私密」或设置可见设备
- 用户在公司电脑上登录同一账号
- 公司电脑只能看到「公开」或「允许该设备查看」的书签
- 家庭电脑(管理员设备)可以看到所有书签
2.6 场景六:管理员设备管理
用户故事: 作为一个用户,我希望指定一台设备为管理员设备,可以管理所有书签和设备设置。
操作流程:
- 用户首次登录时,该设备自动成为管理员设备
- 在管理员设备上可以:
- 查看所有书签(包括私密书签)
- 设置书签的可见性范围
- 管理其他设备的权限
- 添加/移除设备
2.7 场景七:后台管理(管理员)
用户故事: 作为系统管理员,我希望能在后台管理所有用户和他们的数据。
操作流程:
- 管理员登录后台管理系统
- 查看用户列表、用户的设备、书签统计
- 可以禁用/启用用户账号
- 可以查看和管理用户的书签数据
3. 功能模块
3.1 书签管理模块
3.1.1 书签 CRUD
| 功能 |
描述 |
优先级 |
| 新增书签 |
手动添加书签,填写标题、URL、描述、标签 |
P0 |
| 编辑书签 |
修改书签的所有字段信息 |
P0 |
| 删除书签 |
删除单个书签,需二次确认 |
P0 |
| 查看详情 |
查看书签完整信息 |
P0 |
| 批量删除 |
勾选多个书签后批量删除 |
P1 |
| 批量打标签 |
为多个书签同时添加标签 |
P1 |
3.1.2 书签列表
| 功能 |
描述 |
优先级 |
| 列表展示 |
以卡片/列表形式展示所有书签 |
P0 |
| 按标签分组 |
书签按标签分组展示 |
P0 |
| 拖拽排序 |
拖拽调整书签顺序 |
P1 |
| 最近访问 |
展示最近访问的书签 |
P0 |
| 常用书签 |
按访问频次展示常用书签 |
P1 |
3.1.3 访问追踪
| 功能 |
描述 |
优先级 |
| 点击计数 |
记录每个书签的访问次数 |
P0 |
| 访问时间 |
记录最后访问时间 |
P0 |
| 访问统计 |
展示访问统计报表 |
P2 |
3.2 搜索模块
3.2.1 全局搜索
| 功能 |
描述 |
优先级 |
| 快捷键唤起 |
Ctrl+K 打开搜索(可自定义) |
P0 |
| 模糊搜索 |
支持模糊匹配 |
P0 |
| 拼音搜索 |
支持拼音全拼和首字母搜索 |
P0 |
| 多关键词 |
空格分隔多关键词 AND 搜索 |
P0 |
| 实时搜索 |
输入时实时展示结果 |
P0 |
| 键盘导航 |
方向键导航,回车打开 |
P0 |
3.2.2 搜索范围
| 搜索字段 |
权重 |
描述 |
| 标题 |
高 |
书签标题 |
| 标签 |
高 |
书签标签 |
| 描述 |
中 |
书签描述 |
| URL |
低 |
书签链接 |
3.2.3 结果排序
| 排序规则 |
优先级 |
| 精确标题匹配 |
最高 |
| 部分标题匹配 |
高 |
| 标签匹配 |
中 |
| 高访问量 |
中 |
| 其他匹配 |
低 |
3.3 标签管理模块
3.3.1 标签功能
| 功能 |
描述 |
优先级 |
| 自动创建 |
添加书签时自动创建新标签 |
P0 |
| 标签列表 |
展示所有标签及使用数量 |
P0 |
| 标签筛选 |
按标签筛选书签 |
P0 |
| 标签重命名 |
修改标签名称 |
P1 |
| 标签合并 |
将多个标签合并为一个 |
P2 |
| 标签删除 |
删除未使用的标签 |
P1 |
| 标签排序 |
自定义标签显示顺序 |
P2 |
| 未分类 |
无标签书签自动归入"未分类" |
P0 |
3.4 数据导入导出模块
3.4.1 JSON 导入导出
| 功能 |
描述 |
优先级 |
| 导出 JSON |
将所有书签导出为 JSON 文件 |
P0 |
| 导入 JSON |
从 JSON 文件导入书签 |
P0 |
| 覆盖/合并 |
导入时可选覆盖或合并 |
P0 |
3.4.2 浏览器书签导入
| 功能 |
描述 |
优先级 |
| HTML 解析 |
解析浏览器导出的 HTML 书签文件 |
P0 |
| 选择性导入 |
用户可勾选需要导入的书签 |
P0 |
| 重复检测 |
自动检测并跳过重复书签 |
P0 |
| 文件夹转标签 |
将书签文件夹路径转为标签 |
P1 |
| 导入预览 |
导入前预览书签列表 |
P0 |
| 导入进度 |
大量导入时显示进度 |
P1 |
3.5 设置模块
3.5.1 外观设置
| 功能 |
描述 |
优先级 |
| 主题切换 |
浅色/深色/跟随系统 |
P0 |
| 视图模式 |
卡片视图/列表视图/标签分组视图 |
P1 |
3.5.2 快捷键设置
| 功能 |
描述 |
优先级 |
| 搜索快捷键 |
自定义搜索唤起快捷键 |
P0 |
| 快捷键捕获 |
可视化快捷键设置 |
P0 |
4. 浏览器扩展功能
4.1 自动同步功能 ⭐ 新增
4.1.1 书签新增同步
| 功能 |
描述 |
优先级 |
| 监听新增 |
监听浏览器书签新增事件 |
P0 |
| 自动同步 |
新增书签自动同步到应用 |
P0 |
| 自动标签 |
根据书签文件夹自动添加标签 |
P0 |
| 同步提示 |
同步成功/失败时显示通知 |
P1 |
详细需求:
- 当用户在浏览器中通过任何方式(Ctrl+D、右键、书签栏等)添加书签时,扩展自动检测
- 将新书签的标题、URL、图标、添加时间同步到书签管理应用
- 根据书签所在的文件夹路径,自动为书签添加对应标签
- 例:书签在「工作/项目A」文件夹 → 自动添加「工作」「项目A」标签
- 同步完成后在扩展图标上显示提示徽章
4.1.2 书签删除同步
| 功能 |
描述 |
优先级 |
| 监听删除 |
监听浏览器书签删除事件 |
P1 |
| 可选同步 |
用户可设置是否同步删除 |
P1 |
| 删除确认 |
可选择是否需要确认 |
P2 |
4.1.3 书签修改同步
| 功能 |
描述 |
优先级 |
| 监听修改 |
监听书签标题/URL 修改 |
P1 |
| 自动更新 |
修改后自动同步到应用 |
P1 |
4.1.4 同步设置
| 功能 |
描述 |
优先级 |
| 同步开关 |
可开启/关闭自动同步 |
P0 |
| 同步方向 |
单向同步(浏览器→应用) |
P0 |
| 同步范围 |
可选择同步特定文件夹 |
P2 |
4.2 新标签页替换 ⭐ 新增
4.2.1 主页替换
| 功能 |
描述 |
优先级 |
| 新标签页 |
新标签页默认显示书签应用 |
P0 |
| 快速访问 |
打开浏览器即可看到书签 |
P0 |
| 搜索聚焦 |
新标签页自动聚焦搜索框 |
P1 |
详细需求:
- 用户打开新标签页时,直接展示书签管理应用主页
- 主页展示最近访问、常用书签、全部书签等信息
- 支持快捷键快速搜索
- 可在设置中关闭此功能,恢复浏览器默认新标签页
4.2.2 主页布局
| 区域 |
内容 |
优先级 |
| 搜索区 |
搜索框 + 快捷键提示 |
P0 |
| 快速访问 |
最近访问的书签(最多 8 个) |
P0 |
| 常用书签 |
访问最多的书签 |
P1 |
| 书签库 |
全部书签(按标签分组) |
P0 |
4.3 全局快捷键搜索 ⭐ 新增
4.3.1 功能概述
| 功能 |
描述 |
优先级 |
| 全局快捷键 |
在任意网页按快捷键唤起搜索 |
P0 |
| 浮层搜索框 |
在当前页面弹出搜索浮层 |
P0 |
| 实时搜索 |
输入即搜索,展示匹配结果 |
P0 |
| 键盘导航 |
方向键导航,回车打开书签 |
P0 |
| ESC 关闭 |
按 ESC 关闭搜索浮层 |
P0 |
详细需求:
- 通过 Content Script 注入到所有网页
- 用户在任意页面按下快捷键(如 Alt+K 或自定义)触发搜索
- 页面上弹出一个浮层搜索框(类似 SPA 中的搜索模态框)
- 搜索框支持模糊搜索、拼音搜索
- 搜索结果显示书签标题、URL、标签
- 点击结果或回车直接在新标签页打开书签
- 按 ESC 或点击遮罩关闭搜索浮层
4.3.2 快捷键配置
| 配置项 |
默认值 |
说明 |
| 搜索快捷键 |
Alt+K |
可自定义,避免与网页快捷键冲突 |
| 启用/禁用 |
启用 |
可关闭全局快捷键功能 |
| 排除网站 |
无 |
可设置某些网站不注入 |
4.3.3 搜索浮层设计
| 元素 |
描述 |
| 遮罩层 |
半透明背景,点击关闭 |
| 搜索输入框 |
自动聚焦,支持清空 |
| 快捷键提示 |
显示当前快捷键 |
| 结果列表 |
最多显示 8-10 条结果 |
| 结果项 |
图标 + 标题 + URL(截断)+ 标签 |
| 空状态 |
无结果时显示提示 |
| 底部提示 |
键盘操作说明 |
4.4 快捷收藏功能 ⭐ 新增
| 功能 |
描述 |
优先级 |
| 工具栏按钮 |
点击扩展图标快速收藏当前页 |
P1 |
| 快速编辑 |
收藏时可编辑标题/标签 |
P1 |
| 收藏确认 |
显示收藏成功提示 |
P1 |
| 仅存应用 |
可选择不保存到浏览器书签 |
P2 |
详细需求:
- 点击扩展图标弹出 Popup
- Popup 中显示「收藏当前页」按钮
- 点击后展开编辑表单(标题、URL、标签)
- 用户可选择:仅保存到应用 / 同时保存到浏览器书签
- 此功能与「监听系统收藏」不冲突,是两个独立入口
4.4.2 右键菜单
| 功能 |
描述 |
优先级 |
| 添加到书签 |
右键页面添加当前页 |
P1 |
| 添加链接 |
右键链接添加该链接 |
P1 |
| 搜索书签 |
右键选中文字搜索书签 |
P2 |
4.5.1 功能描述
| 功能 |
描述 |
优先级 |
| Popup 搜索框 |
在 Popup 中提供搜索入口 |
P2 |
| 快速搜索 |
输入关键词搜索书签 |
P2 |
| 搜索结果 |
显示匹配的书签列表 |
P2 |
| 快速打开 |
点击结果直接打开 |
P2 |
说明: 此功能作为全局快捷键搜索的补充,优先级较低。用户更常用的是全局快捷键搜索。
4.6 事件监控功能
4.6.1 书签事件
| 功能 |
描述 |
优先级 |
| 创建事件 |
记录书签创建操作 |
P0 |
| 删除事件 |
记录书签删除操作 |
P0 |
| 修改事件 |
记录书签修改操作 |
P0 |
| 移动事件 |
记录书签移动操作 |
P1 |
4.6.2 事件展示
| 功能 |
描述 |
优先级 |
| 事件列表 |
在 Popup 中展示最近事件 |
P0 |
| 事件统计 |
显示事件数量统计 |
P0 |
| 书签总数 |
显示浏览器书签总数 |
P0 |
4.7.1 界面布局
| 区域 |
功能 |
优先级 |
| 头部 |
扩展名称/Logo |
P0 |
| 快捷操作 |
⭐ 一键收藏当前页按钮(展开编辑表单) |
P1 |
| 搜索框 |
快速搜索书签 |
P2 |
| 统计信息 |
书签总数、事件数量 |
P0 |
| 操作按钮 |
打开应用、刷新、设置 |
P0 |
| 事件列表 |
最近书签操作记录 |
P0 |
| 底部 |
版本信息、全局搜索快捷键提示 |
P0 |
4.7.2 交互设计
| 交互 |
描述 |
优先级 |
| 收藏反馈 |
收藏成功显示动画/提示 |
P0 |
| 加载状态 |
操作时显示加载状态 |
P0 |
| 错误提示 |
操作失败显示错误信息 |
P0 |
5. 用户与设备管理 ⭐ 新增
5.1 用户系统
5.1.1 用户注册
| 功能 |
描述 |
优先级 |
| 邮箱注册 |
使用邮箱 + 密码注册 |
P0 |
| 邮箱验证 |
发送验证邮件确认 |
P1 |
| 用户名设置 |
设置显示名称 |
P0 |
5.1.2 用户登录
| 功能 |
描述 |
优先级 |
| 邮箱登录 |
邮箱 + 密码登录 |
P0 |
| 记住登录 |
可选记住登录状态 |
P0 |
| 退出登录 |
退出当前设备 |
P0 |
| 退出所有设备 |
清除所有设备登录状态 |
P1 |
| 找回密码 |
通过邮箱重置密码 |
P1 |
5.1.3 用户信息
| 字段 |
描述 |
| 用户ID |
唯一标识 |
| 邮箱 |
登录账号 |
| 用户名 |
显示名称 |
| 密码 |
加密存储 |
| 头像 |
用户头像(可选) |
| 创建时间 |
注册时间 |
| 最后登录 |
最后登录时间 |
| 状态 |
正常/禁用 |
5.2 设备管理
5.2.1 设备注册
| 功能 |
描述 |
优先级 |
| 自动注册 |
首次登录时自动注册设备 |
P0 |
| 设备命名 |
用户可自定义设备名称 |
P0 |
| 设备识别 |
自动识别设备类型(浏览器/系统) |
P0 |
5.2.2 设备信息
| 字段 |
描述 |
| 设备ID |
唯一标识 |
| 用户ID |
所属用户 |
| 设备名称 |
用户自定义名称(如:家庭电脑、公司笔记本) |
| 设备类型 |
浏览器类型 + 操作系统 |
| 是否管理员 |
是否为管理员设备 |
| 创建时间 |
首次登录时间 |
| 最后活跃 |
最后使用时间 |
| 状态 |
正常/禁用 |
5.2.3 管理员设备
| 功能 |
描述 |
优先级 |
| 首个设备为管理员 |
用户首次登录的设备自动成为管理员 |
P0 |
| 管理员转移 |
可将管理员权限转移到其他设备 |
P1 |
| 管理员权限 |
查看所有书签、管理设备、设置可见性 |
P0 |
5.2.4 设备管理操作
| 功能 |
描述 |
优先级 |
| 查看设备列表 |
查看所有已登录的设备 |
P0 |
| 重命名设备 |
修改设备显示名称 |
P0 |
| 移除设备 |
删除设备并退出登录 |
P0 |
| 设置管理员 |
指定某设备为管理员 |
P1 |
5.3 书签可见性控制
5.3.1 可见性级别
| 级别 |
描述 |
可见范围 |
| 公开 |
所有设备可见 |
所有已登录设备 |
| 私密 |
仅管理员设备可见 |
仅管理员设备 |
| 指定设备 |
仅指定设备可见 |
选择的设备列表 |
5.3.2 可见性设置
| 功能 |
描述 |
优先级 |
| 单个书签设置 |
为单个书签设置可见性 |
P0 |
| 批量设置 |
批量修改多个书签的可见性 |
P1 |
| 标签级别设置 |
按标签设置默认可见性 |
P2 |
| 新书签默认值 |
设置新增书签的默认可见性 |
P1 |
5.3.3 可见性数据模型
| 字段 |
类型 |
描述 |
| 书签ID |
string |
关联的书签 |
| 可见性类型 |
enum |
public / private / specified |
| 允许的设备列表 |
string[] |
可见性为 specified 时的设备ID列表 |
5.3.4 可见性规则
| 规则 |
描述 |
| 管理员设备 |
始终可以看到所有书签 |
| 公开书签 |
所有设备都可以看到 |
| 私密书签 |
仅管理员设备可见 |
| 指定设备 |
仅在允许列表中的设备可见 |
| 新增书签 |
继承用户设置的默认可见性 |
6. 后台管理系统 ⭐ 新增
6.1 后台概述
| 项目 |
说明 |
| 用途 |
系统管理员管理用户和数据 |
| 技术栈 |
C# / .NET |
| 访问方式 |
独立的管理后台 Web 页面 |
| 权限要求 |
仅系统管理员可访问 |
6.2 管理员账号
6.2.1 管理员类型
| 类型 |
描述 |
| 超级管理员 |
拥有所有权限,可管理其他管理员 |
| 普通管理员 |
可管理用户和书签数据 |
6.2.2 管理员功能
| 功能 |
超级管理员 |
普通管理员 |
| 查看用户列表 |
✅ |
✅ |
| 禁用/启用用户 |
✅ |
✅ |
| 查看用户书签 |
✅ |
✅ |
| 删除用户书签 |
✅ |
✅ |
| 管理管理员账号 |
✅ |
❌ |
| 系统配置 |
✅ |
❌ |
6.3 用户管理
6.3.1 用户列表
| 功能 |
描述 |
优先级 |
| 用户列表 |
分页展示所有用户 |
P0 |
| 搜索用户 |
按邮箱/用户名搜索 |
P0 |
| 筛选用户 |
按状态、注册时间筛选 |
P1 |
| 用户详情 |
查看用户详细信息 |
P0 |
6.3.2 用户操作
| 功能 |
描述 |
优先级 |
| 禁用用户 |
禁止用户登录 |
P0 |
| 启用用户 |
恢复用户登录权限 |
P0 |
| 重置密码 |
重置用户密码 |
P1 |
| 删除用户 |
删除用户及其所有数据 |
P1 |
6.3.3 用户统计
| 统计项 |
描述 |
| 用户总数 |
注册用户总数 |
| 活跃用户 |
最近 7 天活跃用户数 |
| 新增用户 |
今日/本周/本月新增 |
| 设备数量 |
用户的设备数量 |
6.4 设备管理
6.4.1 设备列表
| 功能 |
描述 |
优先级 |
| 设备列表 |
查看某用户的所有设备 |
P0 |
| 设备详情 |
查看设备详细信息 |
P0 |
6.4.2 设备操作
| 功能 |
描述 |
优先级 |
| 强制下线 |
强制某设备退出登录 |
P1 |
| 禁用设备 |
禁止某设备登录 |
P1 |
6.5 书签管理
6.5.1 书签列表
| 功能 |
描述 |
优先级 |
| 书签列表 |
查看某用户的所有书签 |
P0 |
| 搜索书签 |
按标题/URL 搜索 |
P0 |
| 筛选书签 |
按标签、可见性筛选 |
P1 |
6.5.2 书签操作
| 功能 |
描述 |
优先级 |
| 查看详情 |
查看书签完整信息 |
P0 |
| 删除书签 |
删除违规书签 |
P1 |
6.5.3 书签统计
| 统计项 |
描述 |
| 书签总数 |
系统书签总数 |
| 用户书签数 |
某用户的书签数量 |
| 标签统计 |
各标签使用次数 |
6.6 系统统计
6.6.1 仪表盘
| 统计项 |
描述 |
| 用户总数 |
注册用户总数 |
| 活跃用户 |
DAU / WAU / MAU |
| 书签总数 |
系统书签总数 |
| 设备总数 |
登录设备总数 |
| 今日新增 |
今日新增用户/书签 |
6.6.2 趋势图表
| 图表 |
描述 |
优先级 |
| 用户增长 |
每日新增用户趋势 |
P2 |
| 书签增长 |
每日新增书签趋势 |
P2 |
| 活跃趋势 |
每日活跃用户趋势 |
P2 |
6.7 系统配置
| 配置项 |
描述 |
优先级 |
| 注册开关 |
是否允许新用户注册 |
P1 |
| 邮件配置 |
SMTP 邮件发送配置 |
P1 |
| 存储配置 |
数据库连接配置 |
P1 |
7. 数据同步机制
7.1 同步架构
┌─────────────────────────────────────────────────────────────┐
│ 收藏入口 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 方式1: 监听系统收藏 │
│ ┌──────────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 用户 Ctrl+D │───→│ 扩展 │───→│ 云端 API │ │
│ │ 浏览器收藏 │ │ 监听 │ │ 自动新增 │ │
│ └──────────────┘ └──────────┘ └──────────────────┘ │
│ │
│ 方式2: 一键收藏(Popup) │
│ ┌──────────────┐ ┌──────────┐ ┌──────────────────┐ │
│ │ 点击扩展图标 │───→│ Popup │───→│ 云端 API │ │
│ │ 快速收藏 │ │ 表单 │ │ (可选同步浏览器)│ │
│ └──────────────┘ └──────────┘ └──────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
│
┌──────▼──────┐
│ Backend API │
│ (C#/.NET) │
└──────┬──────┘
│
┌──────▼──────┐
│ Database │
└─────────────┘
7.2 两种收藏方式对比
| 对比项 |
监听系统收藏 |
一键收藏(Popup) |
| 触发方式 |
Ctrl+D / 右键收藏 |
点击扩展图标 |
| 是否存浏览器 |
✅ 是(用户主动操作的) |
可选 |
| 是否存云端 |
✅ 是(自动同步) |
✅ 是 |
| 能否编辑 |
❌ 否(自动) |
✅ 是(可编辑标签) |
| 标签来源 |
文件夹自动映射 |
用户手动选择 |
| 可见性 |
继承默认设置 |
可手动选择 |
| 使用场景 |
习惯用浏览器收藏 |
想快速分类整理 |
7.3 同步规则
7.3.1 新增同步
| 场景 |
处理方式 |
| 浏览器新增书签 |
自动同步到云端,提取文件夹作为标签 |
| 应用新增书签 |
保存到云端(单向同步到浏览器可选) |
7.3.2 重复处理
| 场景 |
处理方式 |
| URL 已存在 |
跳过,不重复添加 |
| 标题不同 |
保留云端中的标题 |
7.3.3 标签映射
| 文件夹结构 |
标签结果 |
| 书签栏/工作 |
「工作」 |
| 书签栏/工作/项目A |
「工作」「项目A」 |
| 其他书签/学习/Vue |
「学习」「Vue」 |
7.4 同步配置
| 配置项 |
选项 |
默认值 |
| 自动同步开关 |
开启/关闭 |
开启 |
| 同步删除 |
开启/关闭 |
关闭 |
| 同步通知 |
开启/关闭 |
开启 |
| 标签提取层级 |
1-3 级 |
2 级 |
| 新书签默认可见性 |
公开/私密 |
公开 |
8. 功能优先级
8.1 P0 - 核心功能(v2.0 已全部完成 ✅)
| 模块 |
功能 |
状态 |
| 用户系统 |
用户注册/登录 |
✅ |
| 用户系统 |
设备自动注册与管理 |
✅ |
| 用户系统 |
管理员设备机制 |
✅ |
| 用户系统 |
书签可见性控制(公开/私密/指定设备) |
✅ |
| 扩展 |
用户登录状态管理 |
✅ |
| 扩展 |
书签新增自动同步(监听系统收藏) |
✅ |
| 扩展 |
自动添加标签(文件夹映射) |
✅ |
| 扩展 |
同步开关设置 |
✅ |
| 应用 |
书签 CRUD(云端存储) |
✅ |
| 应用 |
全局搜索(模糊+拼音) |
✅ |
| 应用 |
标签管理 |
✅ |
| 后端 |
用户认证 API(JWT + RefreshToken) |
✅ |
| 后端 |
书签 CRUD API |
✅ |
| 后端 |
设备管理 API |
✅ |
| 后端 |
可见性控制 API |
✅ |
| 后台 |
用户列表/详情/管理 |
✅ |
| 后台 |
书签查看/管理 |
✅ |
| 后台 |
系统统计数据 |
✅ |
8.2 P1 - 重要功能(v2.0 已全部完成 ✅)
| 模块 |
功能 |
状态 |
| 用户系统 |
找回密码 |
⏸️ 暂缓 |
| 用户系统 |
退出所有设备 |
✅ |
| 用户系统 |
指定设备可见性 |
✅ |
| 用户系统 |
新书签默认可见性设置 |
✅ |
| 扩展 |
书签删除/修改同步 |
🔄 部分完成(删除功能预留) |
| 扩展 |
URL重复检测 |
✅ |
| 应用 |
批量操作 |
✅ |
| 应用 |
拖拽排序 |
✅(排序API已完成) |
| 应用 |
设备管理界面 |
✅ |
| 应用 |
可见性管理界面 |
✅ |
| 后端 |
批量删除 API |
✅ |
| 后端 |
访问记录 API |
✅ |
| 后台 |
设备管理(强制下线/禁用) |
✅ |
| 后台 |
管理员权限控制 |
✅ |
| 后台 |
重置用户密码 |
✅ |
8.3 P2 - 增强功能(v3.0 规划中)
| 模块 |
功能 |
状态 |
| 用户系统 |
邮箱验证 |
📋 |
| 用户系统 |
标签级别可见性 |
📋 |
| 扩展 |
新标签页替换为书签应用 |
📋 |
| 扩展 |
全局快捷键搜索(任意页面) |
📋 |
| 扩展 |
同步特定文件夹 |
📋 |
| 扩展 |
右键菜单添加书签 |
📋 |
| 扩展 |
Popup 快速收藏 |
📋 |
| 应用 |
标签合并 |
📋 |
| 应用 |
标签排序 |
📋 |
| 应用 |
访问统计报表 |
📋 |
| 后台 |
趋势图表 |
📋 |
| 后台 |
数据导出 |
📋 |
8.4 P3 - 未来功能(后续考虑)
| 模块 |
功能 |
状态 |
| 全局 |
团队共享书签 |
📋 |
| 应用 |
AI 智能分类 |
📋 |
| 应用 |
网页快照 |
📋 |
| 后端 |
第三方登录(微信/GitHub) |
📋 |
9. 非功能需求
9.1 性能需求
| 指标 |
要求 |
| 首屏加载 |
< 2 秒 |
| 搜索响应 |
< 500ms |
| 同步延迟 |
< 1 秒 |
| 支持书签数 |
10,000+ |
9.2 兼容性需求
| 平台 |
版本要求 |
| Chrome |
90+ |
| Edge |
90+ |
| Firefox |
88+(需适配 Manifest V2) |
9.3 安全需求
| 需求 |
描述 |
| 数据存储 |
云端服务器加密存储 |
| 传输加密 |
HTTPS 传输 |
| 密码加密 |
密码使用 bcrypt/Argon2 加密存储 |
| Token 认证 |
JWT Token 认证,定期刷新 |
| 权限最小化 |
扩展仅申请必要的权限 |
| 隐私保护 |
不收集用户浏览数据 |
扩展所需权限说明
| 权限 |
用途 |
storage |
存储登录状态和扩展设置 |
bookmarks |
监听书签增删改事件 |
activeTab |
获取当前页面信息(一键收藏) |
webNavigation |
监控导航事件 |
| Content Scripts |
注入到所有页面,实现全局快捷键搜索 |
后端安全要求
| 要求 |
描述 |
| SQL 注入防护 |
使用参数化查询 |
| XSS 防护 |
输入输出过滤 |
| CSRF 防护 |
Token 验证 |
| 速率限制 |
API 请求频率限制 |
| 日志审计 |
关键操作日志记录 |
9.4 可用性需求
| 需求 |
描述 |
| 离线提示 |
无网络时提示用户,缓存最近数据 |
| 响应式设计 |
适配不同屏幕尺寸 |
| 键盘操作 |
支持完整的键盘导航 |
| 无障碍 |
支持屏幕阅读器 |
| 多语言 |
预留多语言支持(后续) |
9.5 后端技术要求
| 项目 |
要求 |
| 框架 |
ASP.NET Core 8+ |
| 数据库 |
SQL Server 或 PostgreSQL |
| ORM |
Entity Framework Core |
| 认证 |
JWT Bearer Token |
| API 文档 |
Swagger / OpenAPI |
| 部署 |
Docker 容器化 |
附录
A. 术语表
| 术语 |
解释 |
| SPA |
Single Page Application,单页应用 |
| Popup |
浏览器扩展点击图标弹出的小窗口 |
| Manifest V3 |
Chrome 扩展最新规范 |
| JWT |
JSON Web Token,用于用户认证 |
| API |
Application Programming Interface,应用程序接口 |
| 管理员设备 |
用户指定的主设备,可查看所有书签 |
| 可见性 |
书签在不同设备上的显示权限控制 |
B. 数据模型概览
用户表 (Users)
| 字段 |
类型 |
描述 |
| Id |
GUID |
主键 |
| Email |
string |
邮箱(唯一) |
| UserName |
string |
用户名 |
| PasswordHash |
string |
密码哈希 |
| Avatar |
string |
头像URL |
| CreatedAt |
DateTime |
创建时间 |
| LastLoginAt |
DateTime |
最后登录 |
| Status |
enum |
状态(正常/禁用) |
设备表 (Devices)
| 字段 |
类型 |
描述 |
| Id |
GUID |
主键 |
| UserId |
GUID |
用户ID |
| DeviceName |
string |
设备名称 |
| DeviceType |
string |
设备类型 |
| IsAdmin |
bool |
是否管理员设备 |
| CreatedAt |
DateTime |
首次登录 |
| LastActiveAt |
DateTime |
最后活跃 |
| Status |
enum |
状态 |
书签表 (Bookmarks)
| 字段 |
类型 |
描述 |
| Id |
GUID |
主键 |
| UserId |
GUID |
用户ID |
| Title |
string |
标题 |
| Url |
string |
URL |
| Description |
string |
描述 |
| Icon |
string |
图标 |
| Tags |
string[] |
标签数组 |
| VisitCount |
int |
访问次数 |
| LastVisitTime |
DateTime |
最后访问 |
| Order |
long |
排序值 |
| Visibility |
enum |
可见性类型 |
| AllowedDevices |
GUID[] |
允许的设备ID |
| CreatedAt |
DateTime |
创建时间 |
| UpdatedAt |
DateTime |
更新时间 |
书签可见性枚举 (Visibility)
| 值 |
描述 |
| Public |
所有设备可见 |
| Private |
仅管理员设备可见 |
| Specified |
仅指定设备可见 |
C. 版本规划
| 版本 |
目标 |
状态 |
| v1.0 |
MVP 功能验证(本地存储) |
✅ 已完成 |
| v2.0 |
云端存储 + 用户系统 + 设备管理 + 书签可见性控制 + 浏览器扩展同步 + 后台管理系统 |
✅ 已完成 |
| v3.0 |
增强功能(新标签页替换、全局快捷键搜索、高级统计报表) |
📋 规划中 |
D. API 接口概览
认证接口
| 接口 |
方法 |
描述 |
| /api/auth/register |
POST |
用户注册 |
| /api/auth/login |
POST |
用户登录 |
| /api/auth/logout |
POST |
退出登录 |
| /api/auth/refresh |
POST |
刷新 Token |
| /api/auth/password/reset |
POST |
重置密码 |
用户接口
| 接口 |
方法 |
描述 |
| /api/user/profile |
GET |
获取用户信息 |
| /api/user/profile |
PUT |
更新用户信息 |
设备接口
| 接口 |
方法 |
描述 |
| /api/devices |
GET |
获取设备列表 |
| /api/devices/{id} |
PUT |
更新设备信息 |
| /api/devices/{id} |
DELETE |
移除设备 |
| /api/devices/{id}/admin |
PUT |
设置管理员设备 |
书签接口
| 接口 |
方法 |
描述 |
| /api/bookmarks |
GET |
获取书签列表(根据设备过滤可见性) |
| /api/bookmarks |
POST |
新增书签 |
| /api/bookmarks/{id} |
GET |
获取书签详情 |
| /api/bookmarks/{id} |
PUT |
更新书签 |
| /api/bookmarks/{id} |
DELETE |
删除书签 |
| /api/bookmarks/{id}/visibility |
PUT |
设置可见性 |
| /api/bookmarks/batch |
POST |
批量操作 |
| /api/bookmarks/import |
POST |
导入书签 |
| /api/bookmarks/export |
GET |
导出书签 |
标签接口
| 接口 |
方法 |
描述 |
| /api/tags |
GET |
获取标签列表 |
| /api/tags/{name} |
PUT |
重命名标签 |
| /api/tags/{name} |
DELETE |
删除标签 |
E. 参考文档
📝 文档维护: 本文档随产品迭代持续更新