声明:本文档为项目需求文档,内容由 AI 辅助生成、博主整理优化,仅作本项目开发参考使用。
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🎯你正在阅读「Java项目-轻聊」系列文章🎯
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🔥弹简特 个人主页
❄️个人专栏直通车:
- 💻软件测试入门记
- 📱野生测试修炼手册 | APP 专项测试笔记
- 🔌接口测试从入门到跑路
- ☕一个后端的 JavaEE 续命指南
- 🛜网络原理续命手册
- 🐍Python 从零摸索日记
- ☕Java项目-轻聊
- ☕Java项目-企悦抽
✨靠热爱去书写自己,靠勇敢去书写生活!
✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨
🌟 博主简介:
![]()
文章目录:
- 写在最前-项目同步码云
- 轻聊 · 产品需求文档(PRD)
- 1. 文档目的
- 2. 项目背景
- 2.1 市场/场景背景
- 2.2 产品定位
- 2.3 建设目标
- 2.4 不在本期范围(Out of Scope)
- 3. 用户与角色
- 3.1 目标用户
- 3.2 用户角色定义
- 3.3 用户画像(简要)
- 4. 产品信息架构
- 5. 用户故事(User Stories)
- 6. 功能需求
- 6.1 认证与个人
- FR-AUTH-001 用户注册 【P0】
- FR-AUTH-002 用户登录 【P0】
- FR-AUTH-003 退出登录 【P0】
- FR-AUTH-004 登录态访问控制 【P0】
- FR-USER-001 个人头像 【P1】
- 6.2 好友
- FR-FRIEND-001 好友列表 【P0】
- FR-FRIEND-002 搜索用户 【P0】
- FR-FRIEND-003 发送好友请求 【P0】
- FR-FRIEND-004 处理好友请求 【P0】
- 6.3 会话与消息
- FR-SESSION-001 会话列表 【P0】
- FR-SESSION-002 创建/进入会话 【P0】
- FR-CHAT-001 实时文字消息 【P0】
- FR-CHAT-002 历史消息 【P0】
- FR-CHAT-003 未读提示 【P1】
- 6.4 系统规则
- 7. 非功能需求(NFR)
- 8. 界面与交互需求(UX)
- 8.1 页面清单
- 8.2 主界面布局要求
- 8.3 交互原则
写在最前-项目同步码云
📦 项目源码 | 码云仓库
点击👉 点我看项目同步代码
轻聊 · 产品需求文档(PRD)
| 属性 | 内容 |
|---|
| 文档编号 | PRD-LIGHTCHAT-v1.0 |
| 产品名称 | 轻聊 |
| 产品版本 | V1.0(MVP) |
| 文档版本 | V1.0 |
| 文档状态 | 已定稿 |
| 撰写角色 | AI模拟产品经理 |
| 目标读者 | 项目经理、开发、测试、UI、业务方 |
1. 文档目的
本文档定义「轻聊」业务目标、用户价值、功能范围与验收口径,作为研发与测试的唯一业务需求来源。
2. 项目背景
2.1 市场/场景背景
即时通讯是高频刚需。网页版微信等产品验证了「浏览器即可沟通、无需安装客户端」的模式,适合JavaEE课设、内网协作、轻量社交等场景。
2.2 产品定位
轻聊是一款面向 Web 端的一对一即时文字聊天产品,交互布局参考网页版微信:左侧会话/好友,右侧聊天区,强调轻量、易部署、易二次开发。
2.3 建设目标
| 目标编号 | 描述 | 衡量方式 |
|---|
| G-01 | 用户可完成注册、登录并在浏览器内稳定聊天 | 核心流程通过率 100% |
| G-02 | 用户可搜索并建立好友关系后再聊天 | 加好友到首条消息 ≤3 分钟(体验) |
| G-03 | 消息实时送达且刷新后可查历史 | 双人在线互发延迟可感知为实时;历史可加载 |
| G-04 | 单账号避免多处同时登录造成混乱 | 重复登录有明确提示且不影响先登录方 |
2.4 不在本期范围(Out of Scope)
| 编号 | 说明 |
|---|
| OOS-01 | 群聊、聊天室广播 |
| OOS-02 | 语音、视频通话 |
| OOS-03 | 图片/文件消息(仅头像上传) |
| OOS-04 | 消息撤回、编辑、@、表情商店 |
| OOS-05 | 服务端已读回执、多端同步策略 |
| OOS-06 | 手机号注册、短信验证码、第三方登录 |
| OOS-07 | 生产级安全(密码加密、HTTPS 强制) |
3. 用户与角色
3.1 目标用户
- 高校 JavaEE课设 / Web 实训学生(主场景)
- 需要简易内网沟通的小团队
3.2 用户角色定义
| 角色 ID | 角色名 | 描述 | 权限概要 |
|---|
| R-01 | 访客 | 未登录访问者 | 仅登录页、注册页 |
| R-02 | 注册用户 | 已完成注册并登录 | 好友、会话、聊天、头像等全部 MVP 功能 |
3.3 用户画像(简要)
| 画像 | 特征 | 核心诉求 |
|---|
| 学生甲 | 首次使用,无技术背景 | 注册后能马上找到同学并聊天 |
| 学生乙 | 多标签页、可能误开两个浏览器 | 重复登录时有清晰提示,不丢先登录会话 |
4. 产品信息架构
轻聊 ├── 认证模块(注册 / 登录 / 退出) ├── 个人中心(头像、昵称展示) ├── 好友模块(列表 / 搜索 / 好友请求) ├── 会话模块(会话列表 / 创建会话) └── 消息模块(实时消息 / 历史消息 / 未读提示)
主界面入口:登录成功后进入client.html(主工作台)。
5. 用户故事(User Stories)
| 故事 ID | 作为… | 我希望… | 以便… | 优先级 |
|---|
| US-01 | 新用户 | 注册账号 | 使用轻聊 | P0 |
| US-02 | 注册用户 | 登录系统 | 进入聊天主界面 | P0 |
| US-03 | 注册用户 | 退出登录 | 账号可被其他设备登录 | P0 |
| US-04 | 注册用户 | 上传头像 | 在列表中被识别 | P1 |
| US-05 | 注册用户 | 查看好友列表 | 选择对象发起聊天 | P0 |
| US-06 | 注册用户 | 搜索用户名并发送好友请求 | 与非好友建立联系 | P0 |
| US-07 | 注册用户 | 同意或拒绝好友请求 | 控制我的好友关系 | P0 |
| US-08 | 注册用户 | 查看会话列表及最后一条消息 | 快速找到聊天对象 | P0 |
| US-09 | 注册用户 | 与好友实时收发文字消息 | 即时沟通 | P0 |
| US-10 | 注册用户 | 查看历史聊天记录 | 回顾此前内容 | P0 |
| US-11 | 注册用户 | 看到未读消息数量 | 知道哪些会话有新消息 | P1 |
| US-12 | 系统 | 限制同账号重复登录 | 避免状态错乱 | P0 |
6. 功能需求
需求编号规则:FR-{模块}-{序号}
优先级:P0=必须上线,P1=重要,P2=可延后
6.1 认证与个人
FR-AUTH-001 用户注册 【P0】
| 项 | 说明 |
|---|
| 描述 | 访客在注册页创建唯一用户名账号 |
| 前置条件 | 无 |
| 输入 | 用户名、密码(均非空) |
| 业务规则 | ① 用户名全局唯一;② 密码本期明文存储(技术债,见 OOS-07) |
| 成功结果 | 提示注册成功,引导至登录页;系统创建用户记录 |
| 失败结果 | 用户名重复时提示失败,不创建账号 |
| 异常/边界 | 空字段由前端拦截,不允许提交 |
FR-AUTH-002 用户登录 【P0】
| 项 | 说明 |
|---|
| 描述 | 注册用户凭用户名密码进入主界面 |
| 业务规则 | ① 用户名+密码完全匹配方可登录;② 同一账号若已在其他浏览器保持登录或 WebSocket 在线,拒绝本次登录,提示「该账号已在其他地方登录,请勿重复登录」,不踢下线先登录方 |
| 成功结果 | 进入主界面,保持登录态 |
| 失败结果 | 凭证错误:提示检查用户名或密码;重复登录:展示明确文案 |
FR-AUTH-003 退出登录 【P0】
| 项 | 说明 |
|---|
| 描述 | 用户主动退出,释放登录与实时连接 |
| 成功结果 | 回到登录页;同账号可再次登录 |
FR-AUTH-004 登录态访问控制 【P0】
| 项 | 说明 |
|---|
| 描述 | 未登录用户不得使用聊天主界面 |
| 规则 | 直接打开主界面时,若未登录则跳转登录页 |
FR-USER-001 个人头像 【P1】
| 项 | 说明 |
|---|
| 描述 | 用户可上传并展示自定义头像 |
| 业务规则 | ① 仅支持 jpg/jpeg/png;② 单文件 ≤2MB;③ 仅能修改本人头像 |
| 成功结果 | 主界面头像更新;好友侧可见(聊天/列表) |
| 失败结果 | 格式/大小/权限不符时给出明确原因 |
6.2 好友
FR-FRIEND-001 好友列表 【P0】
| 项 | 说明 |
|---|
| 描述 | 展示当前用户已建立好友关系的用户 |
| 展示信息 | 好友昵称、头像 |
| 交互 | 点击好友进入聊天流程 |
| 空状态 | 无好友时展示空列表,非报错 |
FR-FRIEND-002 搜索用户 【P0】
| 项 | 说明 |
|---|
| 描述 | 按关键词模糊搜索用户名,用于添加好友 |
| 业务规则 | 结果中不得包含:本人;已是好友;存在待处理好友请求(含我发出与对方发来)的用户 |
| 交互 | 搜索关键词不可为空 |
FR-FRIEND-003 发送好友请求 【P0】
| 项 | 说明 |
|---|
| 描述 | 向目标用户发起好友申请,可填写理由 |
| 业务规则 | 不可添加自己;目标须存在;不可重复申请;不可向已是好友用户申请 |
| 成功结果 | 提示已发送;对方在线时即时收到通知 |
| 失败结果 | 返回可读失败原因(已是好友、重复请求等) |
FR-FRIEND-004 处理好友请求 【P0】
| 项 | 说明 |
|---|
| 描述 | 接收方对好友请求同意或拒绝 |
| 业务规则 | 仅接收方可处理;同意后双方互为好友;拒绝则关系不建立 |
| 离线 | 用户上线后应能看到离线期间收到的待处理请求 |
| 同意结果 | 双方好友列表更新;双方收到「已成为好友」类通知 |
6.3 会话与消息
FR-SESSION-001 会话列表 【P0】
| 项 | 说明 |
|---|
| 描述 | 展示用户参与的单聊会话 |
| 展示信息 | 对方头像、昵称、最后一条消息摘要 |
| 业务规则 | 同一好友在列表中只展示一条会话(去重) |
| 排序 | 有新消息的会话优先置顶(体验要求) |
FR-SESSION-002 创建/进入会话 【P0】
| 项 | 说明 |
|---|
| 描述 | 与好友发起或进入一对一聊天 |
| 业务规则 | 两人之间已存在会话则复用,不重复创建 |
| 边界 | 会话 ID 未就绪时不允许发送消息,需提示用户 |
FR-CHAT-001 实时文字消息 【P0】
| 项 | 说明 |
|---|
| 描述 | 在会话中实时发送与接收文字消息 |
| 业务规则 | ① 消息持久化保存;② 发送方界面即时看到自己发送内容;③ 对方在线时即时收到;④ 两人多条会话记录时,消息归入统一会话(避免分裂) |
| 失败 | 连接异常时提示用户刷新 |
FR-CHAT-002 历史消息 【P0】
| 项 | 说明 |
|---|
| 描述 | 进入会话时加载历史聊天记录 |
| 业务规则 | 单会话最多展示最近 100 条;按时间正序排列 |
| 展示 | 自己与他人消息左右区分 |
FR-CHAT-003 未读提示 【P1】
| 项 | 说明 |
|---|
| 描述 | 会话列表展示未读消息条数角标 |
| 业务规则 | ① 收到他人消息且用户未正在该会话聊天界面时累计;② 用户进入该会话后清零;③ 用户停留在好友 Tab 或搜索页时仍累计 |
| 说明 | 未读状态本期由前端维护,不要求多端同步 |
6.4 系统规则
FR-SYS-001 单点在线 【P0】
| 项 | 说明 |
|---|
| 描述 | 同一账号在同一时刻仅允许一处有效 HTTP 登录与一条 WebSocket 连接 |
| 规则 | 后发起的登录或 WebSocket 连接被拒绝,先登录方不受影响 |
7. 非功能需求(NFR)
| 编号 | 类别 | 需求描述 | 验收口径 |
|---|
| NFR-01 | 性能 | 常规局域网环境下,消息收发用户可感知为「即时」 | 双人互发 10 条无肉眼可见分钟级延迟 |
| NFR-02 | 可用性 | 核心操作有明确成功/失败反馈 | 注册、登录、加好友、发消息均有提示 |
| NFR-03 | 兼容性 | 支持 Chrome/Edge/Firefox 等现代浏览器 | 测试矩阵内浏览器主流程通过 |
| NFR-04 | 可维护性 | 后端分层清晰,便于二次开发 | 符合 SRS 架构约束 |
| NFR-05 | 数据 | 用户名≤20 字;单条消息≤2048 字 | 超长由库表/接口约束 |
| NFR-06 | 安全 | 本期为学校JavaEE课设原型,密码明文、无 HTTPS 强制 | 文档声明,不纳入 V1.0 验收否决项 |
8. 界面与交互需求(UX)
8.1 页面清单
| 页面 | 路径 | 说明 |
|---|
| 登录页 | login.html | 品牌「轻聊」,用户名/密码,跳转注册 |
| 注册页 | register.html | 创建账号,返回登录 |
| 主工作台 | client.html | 左栏+右栏 IM 布局 |
8.2 主界面布局要求
| 区域 | 要求 |
|---|
| 左栏顶部 | 当前用户头像(可点击上传)、昵称、退出 |
| 左栏 Tab | 「会话」「好友」切换 |
| 左栏搜索 | 关键词搜索用户 |
| 左栏列表 | 会话项 / 好友项 / 好友请求项(请求置顶) |
| 右栏 | 聊天标题、消息区、输入框、发送按钮;或搜索结果区 |
| 弹窗 | 好友请求:展示发起人、理由、同意/拒绝 |
8.3 交互原则
- 布局与操作习惯参考网页版微信,降低学习成本。
- 视觉风格:简洁、美观(视觉稿/CSS 可借助设计工具或 AI 辅助,由前端集成)。
- 未读角标:红色数字,大于 0 显示。
OK,老铁们,我们知道我们项目的需求之后,后续我们开发就会参照这个需求进行有目标有方向的开发了。
那么通过这个需求文档,我们下一期将会遵照这个产品需求来制定出自己的开发需求,老铁们,咱们下一期见~