Files
Jog/doc/jog-system-requirements.md
2026-05-17 15:55:06 +08:00

22 KiB
Raw Permalink Blame History

博客系统需求规格说明书

文档版本 修订日期 修订人 修订内容
V1.0 2026-05-17 初始版本,完成全量需求定义

1. 项目概述

1.1 项目背景

本博客系统旨在为内容创作者与读者提供一个稳定、安全、可扩展的写作与阅读平台。系统支持管理员对平台进行统一管控,注册用户可发布博客、互动评论,访客可浏览公开内容。

1.2 项目目标

  • 构建博客内容管理系统,支持完整的博客发布与管理流程
  • 提供多级评论体系,促进读者与作者互动
  • 保障平台数据安全与访问控制
  • 支持主流浏览器与移动端适配

1.3 适用范围

本文档适用于产品经理、前端开发工程师、后端开发工程师、测试工程师及相关项目干系人,作为系统设计、开发实现与验收测试的统一依据。


2.功能需求清单

2.1 管理员登录

2.1.1 功能描述

提供超级管理员(内置唯一账号)登录后台管理系统的身份认证功能。

2.1.2 业务规则

编号 规则项 业务规则说明
FR-ADM-LOGIN-01 登录方式 支持「手机号+密码」或「用户名+密码」两种方式登录
FR-ADM-LOGIN-02 账号唯一性 系统初始化时内置 1 个 超级管理员账号,不可新增、不可删除
FR-ADM-LOGIN-03 验证码机制 连续 3 次密码输入错误后,需输入图形验证码;连续 5 次错误后,账号锁定 30 分钟
FR-ADM-LOGIN-04 防暴力破解 同一 IP 在 5 分钟内登录失败超过 10 次,该 IP 将被临时封禁 15 分钟
FR-ADM-LOGIN-05 登录日志 每次登录成功/失败均需记录日志,包含:时间、IP 地址、设备指纹、登录结果
FR-ADM-LOGIN-06 会话管理 登录会话有效期为 8 小时,超时需重新认证;支持「记住我」功能(有效期 7 天)

2.1.3 验收标准

编号 验证场景 预期结果
AC-ADM-LOGIN-01 使用正确的用户名/手机号和密码登录 登录成功,跳转至后台仪表盘
AC-ADM-LOGIN-02 使用错误的密码连续登录 3 次 第 4 次登录时出现图形验证码输入框
AC-ADM-LOGIN-03 使用错误的密码连续登录 5 次 账号被锁定,提示「账号已被锁定,请 30 分钟后再试」
AC-ADM-LOGIN-04 尝试创建第二个管理员账号 系统禁止操作,返回错误提示
AC-ADM-LOGIN-05 查询登录日志 日志完整记录每次登录的时间、IP、设备指纹、结果

2.2 用户注册

2.2.1 功能描述

普通用户通过提供邮箱和密码即可自助注册成为系统注册用户。

2.2.2 业务规则

编号 规则项 业务规则说明
FR-USER-REG-01 注册信息 用户需提供 邮箱密码 两项必填信息完成注册
FR-USER-REG-02 密码强度 密码长度 8~32 位,必须包含大写字母、小写字母、数字和特殊字符中的至少三类
FR-USER-REG-03 邮箱唯一性 同一邮箱仅允许注册一个账号,注册时需发送验证邮件进行邮箱真实性校验
FR-USER-REG-04 邮箱验证有效期 邮箱验证链接有效期为 24 小时,超时需重新发送
FR-USER-REG-05 注册频率限制 同一 IP 每小时内最多发起 3 次注册请求
FR-USER-REG-06 密码重置 暂不支持用户自助找回密码,仅管理员可在后台对用户密码进行重置操作

2.2.3 验收标准

编号 验证场景 预期结果
AC-USER-REG-01 使用合法邮箱和合规密码注册 注册成功,系统发送邮箱验证邮件
AC-USER-REG-02 使用已被注册的邮箱再次注册 提示「该邮箱已被注册」
AC-USER-REG-03 输入不合规密码(如纯数字,少于 8 位) 前端提示密码强度要求,阻止提交
AC-USER-REG-04 同一 IP 在 1 小时内发起超过 3 次注册 第 4 次注册被限制,提示「注册过于频繁」
AC-USER-REG-05 管理员在后台重置用户密码 用户收到新密码(或重置通知),可使用新密码登录

