第3组 · 林炜博 · 第1次评审详情 - sebestp/coursewise GitHub Wiki
- 报告期次:第1次 | 报告日期:2026-10-08 | 项目组号:第3组 | 项目名称:在线购物系统
-
已完成工作:编写需求池 v1:梳理买家侧 / 卖家后台 / 系统规范共 30 个用户故事,逐条编写验收标准、故事点估算与 M/S/C 优先级,明确版本范围与 5 条待澄清项
-
成果物:需求池 v1
-
已完成工作:编写需求规格说明书 v0.1:用户角色、用例清单与详情、业务流程、非功能需求
-
成果物:需求规格说明书
- 项目名称:在线购物系统
- 项目组号:第 3 组
- 版本:v1
- 日期:2026-10-01
- 负责人(产品经理):林炜博
- 团队成员:高佳豪(组长)、范与恒、李帆、叶文锦、林炜博
| 角色 | 说明 | 账号方式 |
|---|---|---|
| 买家 | 免注册访客,浏览商品并提交购买意向 | 无账号,凭口令码认领意向 |
| 卖家 | 唯一商户,管理商品、交易与后台 | 单账号(用户名 + 密码) |
- 单卖家、同一时间只有一件商品在售,售出或下架后可发布下一件
- 买家免注册,仅填姓名 + 联系电话即可表达购买意向
- 提交意向后发放唯一口令码,用于查询位次、修改信息、撤销意向
- 多意向按「先到先得」排队;与队首进入交易时商品自动冻结
- 冻结后不再接收新意向,买家端提示「商品交易中」
- 线下交易,交易结果由卖家在后台标记(成功 / 失败)
- 失败后由卖家选择「作废」或「重新排队」
- 卖家后台:登录、发布商品、查看历史商品、查看意向购买人、冻结/解冻商品、修改密码
- 商品状态机:在售 / 已冻结(交易中)/ 已下架(交易成功)/ 恢复在售(交易失败后)
- 买家账号注册、登录
- 线上支付、配送、库存、评价/评分
- Android / iOS / 微信小程序(仅 Web)
- 商品发布后信息编辑(只能下架重发)
- 超时自动处理、系统主动通知买家
- 卖家退出登录
- 手动下架的前置条件,以及队列中已有意向的处理方式
- 交易失败「重新排队」后原口令码是否失效、买家如何得知
- 「重新排队」的具体位次(队尾 or 保留原位)
- 商品进入交易(冻结)后买家是否仍可撤销意向
- 「曾发生交易失败的商品」在历史记录中的呈现口径
优先级:M = Must(必须有)、S = Should(应有)、C = Could(可有)
US-01 匿名浏览在售商品
- 故事:作为买家,我想要匿名浏览在售商品的名称、描述、图片、价格,以便决定是否购买。
- 验收标准:
- 给定商品处于在售,当我打开商品页,那么能看到名称、描述、图片、价格。
- 给定无商品在售,当我打开首页,那么显示「暂无商品在售」。
- 给定未注册访客,当我浏览商品,那么无需任何账号即可查看。
- 故事点:3 | 优先级:M
US-02 交易中状态提示
- 故事:作为买家,我想要在商品交易中时看到「商品交易中」提示,以便了解商品不可购买。
- 验收标准:
- 给定商品已冻结(交易中),当我打开商品页,那么显示「商品交易中」。
- 给定商品已冻结,当我尝试提交意向,那么系统拒绝并提示不可购买。
- 给定商品已冻结,当我查看商品详情,那么仍可浏览名称、描述、图片、价格。
- 故事点:1 | 优先级:M
US-03 点击「我要购买」
- 故事:作为买家,我想要点击「我要购买」按钮,以便表达购买意向。
- 验收标准:
- 给定商品在售,当我点击「我要购买」,那么进入填写信息页面。
- 给定商品已冻结,当我点击「我要购买」,那么按钮不可用或被拒绝。
- 给定商品在售,当我点击「我要购买」,那么无需登录即可继续操作。
- 故事点:2 | 优先级:M
US-04 填写购买信息
- 故事:作为买家,我想要只填姓名和联系电话即可提交意向,以便降低购买门槛。
- 验收标准:
- 给定提交意向表单,当我填写姓名和联系电话,那么可成功提交。
- 给定表单,当姓名或联系电话为空,那么系统提示必填。
- 给定表单,当我提交时,那么无需填写地址或注册账号。
- 故事点:3 | 优先级:M
US-05 获得唯一口令码
- 故事:作为买家,我想要在提交意向后立即获得唯一口令码,以便认领我的意向。
- 验收标准:
- 给定我成功提交意向,那么页面当场展示一个唯一口令码。
- 给定生成的口令码,那么它在本系统内唯一。
- 给定成功提交页面,那么页面提示我保存口令码。
- 故事点:3 | 优先级:M
US-06 查询排队位次
- 故事:作为买家,我想要凭口令码查询当前排队位次,以便知道还要等多久。
- 验收标准:
- 给定有效口令码,当我输入后查询,那么显示我的当前排队位次。
- 给定口令码已失效,当我查询,那么提示口令码不可用。
- 给定我前方有人撤销或作废,那么我的位次自动前移。
- 故事点:3 | 优先级:M
US-07 查询是否进入交易
- 故事:作为买家,我想要凭口令码查询是否已进入交易,以便准备线下交易。
- 验收标准:
- 给定有效口令码,当我查询,那么显示「排队中」或「交易中」状态。
- 给定我已进入交易,那么商品状态为「已冻结」。
- 给定交易已结束,那么口令码失效且无法再查询。
- 故事点:2 | 优先级:M
US-08 修改意向信息
- 故事:作为买家,我想要凭口令码修改姓名或电话,以便更正联系方式。
- 验收标准:
- 给定有效口令码,当我修改姓名或电话,那么信息更新成功。
- 给定我修改信息,那么排队位次不变、不重新排队。
- 给定口令码已失效,那么不允许修改。
- 故事点:2 | 优先级:S
US-09 撤销意向
- 故事:作为买家,我想要凭口令码撤销意向,以便退出排队。
- 验收标准:
- 给定有效口令码,当我撤销,那么我的意向从队列移除。
- 给定我撤销后,那么排在我后面的人位次依次前移。
- 给定口令码已失效或交易已结束,那么不允许撤销。
- 故事点:2 | 优先级:M
US-10 口令码失效规则
- 故事:作为买家,我想要明确口令码的失效时机,以便理解查询限制。
- 验收标准:
- 给定交易结束(成功或失败),那么口令码失效。
- 给定商品下架,那么口令码失效。
- 给定我自行撤销意向,那么对应口令码失效。
- 故事点:2 | 优先级:M
US-11 卖家登录
- 故事:作为卖家,我想要用用户名 + 密码登录后台,以便管理商品与交易。
- 验收标准:
- 给定正确用户名和密码,当我登录,那么进入卖家后台。
- 给定错误密码,那么登录失败并提示。
- 给定未登录,那么无法访问后台功能。
- 故事点:3 | 优先级:M
US-12 修改密码
- 故事:作为卖家,我想要修改登录密码,以便保证账号安全。
- 验收标准:
- 给定已登录,当我提交新密码,那么密码修改成功。
- 给定新密码长度不足,那么系统提示并拒绝。
- 给定修改成功,那么下次用新密码登录。
- 故事点:2 | 优先级:M
US-13 发布商品
- 故事:作为卖家,我想要发布商品(名称、描述、图片、价格),以便上架销售。
- 验收标准:
- 给定名称和价格,当我发布,那么商品进入「在售」。
- 给定名称为空或价格为空,那么系统提示必填。
- 给定描述为空,那么允许发布(描述选填)。
- 故事点:5 | 优先级:M
US-14 单件在售约束
- 故事:作为卖家,我想要同一时间只挂一件在售商品,以便遵守单卖家规则。
- 验收标准:
- 给定已有一件在售或冻结商品,那么不能发布新商品。
- 给定当前商品已售出或下架,那么可发布下一件。
- 给定已有一件在售,那么系统提示需先处理当前商品。
- 故事点:2 | 优先级:M
US-15 查看商品状态
- 故事:作为卖家,我想要查看当前商品的在售/冻结状态,以便掌握交易进度。
- 验收标准:
- 给定已登录,当我进入后台,那么看到当前商品状态。
- 给定商品在售,那么状态显示为「在售」。
- 给定商品冻结,那么状态显示为「已冻结」。
- 故事点:2 | 优先级:M
US-16 查看意向购买人
- 故事:作为卖家,我想要查看意向购买人列表(姓名、电话、提交时间),以便线下联系买家。
- 验收标准:
- 给定商品有购买意向,那么后台显示意向人列表。
- 给定列表,那么每行含姓名、联系电话、提交时间。
- 给定列表按提交时间排序,那么最早提交者排最前。
- 故事点:3 | 优先级:M
US-17 进入交易自动冻结
- 故事:作为卖家,我想要与队首买家进入交易时商品自动冻结,以便锁定交易对象。
- 验收标准:
- 给定队首买家与卖家进入交易,那么商品自动转为「已冻结」。
- 给定商品已冻结,那么不再接收新的购买意向。
- 给定进入交易,那么无需卖家手动点击冻结。
- 故事点:5 | 优先级:M
US-18 手动冻结/解冻
- 故事:作为卖家,我想要手动冻结或解冻商品,以便临时停售或恢复上线。
- 验收标准:
- 给定商品在售,当我手动冻结,那么商品转为「已冻结」。
- 给定商品已冻结,当我手动解冻,那么商品恢复「在售」。
- 给定手动冻结期间,那么买家不可提交新意向。
- 故事点:3 | 优先级:S
US-19 标记交易成功
- 故事:作为卖家,我想要标记交易成功,以便商品下架进入历史。
- 验收标准:
- 给定线下交易完成,当我标记「交易成功」,那么商品转为「已下架」。
- 给定标记成功,那么商品进入历史记录。
- 给定标记成功,那么关联口令码失效。
- 故事点:3 | 优先级:M
US-20 标记交易失败并处置
- 故事:作为卖家,我想要标记交易失败并选择「作废/重新排队」,以便处理失败意向。
- 验收标准:
- 给定线下未成交,当我标记「交易失败」,那么商品恢复「在售」。
- 给定交易失败,那么我可选择该意向「作废」或「重新排队」。
- 给定队列还有他人,那么下一位自动递补进入交易。
- 故事点:5 | 优先级:M
US-21 查看历史商品
- 故事:作为卖家,我想要查看历史商品(含失败记录与各意向人结果),以便追溯交易。
- 验收标准:
- 给定商品已下架,那么它出现在历史商品列表。
- 给定历史商品,那么可点开查看其意向购买人列表。
- 给定历史列表,那么按时间倒序展示、可翻页。
- 故事点:5 | 优先级:M
US-22 售完/下架后发布新商品
- 故事:作为卖家,我想要在售完或下架后发布新商品,以便持续销售。
- 验收标准:
- 给定当前商品已下架,那么我可发布新商品。
- 给定新商品发布成功,那么它成为唯一的在售商品。
- 给定旧商品,那么它保留在历史记录中可查。
- 故事点:2 | 优先级:M
US-23 商品状态机
- 故事:作为系统,我想要实现商品状态机(在售/已冻结/已下架/恢复在售),以便一致管理状态。
- 验收标准:
- 给定状态为在售,那么可流转到已冻结或已下架。
- 给定状态为已冻结,那么可流转到已下架或恢复在售。
- 给定任意非法流转,那么系统拒绝并保持原状态。
- 故事点:5 | 优先级:M
US-24 口令码唯一与失效
- 故事:作为系统,我想要口令码全局唯一且按规则失效,以便凭证安全。
- 验收标准:
- 给定生成口令码,那么与历史所有口令码不重复。
- 给定交易结束或商品下架,那么口令码自动失效。
- 给定已失效口令码,那么不能用于任何查询或修改。
- 故事点:3 | 优先级:M
US-25 数据持久化
- 故事:作为系统,我想要持久化商品与意向数据,以便重启后不丢失。
- 验收标准:
- 给定已保存数据,那么系统重启后数据仍存在。
- 给定商品、意向、口令码数据,那么均可恢复。
- 给定正常操作,那么数据完整无丢失。
- 故事点:3 | 优先级:M
US-26 价格约束
- 故事:作为卖家,我想要价格保留两位小数且大于 0,以便金额准确。
- 验收标准:
- 给定价格大于 0,那么发布成功。
- 给定价格为 0 或负数,那么系统拒绝。
- 给定价格小数超过两位,那么按两位小数处理或提示。
- 故事点:2 | 优先级:M
US-27 图片约束
- 故事:作为卖家,我想要图片最多 1 张主图且合规,以便规范商品展示。
- 验收标准:
- 给定图片为 JPG 或 PNG 且不超过 5MB,那么上传成功。
- 给定图片超过 5MB 或格式不支持,那么系统提示。
- 给定不传图片,那么显示占位图。
- 故事点:2 | 优先级:S
US-28 商品发布后不可改
- 故事:作为卖家,我想要商品发布后信息不可改(只能下架重发),以便流程简单。
- 验收标准:
- 给定商品已发布,那么后台无编辑入口。
- 给定需要变更信息,那么只能下架后重新发布。
- 给定商品在售或冻结,那么名称/描述/图片/价格不可修改。
- 故事点:2 | 优先级:M
US-29 冻结后不接新意向
- 故事:作为系统,我想要商品冻结后不再接收新的购买意向,以便保证「冻结」语义。
- 验收标准:
- 给定商品已冻结,那么买家无法提交新意向。
- 给定商品在售,那么买家可正常提交意向。
- 给定冻结后提交,那么系统提示「商品交易中」。
- 故事点:3 | 优先级:M
US-30 排队先到先得
- 故事:作为系统,我想要意向按提交时间「先到先得」排序,以便公平交易。
- 验收标准:
- 给定多个意向,那么按提交时间正序排列。
- 给定最早提交者,那么其优先进交易。
- 给定前面意向失败,那么按顺序递补下一位。
- 故事点:3 | 优先级:M
| 角色分组 | 故事数 | 故事点合计 |
|---|---|---|
| 买家侧 | 10 | 23 |
| 卖家后台 | 12 | 40 |
| 系统/规范 | 8 | 23 |
| 合计 | 30 | 86 |
- 第一批交付(MVP 主流程):优先做标记 M 的故事,聚焦「浏览商品 → 提交意向 → 排队 → 冻结 → 线下成交 → 标结果」这条闭环。
- 标记 S 的条目(US-08 改信息、US-18 手动冻结、US-27 图片约束)可放第二批迭代。
| 版本 | 日期 | 说明 |
|---|---|---|
| v1 | 2026-10-01 | 初始版本,含 30 个用户故事 |
- 项目名称:在线购物系统
- 项目组号:第 3 组
- 版本:v1(迭代 0)
- 日期:2026-10-01
- 团队成员:高佳豪(组长)、范与恒、李帆、叶文锦、林炜博(产品经理)
本说明书作为《软件工程实践(Ⅰ)》"在线购物系统"第一阶段的需求基线,供团队开发、阶段性评审与系统验收对照使用。
单卖家在线购物系统(仅 Web 端),覆盖「发布商品 → 买家表达意向 → 排队 → 冻结 → 线下交易 → 标记结果」的完整业务闭环。
| 角色 | 说明 | 账号方式 | 关键能力 |
|---|---|---|---|
| 买家 | 免注册访客 | 无账号,凭口令码认领意向 | 浏览商品、提交意向、查位次、改信息、撤销意向 |
| 卖家 | 唯一商户 | 单账号(用户名 + 密码) | 发布商品、查看历史商品、查看意向人、冻结/解冻、标记交易、修改密码 |
| 用例编号 | 用例名称 | 角色 |
|---|---|---|
| UC-01 | 浏览在售商品 | 买家 |
| UC-02 | 提交购买意向 | 买家 |
| UC-03 | 查询意向状态/位次 | 买家 |
| UC-04 | 修改意向信息 | 买家 |
| UC-05 | 撤销意向 | 买家 |
| UC-06 | 登录后台 | 卖家 |
| UC-07 | 发布商品 | 卖家 |
| UC-08 | 查看意向购买人 | 卖家 |
| UC-09 | 冻结/解冻商品 | 卖家 |
| UC-10 | 标记交易结果 | 卖家 |
| UC-11 | 查看历史商品 | 卖家 |
| UC-12 | 修改密码 | 卖家 |
| 用例编号 | 用例名称 | 角色 | 前置条件 | 基本流程 | 后置条件 |
|---|---|---|---|---|---|
| UC-01 | 浏览在售商品 | 买家 | 商品处于在售 | 打开商品页,查看名称/描述/图片/价格 | 无 |
| UC-02 | 提交购买意向 | 买家 | 商品在售 | 点击「我要购买」→ 填姓名+电话 → 提交 | 生成唯一口令码,进入排队 |
| UC-03 | 查询意向状态/位次 | 买家 | 持有有效口令码 | 输入口令码 → 查看位次/是否交易中 | 无 |
| UC-05 | 撤销意向 | 买家 | 持有有效口令码 | 输入口令码 → 点撤销 | 意向出队,后位前移 |
| UC-07 | 发布商品 | 卖家 | 已登录且无在售商品 | 填名称/描述/图片/价格 → 发布 | 商品进入「在售」 |
| UC-09 | 冻结/解冻商品 | 卖家 | 已登录 | 手动冻结或解冻 | 商品状态在「在售/已冻结」间切换 |
| UC-10 | 标记交易结果 | 卖家 | 商品处于交易中 | 标记成功或失败(失败选作废/重排) | 成功→下架;失败→恢复在售 |
- 在售 → 已冻结(进入交易 / 手动冻结)
- 已冻结 → 已下架(交易成功)
- 已冻结 → 在售(交易失败 / 手动解冻)
- 已下架 → 进入历史商品(只读)
- 排队中 → 交易中 → 交易成功 / 交易失败(作废或重新排队)
- 排队中 → 已撤销(买家主动撤销)
- 卖家登录后台,发布商品(名称、价格必填;描述、图片选填)。
- 商品进入「在售」,买家可匿名浏览。
- 买家点击「我要购买」,填写姓名 + 联系电话,提交后获得唯一口令码并进入排队。
- 多个意向按「先到先得」按提交时间排队。
- 卖家与队首买家进入交易时,商品自动冻结,停止接收新意向,页面提示「商品交易中」。
- 线下「一手交钱一手交货」完成后,卖家在后台标记交易成功或失败。
- 成功 → 商品下架进历史、口令码失效;失败 → 商品恢复在售,卖家选该意向「作废」或「重新排队」,队列下一位自动递补。
- 商品下架后可发布下一件新商品。
- 字段:商品名称必填、描述选填;价格必填、人民币元、两位小数、大于 0;图片最多 1 张主图(JPG/PNG,不超过 5MB);买家姓名、联系电话必填。
- 口令码:全局唯一,提交意向时生成并当场展示,交易结束或商品下架后失效。
- 排队:按提交时间「先到先得」;冻结后不再接收新意向。
- 状态:商品状态机四态;意向状态机五态。
- 商品发布后信息不可改,只能下架后重新发布。
- 单卖家、单件在售;本版本无超时机制、无系统通知。
- 数据持久化:商品、意向、口令码数据重启不丢失。
- 访问方式:仅 Web 端,无 App / 小程序。
- 安全:卖家密码登录、可修改密码;口令码作为买家唯一凭证。
- 用户角色及对应用例:见第 2、3 节。
- 业务流程图 / 用例详情表:见第 3.2、4 节。
- 成果物:本《需求规格说明书》。
| 版本 | 日期 | 说明 |
|---|---|---|
| v1 | 2026-10-01 | 初始版本 |
(评审后填写)