# 书签管理系统 - 产品需求文档 > **版本**: 2.0.0 > **最后更新**: 2025-12-12 > **文档类型**: 产品需求文档 (PRD) --- ## 目录 1. [产品概述](#1-产品概述) 2. [用户场景](#2-用户场景) 3. [功能模块](#3-功能模块) 4. [浏览器扩展功能](#4-浏览器扩展功能) 5. [用户与设备管理](#5-用户与设备管理) 6. [后台管理系统](#6-后台管理系统) 7. [数据同步机制](#7-数据同步机制) 8. [功能优先级](#8-功能优先级) 9. [非功能需求](#9-非功能需求) --- ## 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 场景一:日常书签收藏 **用户故事**: 作为一个用户,我希望在浏览网页时能快速收藏当前页面,并自动同步到我的书签管理系统。 **操作流程**: 1. 用户在浏览器中正常使用 Ctrl+D 添加书签 2. 扩展自动检测到新增书签 3. 书签自动同步到云端服务器 4. 系统根据书签来源文件夹自动添加标签 ### 2.2 场景二:快速查找书签 **用户故事**: 作为一个用户,我希望能快速找到之前收藏的某个网页,即使我只记得部分关键词。 **操作流程**: 1. 用户打开新标签页(直接看到书签主页) 2. 按 Ctrl+K 打开搜索 3. 输入模糊关键词或拼音首字母 4. 从搜索结果中找到目标书签并打开 ### 2.3 场景三:整理分类书签 **用户故事**: 作为一个用户,我希望能对我的书签进行分类整理,方便日后查找和管理。 **操作流程**: 1. 用户打开书签管理应用 2. 为书签添加/修改标签 3. 按标签分组查看书签 4. 拖拽调整书签顺序 ### 2.4 场景四:多设备同步 **用户故事**: 作为一个用户,我希望在不同设备上都能访问我的书签,数据实时同步。 **操作流程**: 1. 用户在设备 A 上登录账号 2. 在设备 A 上收藏书签 3. 数据自动同步到云端 4. 在设备 B 上登录同一账号 5. 在设备 B 上查看同步后的书签 ### 2.5 场景五:公司电脑隐私保护 ⭐ 新增 **用户故事**: 作为一个用户,我在公司电脑上使用书签管理系统,但有些私人书签不想在公司设备上显示。 **操作流程**: 1. 用户在家庭电脑(管理员设备)上登录 2. 将某些书签标记为「私密」或设置可见设备 3. 用户在公司电脑上登录同一账号 4. 公司电脑只能看到「公开」或「允许该设备查看」的书签 5. 家庭电脑(管理员设备)可以看到所有书签 ### 2.6 场景六:管理员设备管理 **用户故事**: 作为一个用户,我希望指定一台设备为管理员设备,可以管理所有书签和设备设置。 **操作流程**: 1. 用户首次登录时,该设备自动成为管理员设备 2. 在管理员设备上可以: - 查看所有书签(包括私密书签) - 设置书签的可见性范围 - 管理其他设备的权限 - 添加/移除设备 ### 2.7 场景七:后台管理(管理员) **用户故事**: 作为系统管理员,我希望能在后台管理所有用户和他们的数据。 **操作流程**: 1. 管理员登录后台管理系统 2. 查看用户列表、用户的设备、书签统计 3. 可以禁用/启用用户账号 4. 可以查看和管理用户的书签数据 --- ## 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 快捷收藏功能 ⭐ 新增 #### 4.4.1 一键收藏(Popup 方式) | 功能 | 描述 | 优先级 | |------|------|--------| | 工具栏按钮 | 点击扩展图标快速收藏当前页 | P1 | | 快速编辑 | 收藏时可编辑标题/标签 | P1 | | 收藏确认 | 显示收藏成功提示 | P1 | | 仅存应用 | 可选择不保存到浏览器书签 | P2 | **详细需求**: - 点击扩展图标弹出 Popup - Popup 中显示「收藏当前页」按钮 - 点击后展开编辑表单(标题、URL、标签) - 用户可选择:仅保存到应用 / 同时保存到浏览器书签 - 此功能与「监听系统收藏」不冲突,是两个独立入口 #### 4.4.2 右键菜单 | 功能 | 描述 | 优先级 | |------|------|--------| | 添加到书签 | 右键页面添加当前页 | P1 | | 添加链接 | 右键链接添加该链接 | P1 | | 搜索书签 | 右键选中文字搜索书签 | P2 | --- ### 4.5 Popup 内搜索 #### 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 Popup 界面 #### 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. 参考文档 - [Chrome 扩展开发文档](https://developer.chrome.com/docs/extensions/) - [Chrome Override Pages](https://developer.chrome.com/docs/extensions/mv3/override/) - [Chrome Bookmarks API](https://developer.chrome.com/docs/extensions/reference/bookmarks/) - [ASP.NET Core 文档](https://docs.microsoft.com/aspnet/core/) - [Entity Framework Core](https://docs.microsoft.com/ef/core/) --- > 📝 **文档维护**: 本文档随产品迭代持续更新