2.3 用户登录

2.3.1 功能描述

为已注册用户提供账号登录及会话管理功能,支持多端登录限制与第三方登录扩展。

2.3.2 业务规则

编号 规则项 业务规则说明
FR-USER-LOGIN-01 登录方式 支持「邮箱+密码」方式登录
FR-USER-LOGIN-02 多端登录限制 同一账号最多允许 3 个活跃会话(不同设备/浏览器),超过时最早会话被强制下线
FR-USER-LOGIN-03 第三方登录扩展 系统需预留微信登录与 GitHub 登录的 接口扩展点(OAuth 2.0 协议),当前版本不实现但可配置开关
FR-USER-LOGIN-04 密码错误策略 连续 5 次密码错误后,账号临时锁定 15 分钟
FR-USER-LOGIN-05 忘记密码 点击「忘记密码」后,引导用户联系管理员重置(当前版本无自助找回功能)
FR-USER-LOGIN-06 登录状态保持 默认会话有效期 24 小时,勾选「记住我」后续有效期延长至 14 天

2.3.3 验收标准

编号 验证场景 预期结果
AC-USER-LOGIN-01 使用正确邮箱和密码登录 登录成功,跳转至首页/个人中心
AC-USER-LOGIN-02 同一账号在第 4 台设备上登录 最早登录的设备被强制下线,当前设备登录成功
AC-USER-LOGIN-03 连续 5 次输入错误密码 账号被临时锁定 15 分钟
AC-USER-LOGIN-04 点击「忘记密码」 页面提示「请联系管理员重置密码」,并提供管理员联系信息
AC-USER-LOGIN-05 验证第三方登录接口预留 代码中存在可配置的 OAuth 2.0 扩展接口,配置文件可开关
AC-USER-LOGIN-06 勾选「记住我」后关闭浏览器再打开 会话保持,无需重新登录

2.4 博客发布

2.4.1 功能描述

仅已登录用户可创建和发布博客文章,支持富文本编辑、草稿保存、发布状态管理及标签分类绑定。

2.4.2 业务规则

编号 规则项 业务规则说明
FR-BLOG-PUB-01 登录校验 仅已登录用户 可进入博客编辑页面;未登录用户操作时跳转至登录页
FR-BLOG-PUB-02 富文本编辑器 编辑器支持:文字排版、图片上传/嵌入(支持 JPEG/PNG/GIF/WebP,单图 ≤10MB)、视频嵌入(支持 URL 识别与 iframe 嵌入)
FR-BLOG-PUB-03 草稿保存 编辑器支持手动保存草稿,草稿仅作者可见;系统每隔 30 秒自动保存当前编辑内容至草稿
FR-BLOG-PUB-04 发布状态 发布时可选择文章可见性:公开私密(仅作者可见)、仅粉丝可见
FR-BLOG-PUB-05 状态修改 已发布的文章可修改可见性状态,修改后立即生效
FR-BLOG-PUB-06 标签与分类 一篇文章必须绑定 1 个分类,最多绑定 5 个标签;分类与标签由管理员在后台预定义
FR-BLOG-PUB-07 内容安全 发布内容需经过 XSS 过滤;图片需进行安全检测,禁止上传可执行文件

2.4.3 验收标准

编号 验证场景 预期结果
AC-BLOG-PUB-01 未登录用户访问编辑页 自动跳转至登录页面,登录后返回编辑页
AC-BLOG-PUB-02 在编辑器中插入图片 图片成功上传并显示在编辑器中,不超过大小限制
AC-BLOG-PUB-03 保存草稿后关闭页面再编辑 草稿内容完整保留,继续编辑
AC-BLOG-PUB-04 发布文章设置为「私密」 发布后仅作者在登录状态下可见,其他用户无法访问
AC-BLOG-PUB-05 将已发布文章状态从「公开」改为「私密」 修改后立即生效,访客无法再看到该文章
AC-BLOG-PUB-06 发布时绑定 6 个标签 系统提示最多绑定 5 个标签,禁止提交
AC-BLOG-PUB-07 在上传区域上传 .exe 文件 系统拒绝上传,提示仅支持图片格式

2.5 博客列表查看

2.5.1 功能描述

