✨ 新增功能设计文档: - 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后端开发规范 - 完善健康检查控制器 - 统一项目代码规范和注释规范
16 KiB
16 KiB
个人网站综合平台产品需求文档 (PRD)
引言/概述
项目背景
构建一个集成化的个人网站平台,涵盖内容创作、知识管理、生活记录、实用工具等多个维度,旨在打造一个功能完整、用户体验优秀的个人数字空间。
核心价值
- 知识管理中心:统一管理个人笔记、博客、阅读内容
- 生活记录平台:记录和分享个人生活点滴
- 实用工具集:集成常用的个人效率工具
- 智能化体验:通过AI增强内容创作和知识检索
目标
主要目标
- 建立完整的个人数字资产管理体系
- 提供便捷的内容创作和发布平台
- 构建实用的个人效率工具集
- 实现智能化的知识管理和检索
可衡量目标
- 支持多种内容格式(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)
流程一:新用户注册与激活
- 访问首页: 用户访问网站,点击"注册"按钮。
- 填写信息: 跳转至注册页面,要求输入用户名、邮箱和密码(密码需二次确认)。
- 前端校验: 实时校验用户名和邮箱是否已被占用,密码是否符合复杂度要求。
- 提交注册: 用户点击"注册",前端校验通过后,将数据发送至后端。
- 后端处理: 后端创建用户记录(状态为
inactive
),生成验证Token,并向用户邮箱发送一封包含激活链接(含Token)的邮件。 - 用户激活: 用户打开邮箱,点击激活链接。
- 激活验证: 后端验证Token有效性,将用户状态更新为
active
,并引导用户至登录页面,提示"激活成功"。
流程二:从笔记到博客的发布
- 创建笔记: 用户在笔记系统中创建并编辑一篇笔记,内容可以是Markdown、富文本等。
- 发起发布: 在笔记编辑页面,用户点击"发布为博客"按钮。
- 配置博客信息: 弹窗或新页面要求用户填写博客的URL slug、选择分类、添加标签、设置封面图等。
- 确认发布: 用户点击"确认发布"。
- 后端处理:
- 后端在
Posts
表中创建一条新记录。 - 复制当前版本的笔记内容到该
Post
记录中。 - 记录该
Post
与源Note
的关联关系 (source_note_id
)。 - 将博客状态设置为
published
。
- 后端在
- 发布成功: 系统提示"发布成功",并提供查看博客文章的链接。
- 后续修改: 用户后续在原笔记上的任何修改,都不会影响已发布的这篇博客文章。用户可在博客管理界面选择"从笔记更新内容"来同步最新修改。
技术架构需求
后端技术栈
- 框架: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)
- 基础用户系统(用户管理、角色权限)
- 笔记系统核心功能
- 基础博客发布
- 系统基础架构
第二期:内容增强
- 完整的博客系统
- 个人空间功能
- 基础工具(密码管理、书签)
- 搜索优化
第三期:高级功能
- 阅读管理系统
- 文件管理系统
- AI集成功能
- 第三方平台同步
第四期:生态完善
- 移动端应用
- 浏览器插件
- 高级分析功能
- 性能优化
风险与挑战
技术风险
- 数据迁移:大量历史数据的迁移和同步
- 性能优化:大文件上传和处理
- 第三方集成:API变更和限制
产品风险
- 功能复杂度:避免功能过于复杂影响用户体验
- 数据安全:个人敏感数据的安全保护
- 兼容性:跨浏览器和设备兼容
成功指标
用户指标
- 日活跃用户数
- 用户留存率
- 功能使用率
技术指标
- 系统响应时间
- 错误率控制
- 数据备份完整性
业务指标
- 内容创作量
- 用户满意度
- 功能完成度
后续规划
短期目标(6个月内)
- 完成第一期功能开发
- 系统稳定性优化
- 基础功能测试
中期目标(1年内)
- 完成主要功能模块
- 移动端支持
- 性能优化
长期目标(1年以上)
- AI功能深度集成
- 开放API生态
- 多语言支持