用户故事与产品订单 - xych5q/online-shop GitHub Wiki
用户故事与产品订单
第 1 组 · 迭代 1 产品订单(Product Backlog) | 负责人:董嘉润 优先级:P0 = 基线 MVP 必须;P1 = 应做。估算单位:故事点(等权)。 2026-10-07 同步(需求问题库 第三节答复):US-03/05/08/09/11 验收标准已按拍板结论修订(队首自动进交易、卖家处置失败买家、交易中可撤销等)。
一、产品订单(按优先级排序)
| 序 | 用户故事 | 优先级 | 故事点 | 迭代 | 状态(Java 实现) |
|---|---|---|---|---|---|
| US-02 | 发布商品 | P0 | 2 | 1 | 已完成 |
| US-09 | 提交购买意向并取得口令码 | P0 | 2 | 1 | 已完成 |
| US-03 | 查看意向购买人(队首自动进入交易) | P0 | 3 | 1 | 已完成 |
| US-05 | 标记交易结果与处置失败买家 | P0 | 3 | 1 | 已完成 |
| US-04 | 手动冻结与解冻商品 | P0 | 2 | 1 | 已完成 |
| US-08 | 浏览在售商品 | P0 | 1 | 1 | 已完成 |
| US-10 | 凭口令码查询位次与状态 | P0 | 2 | 1 | 已完成 |
| US-11 | 凭口令码修改信息或撤销意向 | P0 | 2 | 1 | 已完成 |
| US-01 | 卖家登录后台 | P0 | 1 | 1 | 已完成 |
| US-07 | 修改密码 | P0 | 1 | 1 | 已完成 |
| US-06 | 查看历史商品与意向流水 | P1 | 2 | 1 | 已完成 |
| US-12 | 商品图片上传与无图占位 | P1 | 1 | 1 | 已完成 |
合计 22 故事点,12/12 故事全部在 Java 正式实现中完成(仓库
server/目录),逐条验证见各模块成果物页。
二、故事详情与验收标准
US-01 卖家登录后台
作为 卖家,我要 用用户名和密码登录后台,以便 管理我的商品和买家意向。
- 用户名或密码错误时提示「用户名或密码错误」,不进入后台
- 登录成功后进入后台首页,可看到当前商品、排队买家、历史入口
- 不提供注册功能(卖家账号由系统指定)
- 不提供退出登录功能(需求方明确不做)
US-02 发布商品
作为 卖家,我要 发布一件商品(名称、描述、价格、图片),以便 让买家看到并排队购买。
- 名称必填且 ≤100 字,描述选填且 ≤2000 字,价格必填且 > 0(保留两位小数)
- 图片选填,最多 1 张,JPG / PNG,≤5MB;不传时显示占位图
- 已有商品在售或交易中时禁止发布,提示「已有商品在售或交易中,需先下架」
- 发布成功后商品直接进入「在售」状态(发布与上架是同一动作)
- 发布后不可修改商品信息
US-03 查看意向购买人(队首自动进入交易)
作为 卖家,我要 看到排队买家的姓名、电话、提交时间与位次,以便 了解排队情况(与队首交易由系统自动完成)。
- 队列按提交时间正序展示并显示位次
- 卖家不能挑人,只能与队首交易
- 队首自动进入交易并自动冻结(系统自动,卖家后台无"进入交易"操作,2026-10-07 拍板,需求问题库 #8);冻结后不再接收新意向
- 后台不显示、不记录任何口令码
US-04 手动冻结与解冻商品
作为 卖家,我要 临时冻结或解冻商品,以便 自己有事时暂停接单。
- 仅「在售」商品可手动冻结,冻结后买家端提示「商品交易中」
- 仅自己手动冻结的商品可手动解冻
- 交易中的商品不能手动解冻,必须先标记交易结果
- 手动冻结与交易冻结在买家端不区分文案
- 无超时自动解冻机制
US-05 标记交易结果与处置失败买家
作为 卖家,我要 标记交易成功或失败,以便 推进队列并留下记录。
- 标记成功:商品下架进入历史,队列剩余意向转为失败,全部口令码失效,不可撤销
- 标记失败:队列有下一位时自动递补进入交易;队列空时商品自动恢复在售
- 失败的买家由卖家在后台逐单处置为「作废」或「重新排队」(重排到队尾、原口令码继续有效)
- 重新排队无次数上限,且由卖家发起、非系统自动入队(2026-10-07 拍板,需求问题库 #6、#9)
US-06 查看历史商品与意向流水
作为 卖家,我要 查看已成交商品及其全部意向流水,以便 追溯过往交易。
- 历史 = 已下架商品,按成交时间倒序,每页 10 条
- 每条商品可展开意向购买人列表(姓名、电话、提交时间、终态)
- 历史只读,不支持修改与删除
- 历史中不出现口令码
US-07 修改密码
作为 卖家,我要 修改登录密码,以便 保证账号安全。
- 必须验证原密码,原密码错误时拒绝
- 新密码长度 ≥ 8 位
- 修改成功后旧密码立即失效
US-08 浏览在售商品
作为 买家,我要 看到当前在售商品的名称、描述、图片和价格,以便 决定要不要买。
- 展示商品四项信息;无图时显示占位图;描述为空时留空显示、不加"卖家没有填写描述"等默认文案(需求问题库 #7)
- 商品处于交易中时明确提示「商品交易中」,不可提交意向
- 无商品在售时显示「暂无商品在售」
US-09 提交购买意向并取得口令码
作为 买家,我要 填写姓名和电话提交购买意向,以便 加入排队。
- 姓名与电话均必填(完全不校验格式,需求方 2026-10-07 明确坚持,需求问题库 #5)
- 提交成功后展示口令码,仅显示这一次,并提供复制按钮与"请截图保存"提示
- 商品交易中或无商品时不允许提交
- 同一人重复提交不去重,每次都是独立意向、独立口令码
US-10 凭口令码查询位次与状态
作为 买家,我要 凭口令码查询自己的排队位次,以便 知道还要等多久。
- 显示位次、提交时间、是否进入交易
- 口令码无效或已失效时提示「口令码无效或已失效」
- 只显示自己的信息,不显示其他买家的姓名电话
US-11 凭口令码修改信息或撤销意向
作为 买家,我要 修改自己的姓名电话或撤销意向,以便 更正信息或放弃购买。
- 修改信息不改变排队位次;修改后卖家后台与历史记录均显示最新姓名电话,不保留旧记录(需求问题库 #4)
- 撤销后意向进入「已撤销」终态,口令码失效,但历史记录中留痕
- 交易中的买家仍可撤销(口令码在交易结束前始终有效):队首撤销 → 交易终止、商品恢复在售、后续队列递补;撤销按钮无需隐藏(2026-10-07 拍板,需求问题库 #3)
US-12 商品图片上传与无图占位
作为 卖家 / 买家,我要 商品支持一张图片且无图时有占位,以便 页面不至于空缺。
- 仅 JPG / PNG,≤5MB,最多 1 张
- 不传图片时前端显示内置占位图
- 图片存于服务端并以 URL 方式访问
三、估算说明(写入报告 3.2)
- 基线需求共拆 12 个用户故事(卖家端 7、买家端 4、公共 1)
- 实现层:12 个故事全部在 Java 正式实现中完成(22/22 故事点),17 个 REST 接口可用
- 测试层:18 组 JUnit 用例全绿(
mvn test实测) - 综合进度由组长依据实际代码与本地实测结果核算、经 10-07 迭代会复核,详见第1次阶段性评审报告 3.2(当前 80%)
- 剩余风险集中在:Selenium 端到端自动化与 JMeter 性能测试补齐(迭代 2);Docker 镜像已由云端 Actions 构建产出并完成容器内冒烟(44/44)