所有用户可浏览博客列表,支持多维度排序筛选、全文检索、分页加载及浏览量统计。

2.5.2 业务规则

编号 规则项 业务规则说明
FR-BLOG-LIST-01 排序方式 支持按 发布时间(降序/升序)、浏览量(降序)排序
FR-BLOG-LIST-02 分类/标签筛选 支持按分类筛选与按标签筛选,筛选条件可组合使用
FR-BLOG-LIST-03 关键词全文检索 支持对文章 标题正文 进行关键词全文检索,检索结果高亮显示关键词
FR-BLOG-LIST-04 分页加载 每页固定显示 15 篇文章,支持页码跳转与上下翻页
FR-BLOG-LIST-05 私密博客可见性 私密博客 仅对文章作者可见;其他用户(包括管理员)在列表中不可见该文章
FR-BLOG-LIST-06 仅粉丝可见 「仅粉丝可见」的文章仅对作者及关注该作者的用户可见
FR-BLOG-LIST-07 浏览量统计 每次用户(同一用户去重,不包含作者本人)访问文章详情页,浏览量 +1;访客访问也计入
FR-BLOG-LIST-08 浏览量数据展示 列表中每篇文章卡片需显示 阅读量 数据

2.5.3 验收标准

编号 验证场景 预期结果
AC-BLOG-LIST-01 按「浏览量降序」排序 列表按浏览量从高到低排列,数据准确
AC-BLOG-LIST-02 选择分类 A + 标签 B 组合筛选 列表仅显示同时满足分类 A 和标签 B 的文章
AC-BLOG-LIST-03 搜索关键词「设计模式」 标题或正文包含「设计模式」的文章全部展示,关键词高亮
AC-BLOG-LIST-04 访问第 2 页 第 3 页返回 15 篇文章(或无更多文章时提示「已加载全部」)
AC-BLOG-LIST-05 作者访问自己的私密文章 作者可在列表中看到该文章;其他用户无法看到
AC-BLOG-LIST-06 作者本人访问自己的文章详情页 浏览量不增加
AC-BLOG-LIST-07 列表中确认每篇文章的浏览量显示 每篇文章卡片均正确显示阅读量数字

2.6 评论功能

2.6.1 功能描述

为用户提供对博客文章进行评论互动的功能,支持多级回复、审核机制与违规内容管控。

2.6.2 业务规则

编号 规则项 业务规则说明
FR-COMMENT-01 评论权限 已登录用户 方可发表评论;访客可查看但不可发表评论
FR-COMMENT-02 多级回复 支持楼中楼回复,最多嵌套 3 级(如:A → B → C,C 不可再回复);超过 3 级时自动将回复转为第 3 级的平级评论
FR-COMMENT-03 评论审核 管理员可在后台开启/关闭「评论审核」开关;开启后用户发表的评论需管理员审核通过方可展示
FR-COMMENT-04 评论者身份标识 评论者昵称旁显示身份标识:作者(该文章作者)、普通用户
FR-COMMENT-05 违规评论处理 管理员可对违规评论进行 删除(物理删除)或 屏蔽(逻辑隐藏,仅发表者可见)
FR-COMMENT-06 回复通知 当用户的评论被回复时,系统需发送站内通知;楼中楼回复需通知被回复人
FR-COMMENT-07 内容安全 评论内容需过滤 XSS 脚本与敏感词,敏感词库由管理员维护

2.6.3 验收标准

编号 验证场景 预期结果
AC-COMMENT-01 未登录用户点击「发表评论」 弹出登录提示或跳转至登录页
AC-COMMENT-02 评论 A → B → C → D 四层嵌套回复 D 的回复自动变为 C 的平级评论,不产生第 4 级
AC-COMMENT-03 管理员开启评论审核 用户新提交的评论状态为「待审核」,前台不可见;管理员审核通过后显示
AC-COMMENT-04 文章作者在评论区发言 评论旁显示「作者」标识
AC-COMMENT-05 管理员对评论执行「屏蔽」 该评论对其他用户不可见,仅发表者登录后可见
AC-COMMENT-06 用户 A 回复用户 B 的评论 用户 B 收到站内通知
AC-COMMENT-07 评论中包含 <script> 标签 脚本被过滤,评论正常显示文本内容

3.非功能性需求

3.1 3.1.1 前端页面加载

