✨ 新增功能设计文档: - M2基础用户系统数据库设计(12个核心表,RBAC权限模型) - M2基础用户系统接口设计(41个API接口,含排序功能) - 完整的项目需求文档和开发计划 📚 核心文档结构: - 数据库设计:支持树形结构、软删除、审计日志的完整用户权限体系 - 接口设计:包含认证、用户管理、角色权限、组织架构、字典标签等9大模块 - 排序功能:新增7个排序接口,支持拖拽和批量操作 - 项目规划:从MVP到完整生态的4阶段开发计划 🔧 技术栈确定: - 后端:Elysia + Bun.js + MySQL + Redis + Elasticsearch - 前端:Vue.js/React + TypeScript - 部署:Docker + Docker Compose - 测试:Vitest + 完整测试规范 📋 设计亮点: - 无外键约束设计,应用层维护数据完整性 - 树形结构支持(path、level字段优化查询) - 完整的权限继承机制和权限快照 - 支持root超级管理员和多级角色体系 - 标签系统和智能推荐功能 - 统一的响应格式和错误码规范 🎯 覆盖功能: - 用户认证与管理(注册、登录、权限控制) - RBAC角色权限体系(树形角色、权限继承) - 组织架构管理(多级组织、人员分配) - 数据字典与标签系统 - 完整的排序和数据导入导出功能 📈 文档规模: - 数据库设计:38KB,922行 - 接口设计:55KB,3024行 - 总计:约100KB的详细技术文档 🔄 配套更新: - 更新Elysia后端开发规范 - 完善健康检查控制器 - 统一项目代码规范和注释规范
455 lines
16 KiB
Markdown
455 lines
16 KiB
Markdown
# 个人网站综合平台产品需求文档 (PRD)
|
||
|
||
## 引言/概述
|
||
|
||
### 项目背景
|
||
构建一个集成化的个人网站平台,涵盖内容创作、知识管理、生活记录、实用工具等多个维度,旨在打造一个功能完整、用户体验优秀的个人数字空间。
|
||
|
||
### 核心价值
|
||
- **知识管理中心**:统一管理个人笔记、博客、阅读内容
|
||
- **生活记录平台**:记录和分享个人生活点滴
|
||
- **实用工具集**:集成常用的个人效率工具
|
||
- **智能化体验**:通过AI增强内容创作和知识检索
|
||
|
||
## 目标
|
||
|
||
### 主要目标
|
||
1. **建立完整的个人数字资产管理体系**
|
||
2. **提供便捷的内容创作和发布平台**
|
||
3. **构建实用的个人效率工具集**
|
||
4. **实现智能化的知识管理和检索**
|
||
|
||
### 可衡量目标
|
||
- 支持多种内容格式(Markdown、富文本、思维导图、画板)
|
||
- 实现秒级内容搜索响应
|
||
- 支持10+种实用工具集成
|
||
- 提供完整的权限管理体系
|
||
|
||
## 用户故事 (User Stories)
|
||
|
||
- **作为一名创作者**, 我希望能够在一个地方写笔记、画思维导图,并且能将它们无缝地整理成树状结构,方便我构建自己的知识体系。
|
||
- **作为一名博主**, 我希望可以一键将我精心撰写的笔记发布成一篇公开的博客,并且发布后对笔记的修改不会影响已发布的博客,除非我选择更新它。
|
||
- **作为一名普通用户**, 我希望能用我的邮箱快速注册一个账号,并且可以管理我的个人信息、重置密码,确保我的账户安全。
|
||
- **作为一名开发者**, 我希望有一个工具能帮我安全地记录各种网站的密码,并通过浏览器插件自动填充,还能同步我的书签,提升我的工作效率。
|
||
- **作为一名生活记录者**, 我希望能方便地上传照片和视频,以时间线的形式记录我的生活点滴,并能设置只对特定的人开放。
|
||
|
||
## 功能模块详述
|
||
|
||
### 1. 基础用户系统模块
|
||
|
||
#### 1.1 字典管理子系统
|
||
**功能描述**:维护系统中使用的各类数据字典
|
||
- **地区字典**:省份、城市、区县三级联动
|
||
- **分类字典**:菜单类别、标签类别、文件类型等
|
||
- **组织字典**:部门类型、角色类型、权限类型
|
||
- **状态字典**:用户状态、内容状态、审核状态等
|
||
- **扩展字典**:支持自定义字典类型
|
||
**验收标准**:
|
||
- 管理员可以增删改查字典类型和字典项。
|
||
- 系统关键状态(如用户禁用、启用)应与字典数据关联。
|
||
- 前端下拉框、选项等数据应能通过API动态获取字典。
|
||
|
||
#### 1.2 角色权限子系统
|
||
**功能描述**:基于RBAC模型的权限管理体系
|
||
- **角色管理**:
|
||
- 树形结构的角色层级
|
||
- 角色继承机制
|
||
- 角色标签和属性
|
||
- 角色排序和分组
|
||
- **权限管理**:
|
||
- 页面访问权限
|
||
- 接口调用权限
|
||
- 数据访问权限(行级、字段级)
|
||
- 操作权限(增删改查)
|
||
- **权限分配**:
|
||
- 下级角色只能分配上级已有权限
|
||
- 批量权限分配
|
||
- 权限模板机制
|
||
**验收标准**:
|
||
- Root管理员拥有所有权限,且不可被修改。
|
||
- 角色创建时,其可分配的权限不能超过创建者拥有的权限。
|
||
- 用户访问未授权的页面或API时,应返回403 Forbidden状态。
|
||
- 角色的树形结构应能正确地在前端展示和操作。
|
||
|
||
#### 1.3 组织架构子系统
|
||
**功能描述**:管理用户组织关系
|
||
- **组织结构**:
|
||
- 树形组织架构
|
||
- 支持多级嵌套
|
||
- 组织属性和标签
|
||
- **用户归属**:
|
||
- 用户可属于多个组织
|
||
- 主组织和辅助组织
|
||
- 组织内角色分配
|
||
**验收标准**:
|
||
- 用户可以被分配到多个组织节点下。
|
||
- 组织架构支持拖拽调整层级和顺序。
|
||
- 管理员可以根据组织架构筛选和管理用户。
|
||
|
||
#### 1.4 用户管理子系统
|
||
**功能描述**:完整的用户生命周期管理
|
||
- **用户注册**:
|
||
- 邮箱注册验证
|
||
- 手机号注册(可选)
|
||
- 社交账号登录集成
|
||
- **用户认证**:
|
||
- 密码登录
|
||
- 登录错误次数限制
|
||
- 账户锁定和解锁机制
|
||
- 双因子认证(可选)
|
||
- **用户信息**:
|
||
- 基础信息:用户名、邮箱、手机、头像
|
||
- 扩展信息:个人简介、兴趣标签、社交链接
|
||
- 隐私设置:信息可见性控制
|
||
- **账户管理**:
|
||
- 密码修改和重置
|
||
- 找回密码(邮箱/手机)
|
||
- 账户禁用和注销
|
||
- Root超级管理员
|
||
**验收标准**:
|
||
- 新用户注册后,系统需发送验证邮件,点击链接后方可激活账户。
|
||
- 用户连续5次输错密码后,账户应被锁定30分钟。
|
||
- 用户可以随时修改自己的个人信息(除用户名外)。
|
||
- 注销功能需要用户二次确认,并告知数据将被永久删除。
|
||
|
||
### 2. 内容管理系统模块
|
||
|
||
#### 2.1 笔记管理子系统
|
||
**功能描述**:个人知识管理和笔记系统
|
||
- **笔记结构**:
|
||
- 树形文件夹结构
|
||
- 无限层级嵌套
|
||
- 文件夹和笔记混合组织
|
||
- **内容格式**:
|
||
- Markdown编辑器
|
||
- 富文本编辑器
|
||
- 思维导图工具
|
||
- 在线画板工具
|
||
- 代码片段高亮
|
||
- **笔记功能**:
|
||
- 实时保存
|
||
- 版本历史
|
||
- 标签分类
|
||
- 全文搜索
|
||
- 笔记链接和引用
|
||
- 附件管理(图片、文档、音视频)
|
||
- **协作功能**:
|
||
- 笔记分享(链接分享、权限控制)
|
||
- 协作编辑(可选)
|
||
- 评论和批注
|
||
**验收标准**:
|
||
- 笔记内容在编辑时应每隔30秒自动保存一次。
|
||
- 支持至少三级以上的树形目录结构。
|
||
- 全文搜索功能应能在1秒内返回标题或内容包含关键词的结果。
|
||
- 分享的笔记链接可以设置有效期和密码。
|
||
|
||
#### 2.2 博客发布子系统
|
||
**功能描述**:将笔记转化为公开博客
|
||
- **发布机制**:
|
||
- 笔记一键发布为博客
|
||
- 博客独立存储(修改笔记不影响已发布博客)
|
||
- 绑定关系维护
|
||
- 重新发布和更新机制
|
||
- **博客管理**:
|
||
- 发布状态管理(草稿、已发布、下线)
|
||
- SEO优化(标题、描述、关键词)
|
||
- 分类和标签
|
||
- 发布时间控制
|
||
- **互动功能**:
|
||
- 点赞和收藏
|
||
- 评论系统(层级评论)
|
||
- 阅读量统计
|
||
- 分享功能
|
||
- **展示功能**:
|
||
- 博客列表和详情页
|
||
- 分类和标签筛选
|
||
- 搜索功能
|
||
- RSS订阅
|
||
**验收标准**:
|
||
- 从笔记发布博客后,二者内容各自独立。
|
||
- 博客可以关联多个分类和标签。
|
||
- 未发布的博客(草稿)在公开列表不可见。
|
||
- 评论支持层级回复,并有新评论通知。
|
||
|
||
#### 2.3 AI集成子系统
|
||
**功能描述**:AI增强的内容创作和知识管理
|
||
- **内容创作辅助**:
|
||
- AI写作建议
|
||
- 文本润色和优化
|
||
- 自动摘要生成
|
||
- 关键词提取
|
||
- **知识库功能**:
|
||
- 笔记内容向量化
|
||
- 智能检索和推荐
|
||
- 相关内容关联
|
||
- 问答系统
|
||
- **MCP集成**:
|
||
- 多模态内容处理
|
||
- 代码理解和生成
|
||
- 图像识别和描述
|
||
|
||
### 3. 个人空间模块
|
||
|
||
#### 3.1 生活日志子系统
|
||
**功能描述**:记录和分享个人生活
|
||
- **内容类型**:
|
||
- 文字日志
|
||
- 图片分享(支持多图)
|
||
- 视频分享
|
||
- 位置签到
|
||
- 心情记录
|
||
- **组织方式**:
|
||
- 时间轴展示
|
||
- 分类管理
|
||
- 标签系统
|
||
- 重要程度标记
|
||
- **隐私控制**:
|
||
- 公开/私密/好友可见
|
||
- 精细化权限控制
|
||
- 访客记录
|
||
|
||
#### 3.2 社交互动子系统
|
||
**功能描述**:与访客的互动功能
|
||
- **互动功能**:
|
||
- 点赞系统
|
||
- 评论功能
|
||
- 收藏功能
|
||
- 分享功能
|
||
- **通知系统**:
|
||
- 实时通知
|
||
- 消息聚合
|
||
- 邮件通知(可选)
|
||
|
||
### 4. 阅读管理模块
|
||
|
||
#### 4.1 电子书管理子系统
|
||
**功能描述**:个人电子书库管理
|
||
- **格式支持**:
|
||
- PDF、EPUB、MOBI、TXT等
|
||
- 在线阅读器
|
||
- 进度同步
|
||
|
||
#### 4.2 阅读社区子系统
|
||
**功能描述**:阅读交流和分享
|
||
- **分享功能**:
|
||
- 读书笔记分享
|
||
- 书评发布
|
||
- 阅读进度分享
|
||
|
||
### 5. 实用工具模块
|
||
|
||
#### 5.1 密码管理子系统
|
||
**功能描述**:个人密码安全管理
|
||
- **密码存储**:
|
||
- 加密存储
|
||
- 分类管理
|
||
- 标签系统
|
||
- **浏览器插件**:
|
||
- 自动填充
|
||
- 密码生成
|
||
- 同步功能
|
||
|
||
#### 5.2 书签同步子系统
|
||
**功能描述**:跨设备书签管理
|
||
- **同步功能**:
|
||
- 浏览器书签导入/导出
|
||
- 实时同步
|
||
- 冲突解决
|
||
|
||
#### 5.3 第三方平台同步子系统
|
||
**功能描述**:整合各平台数据
|
||
- **Bilibili收藏同步**:
|
||
- 收藏视频同步
|
||
- 分类管理
|
||
- 观看进度
|
||
|
||
#### 5.4 文件管理子系统
|
||
**功能描述**:个人云存储和媒体中心
|
||
- **存储功能**:
|
||
- NAS集成
|
||
- 文件上传下载
|
||
- 文件夹管理
|
||
- 权限控制
|
||
- **媒体功能**:
|
||
- 在线音视频播放
|
||
- 图片预览
|
||
- 文档在线查看
|
||
- **传输功能**:
|
||
- WebRTC点对点传输
|
||
- 阿里云OSS集成
|
||
- 断点续传
|
||
|
||
#### 5.5 信息聚合子系统
|
||
**功能描述**:热点信息和内容聚合
|
||
- **新闻聚合**:
|
||
- 多源新闻抓取
|
||
- 分类展示
|
||
- 关键词过滤
|
||
|
||
## 高阶数据模型概览 (High-Level Data Model)
|
||
|
||
此为概念模型,用于指导数据库设计,具体字段和关系将在详细设计阶段确定。
|
||
|
||
- **核心实体**:
|
||
- `User`: 存储用户信息 (id, username, email, password_hash)
|
||
- `Role`: 角色定义 (id, name, description)
|
||
- `Permission`: 权限定义 (id, action, resource)
|
||
- `Organization`: 组织架构 (id, name, parent_id)
|
||
- `Dictionary`: 数据字典 (id, type, key, value)
|
||
- `Note`: 笔记内容 (id, user_id, title, content, content_type, parent_id)
|
||
- `Post`: 博客文章 (id, user_id, source_note_id, title, content, status)
|
||
- `Tag`: 标签 (id, name)
|
||
- `Category`: 分类 (id, name)
|
||
- `Comment`: 评论 (id, post_id, user_id, content, parent_id)
|
||
- `File`: 文件管理 (id, user_id, file_name, path, type)
|
||
- `Bookmark`: 书签 (id, user_id, title, url)
|
||
- `Password`: 密码记录 (id, user_id, entry_name, username, encrypted_password)
|
||
|
||
- **关系**:
|
||
- `User` (多) <-> (多) `Role` (通过 `UserRole` 中间表)
|
||
- `Role` (多) <-> (多) `Permission` (通过 `RolePermission` 中间表)
|
||
- `User` (多) <-> (多) `Organization` (通过 `UserOrganization` 中间表)
|
||
- `Note` (一) -> (多) `Post`
|
||
- `Post` (多) <-> (多) `Tag` (通过 `PostTag` 中间表)
|
||
- `Post` (多) <-> (多) `Category` (通过 `PostCategory` 中间表)
|
||
- `Post` (一) -> (多) `Comment`
|
||
- `User` (一) -> (多) `Note`, `Post`, `File`, `Bookmark`, `Password`
|
||
|
||
## 关键用户交互流程 (Key User Flows)
|
||
|
||
### 流程一:新用户注册与激活
|
||
1. **访问首页**: 用户访问网站,点击"注册"按钮。
|
||
2. **填写信息**: 跳转至注册页面,要求输入用户名、邮箱和密码(密码需二次确认)。
|
||
3. **前端校验**: 实时校验用户名和邮箱是否已被占用,密码是否符合复杂度要求。
|
||
4. **提交注册**: 用户点击"注册",前端校验通过后,将数据发送至后端。
|
||
5. **后端处理**: 后端创建用户记录(状态为`inactive`),生成验证Token,并向用户邮箱发送一封包含激活链接(含Token)的邮件。
|
||
6. **用户激活**: 用户打开邮箱,点击激活链接。
|
||
7. **激活验证**: 后端验证Token有效性,将用户状态更新为`active`,并引导用户至登录页面,提示"激活成功"。
|
||
|
||
### 流程二:从笔记到博客的发布
|
||
1. **创建笔记**: 用户在笔记系统中创建并编辑一篇笔记,内容可以是Markdown、富文本等。
|
||
2. **发起发布**: 在笔记编辑页面,用户点击"发布为博客"按钮。
|
||
3. **配置博客信息**: 弹窗或新页面要求用户填写博客的URL slug、选择分类、添加标签、设置封面图等。
|
||
4. **确认发布**: 用户点击"确认发布"。
|
||
5. **后端处理**:
|
||
- 后端在`Posts`表中创建一条新记录。
|
||
- 复制当前版本的笔记内容到该`Post`记录中。
|
||
- 记录该`Post`与源`Note`的关联关系 (`source_note_id`)。
|
||
- 将博客状态设置为`published`。
|
||
6. **发布成功**: 系统提示"发布成功",并提供查看博客文章的链接。
|
||
7. **后续修改**: 用户后续在原笔记上的任何修改,都不会影响已发布的这篇博客文章。用户可在博客管理界面选择"从笔记更新内容"来同步最新修改。
|
||
|
||
## 技术架构需求
|
||
|
||
### 后端技术栈
|
||
- **框架**:Elysia + Bun.js
|
||
- **数据库**:MySQL (主) + Redis (缓存) + Elasticsearch (搜索)
|
||
- **对象存储**:支持本地存储、阿里云OSS、自建NAS
|
||
- **消息队列**:Redis/RabbitMQ(处理异步任务)
|
||
|
||
### 前端技术栈
|
||
- **Web端**:Vue.js/React + TypeScript
|
||
- **移动端**:PWA或React Native
|
||
- **浏览器插件**:Manifest V3
|
||
|
||
### 基础设施
|
||
- **部署**:Docker + Docker Compose
|
||
- **监控**:日志收集、性能监控、错误追踪
|
||
- **安全**:HTTPS、数据加密、访问控制
|
||
|
||
### API设计原则
|
||
- **RESTful风格**: 使用标准的HTTP方法 (GET, POST, PUT, DELETE, PATCH)。
|
||
- **版本控制**: API URL中应包含版本号,如 `/api/v1/...`。
|
||
- **统一响应格式**: 所有响应遵循 `{ "code": 0, "message": "success", "data": {} }` 结构。
|
||
- **分页**: 对列表数据提供统一的分页参数,如 `page` 和 `pageSize`。
|
||
- **排序与筛选**: 支持通过URL参数对结果进行排序和筛选。
|
||
- **认证**: 受保护的API需通过`Authorization`头传递JWT。
|
||
|
||
## 非功能性需求
|
||
|
||
### 性能要求
|
||
- **响应时间**:页面加载<2s,接口响应<500ms
|
||
- **并发支持**:支持1000+并发用户
|
||
- **可用性**:99.9%系统可用性
|
||
|
||
### 安全要求
|
||
- **数据加密**:敏感数据加密存储和传输
|
||
- **访问控制**:完善的认证和授权机制
|
||
- **审计日志**:关键操作日志记录
|
||
|
||
### 扩展性要求
|
||
- **模块化设计**:支持功能模块独立部署
|
||
- **API设计**:RESTful API,支持版本控制
|
||
- **数据库**:支持读写分离和分库分表
|
||
|
||
## 开发优先级
|
||
|
||
### 第一期:核心基础(MVP)
|
||
1. 基础用户系统(用户管理、角色权限)
|
||
2. 笔记系统核心功能
|
||
3. 基础博客发布
|
||
4. 系统基础架构
|
||
|
||
### 第二期:内容增强
|
||
1. 完整的博客系统
|
||
2. 个人空间功能
|
||
3. 基础工具(密码管理、书签)
|
||
4. 搜索优化
|
||
|
||
### 第三期:高级功能
|
||
1. 阅读管理系统
|
||
2. 文件管理系统
|
||
3. AI集成功能
|
||
4. 第三方平台同步
|
||
|
||
### 第四期:生态完善
|
||
1. 移动端应用
|
||
2. 浏览器插件
|
||
3. 高级分析功能
|
||
4. 性能优化
|
||
|
||
## 风险与挑战
|
||
|
||
### 技术风险
|
||
- **数据迁移**:大量历史数据的迁移和同步
|
||
- **性能优化**:大文件上传和处理
|
||
- **第三方集成**:API变更和限制
|
||
|
||
### 产品风险
|
||
- **功能复杂度**:避免功能过于复杂影响用户体验
|
||
- **数据安全**:个人敏感数据的安全保护
|
||
- **兼容性**:跨浏览器和设备兼容
|
||
|
||
## 成功指标
|
||
|
||
### 用户指标
|
||
- 日活跃用户数
|
||
- 用户留存率
|
||
- 功能使用率
|
||
|
||
### 技术指标
|
||
- 系统响应时间
|
||
- 错误率控制
|
||
- 数据备份完整性
|
||
|
||
### 业务指标
|
||
- 内容创作量
|
||
- 用户满意度
|
||
- 功能完成度
|
||
|
||
## 后续规划
|
||
|
||
### 短期目标(6个月内)
|
||
- 完成第一期功能开发
|
||
- 系统稳定性优化
|
||
- 基础功能测试
|
||
|
||
### 中期目标(1年内)
|
||
- 完成主要功能模块
|
||
- 移动端支持
|
||
- 性能优化
|
||
|
||
### 长期目标(1年以上)
|
||
- AI功能深度集成
|
||
- 开放API生态
|
||
- 多语言支持 |