# 书签管理系统 - 产品需求文档

> **版本**: 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/)

---

> 📝 **文档维护**: 本文档随产品迭代持续更新