指标 要求
首屏加载时间 ≤ 2 秒(标准 4G 网络环境,不含图片等大资源)
页面交互响应 用户操作反馈时间 ≤ 500ms

3.1.2 接口响应

指标 要求
列表查询接口 95% 的请求响应时间 ≤ 500ms
文章详情接口 95% 的请求响应时间 ≤ 300ms
登录/注册接口 95% 的请求响应时间 ≤ 800ms

3.1.3 并发能力

指标 要求
系统并发用户数 支持 ≥ 500 用户同时在线访问
接口吞吐量 核心接口(列表、详情)TPS ≥ 100/s

3.2 安全性

3.2.1 密码安全

要求项 说明
密码存储 使用 bcrypt(或同等强度算法)对密码进行加盐哈希存储,禁止明文存储
密码传输 登录/注册等涉及密码的请求必须使用 HTTPS 加密传输

3.2.2 接口安全

要求项 说明
SQL 注入防护 所有数据访问层必须使用参数化查询或 ORM 框架,禁止拼接 SQL 语句
XSS 防护 用户输入(博客内容、评论、昵称等)在展示前必须进行 HTML 转义
CSRF 防护 所有涉及状态变更的接口需校验 CSRF Token
接口限流 敏感接口(登录、注册、评论提交)需进行频率限制

3.2.3 数据传输

要求项 说明
全站 HTTPS 生产环境强制 HTTPS,HTTP 请求自动 301 重定向至 HTTPS
敏感信息脱敏 日志中不得输出用户密码、Token 等敏感信息

3.3 兼容性

3.3.1 浏览器兼容

