cursor-init/prd/personal-website-comprehensive-prd.md
expressgy 2518986557 feat(docs): 完成星撰平台M2基础用户系统完整设计文档体系
 新增功能设计文档:
- 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后端开发规范
- 完善健康检查控制器
- 统一项目代码规范和注释规范
2025-06-29 03:11:35 +08:00

455 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 个人网站综合平台产品需求文档 (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生态
- 多语言支持