浏览器 支持版本
Google Chrome 最近 3 个主版本(当前 ≥ v120)
Microsoft Edge 最近 3 个主版本(基于 Chromium)
Apple Safari 最近 3 个主版本(当前 ≥ v17

3.3.2 移动端适配

设备 要求
分辨率覆盖 支持 320px ~ 1920px 宽度范围,涵盖 iPhone SE、iPhone 标准系列、iPad 及主流 Android 设备
响应式设计 页面布局使用响应式设计(Flexbox/Grid),在不同分辨率下自动适配布局
触控交互 按钮/链接触控区域 ≥ 44×44pt,支持手势滑动操作

3.4 可用性

要求项 指标
系统可用性 核心功能可用性 ≥ 99.5%(月累计停机 ≤ 3.6 小时)
数据备份 数据库每日自动全量备份,保留最近 7 天备份
灾难恢复 从备份恢复数据的时间目标(RTO)≤ 4 小时,数据恢复点目标(RPO)≤ 24 小时

4.用户角色权限矩阵

4.1 角色定义

角色 说明
管理员 系统内置超级管理员,拥有全部管理权限(仅 1 个账号)
注册用户 通过邮箱注册并验证通过的用户
访客 未登录或未注册的用户

4.2 权限矩阵

功能模块 操作项 管理员 注册用户 访客
管理员登录 登录后台管理系统
用户注册 提交注册申请
用户登录 登录前台系统
第三方登录扩展入口 ✔(预留)
忘记密码(联系管理员)
博客发布 创建/编辑博客 ✔(代发)
保存草稿
发布文章(公开)
发布文章(私密)
发布文章(仅粉丝可见)
修改文章可见性状态 ✔(仅自己的文章)
删除文章 ✔(仅自己的文章)
博客浏览 查看公开博客列表
搜索/筛选博客
查看私密博客 ✔(不可见) ✔(仅自己的)
查看仅粉丝可见博客 ✔(关注者可见)
评论功能 查看评论
发表评论
回复评论
删除/屏蔽评论
评论审核开关配置
后台管理 管理用户账号
管理分类与标签
重置用户密码
管理敏感词库
查看操作日志

注:「—」表示无权操作;「✔」表示有权操作。


5.界面交互要求

5.1 整体设计风格

要求项 说明
设计风格 简洁、现代、内容优先,采用卡片式设计
色彩体系 主色调柔和,文字对比度符合 WCAG 2.1 AA 级标准(对比度 ≥ 4.5:1)
字体 系统默认字体栈,支持中文显示,字号层级清晰(标题/正文/辅助文字)
暗色模式 需同时支持浅色与深色模式,跟随系统设置或用户手动切换

5.2 关键页面交互要求

5.2.1 博客列表页

  • 文章卡片需展示:标题、摘要(截取前 120 字、封面图、发布时间、阅读量、分类名称
  • 鼠标悬停卡片时显示缩放效果(scale: 1.02)
  • 加载下一页支持「滚动加载」与「分页器」两种模式(可配置)
  • 加载过程中显示骨架屏占位,禁止出现大面积空白

5.2.2 文章详情页

  • 文章正文使用合适的排版间距(行高 1.8、段间距 16px),确保阅读体验
  • 图片查看支持点击放大(Lightbox 灯箱效果)
  • 文章底部展示标签列表与分享按钮
  • 评论区采用时间线样式,楼层号标识,楼中楼回复缩进展示

5.2.3 博客编辑页

  • 富文本编辑器采用左右分栏布局,右侧为实时预览区
  • 草稿自动保存时显示「已保存」状态指示器
  • 发布按钮需二次确认弹窗,提示文章可见性设置

5.2.4 移动端适配

  • 导航栏折叠为汉堡菜单
  • 文章列表改为单列布局
  • 编辑器工具栏收起为可展开的浮动按钮
  • 评论输入框吸附在屏幕底部

5.3 异常与边界状态

状态 交互要求
空状态 列表/搜索结果为空时,展示友好的空状态插图与提示文案
加载状态 数据加载中展示骨架屏或 Loading Spinne
错误状态 网络异常/服务错误时,展示错误提示页并提供「重新加载」按钮
超时处理 接口请求超时(≥ 10s)时主动提示用户并允许重试

6.测试验收标准

6.1 功能测试

测试项 覆盖要求 通过条件
管理员登录 覆盖成功登录、密码错误、验证码触发、账号锁定、IP 封禁、登录日志验证 所有用例 100% 通过
用户注册 覆盖成功注册、邮箱重复、密码强度校验、频率限制、邮箱验证 所有用例 100% 通过
用户登录 覆盖成功登录、多端限制、密码锁定、忘记密码流程、会话保持 所有用例 100% 通过
博客发布 覆盖全文编辑(含图片/视频)、草稿自动 覆盖排序、筛选、全文检索、分页、私密可见性、浏览量统计
评论功能 覆盖发表评论、多级回复限制、审核流程、违规处理、身份标识、回复通知 所有用例 100% 通过

6.2 非功能测试

6.2.1 性能测试

测试项 测试方法 通过条件
前端首屏加载 使用 Lighthouse 在 4G 限速环境下测试 首屏加载 ≤ 2
接口响应时间 使用 JMeter 或 Locust 对列表/详情接口发起并发请求 95% 请求 ≤ 500ms
并发用户 模拟 500 用户并发用户执行浏览、搜索操作 系统无宕机,错误率 ≤ 1%

6.2.2 安全测试

测试项 测试方法 通过条件
SQL 注入 使用 SQLMap 对所有输入框注入测试 无法通过注入获取数据
XSS 攻击 在评论区/博客内容中提交 <script>alert(1)</script> 脚本不可执行,HTML 被转义
接口 批量调用登录接口,检查频率限制是否生效 超过阈值后接口返回 429 状态码
密码存储 检查数据库用户表密码字段 存储为 bcrypt,不可逆

6.2.3 兼容性测试

测试项 测试方法 通过条件
浏览器兼容 在 Chrome/Edge/Safari 各最近 3 个版本中执行核心功能冒烟测试 核心功能在所有目标浏览器中表现一致
移动端适配 在 iPhone SE/iPhone 16/ 页面布局正常,无元素溢出,触控交互正常

6.3 验收流程

  1. 提测阶段:开发完成功能后,由测试团队依据本文档编写测试用例并执行测试
  2. Bug 修复:P0/P1 级缺陷需在 24 小时内修复并回归,P2 级缺陷需在交付前完成修复
  3. 验收通过条件
    • 全部 P0/P1 级缺陷已修复且回归通过
    • 功能测试用例通过率 ≥ 99%
    • 性能测试指标达标
    • 安全测试无高危漏洞
  4. 上线会签:产品、开发、测试三方确认验收通过后,方可发布上线

文档结束

本文档覆盖博客系统的全部核心功能需求与非功能性需求,可作为产品、开发、测试团队的需求基线文档。如有需求变更,需通过变更评审流程更新本文档并更新版本号。