第1次阶段性评审报告 - casf73/Software-Engineering-Practice GitHub Wiki
基本信息
- 报告期次:第 1 次
- 报告日期:2026-10-08
- 报告版本:V1.1
- 修订日期:2026-10-14
- 项目组号:第 8 组
- 项目名称:在线购物系统
- 项目版本:MVP v1.0,构建包版本 1.0.0
- 组长:刘云炎
项目总体计划
本项目采用迭代开发方式,计划进行 7 次迭代。第 1 次迭代重点完成买家和卖家的基础交易流程;后续根据评审结果完善功能。第 3 次至第 7 次迭代的时间与目标暂定。
| 迭代 | 计划时间 | 主要目标 |
|---|---|---|
| 第 1 迭代 | 2026-09-24 至 2026-10-08 | 明确需求和首轮验收范围,形成 Vue 3 + Element Plus 前端、Spring Boot 后端、基础业务源码及测试材料。 |
| 第 2 迭代 | 2026-10-09 至 暂定 | 根据首轮评审修正问题,完成买家等待期间修改联系信息、卖家手动冻结和解冻商品。 |
| 第 3 迭代 | 暂定 | 暂定 |
| 第 4 迭代 | 暂定 | 暂定 |
| 第 5 迭代 | 暂定 | 暂定 |
| 第 6 迭代 | 暂定 | 暂定 |
| 第 7 迭代 | 暂定 | 暂定 |
当前迭代期定义
- 开始日期:2026-09-24
- 结束日期:2026-10-08
- 迭代主题:完成单卖家排队购物系统的基础功能和首轮评审材料。
当前迭代目标定义
- 整理项目总体需求,明确首轮验收的基础需求。
- 建立 Vue 3 + Element Plus 前端项目和 Spring Boot 后端项目。
- 实现买家免注册查看商品、填写姓名和电话提交购买意向、获得口令码,并凭口令码查询状态和排位。
- 实现卖家登录、发布或编辑当前商品、查看购买队列,以及按队首顺序开启交易。
- 实现基础意向处理:排队中的买家撤销意向;卖家作废意向或将其移至队尾;卖家登记交易成功或失败。
- 实现商品成交或主动下架后的基础状态处理及相关口令码失效处理。
- 编写并执行首轮自动化测试,整理人工检查清单、项目说明和评审报告,准备首轮演示与验收。
当前迭代的任务与成果物
任务计划
为完成本次迭代目标,项目组将工作划分为以下任务。每项任务明确负责人和预计完成的成果物。
| 任务编号 | 任务计划 | 负责人 | 预计成果物 |
|---|---|---|---|
| T1 | 梳理项目总体需求,确定首轮验收的基础功能范围,编写需求文档 | 麻津午 刘云炎 | 在线购物系统需求规格说明书、在线购物系统首轮验收基础需求文档 |
| T2 | 开发买家商品浏览、购买意向提交和口令码查询页面 | 林天宏 | 买家商品页面源码 |
| T3 | 开发卖家登录、商品管理和购买意向队列页面,并整理公共组件 | 刘云炎 | 卖家登录页、卖家后台页、公共组件和插槽弹窗组件源码 |
| T4 | 建立商品与购买意向的数据模型,开发买家端接口 | 沈姚杰 | 数据模型、数据访问层及买家接口源码 |
| T5 | 开发卖家端接口及排队、交易处理业务逻辑 | 章曦闵 | 卖家接口及核心业务服务源码 |
| T6 | 编写首轮测试用例、自动化测试与运行脚本,检查基础业务流程 | 杨熠 | 测试说明、自动化测试源码、测试运行脚本、测试实例及人工检查记录 |
成果物
以下成果物为项目中的文档、源码、脚本、测试数据、演示文稿、视频、图片、录音或 Docker 镜像。项目源码当前位于仓库的 project/mvp-v1.0 目录。
需求成果物
- 在线购物系统需求规格说明书 Word:梳理项目总体需求,补充术语表以及 7 张业务流程图和状态图。完成人:麻津午、刘云炎。
- 在线购物系统需求规格说明书 Markdown:用于在项目 Wiki 展示完整需求。完成人:麻津午、刘云炎。
- 在线购物系统首轮验收基础需求:明确首次验收的功能范围与基础业务规则。完成人:麻津午、刘云炎。
- 小组需求规格讨论录音:记录小组对项目需求的讨论。
需求规格演示图片
1.1 用户与权限

1.2 核心业务流程

2.1 商品信息

4.1 商品状态

4.3 卖家操作

5.2 后台功能

前端页面成果物
前端公共组件成果物
后端成果物
- 买家接口源码
- 卖家接口源码
- 商品与购买意向数据模型目录
- 核心业务服务源码
- 后端接口说明书:说明当前已实现接口的路径、请求、响应、状态和错误处理。
测试成果物
- 首轮验收测试用例 Word:包含 17 个测试用例、51 个具体测试实例及原有详细测试步骤。
- 首轮验收测试用例 Markdown:用于在项目 Wiki 展示完整测试用例。
- 测试说明:说明测试目的、运行方法和执行结果。
- 测试实例文件目录:按照“用例编号/第 n 个测试实例”保存 51 个实例文件及图片上传样本。
- 后端集成测试源码:读取对应的测试实例文件执行参数化测试。
- Windows 测试运行脚本
- 测试实例生成脚本
后端自动化测试已执行 30 个功能实例及 1 个实例文件完整性检查,共 31 项通过、0 项失败。另据用户确认,21 个页面与持久化人工测试实例均已测试通过。
测试用例一览
| 编号 | 用例内容 |
|---|---|
| T01 | 卖家身份与权限:检查未登录访问、错误密码、正确登录及退出后的权限。 |
| T02 | 商品发布与单件限制:检查必填项、正常发布、重复发布、编辑及公开查询。 |
| T03 | 购买意向、口令码与 FIFO:检查口令码唯一性、撤销、作废及移到队尾后的排位变化。 |
| T04 | 交易冻结与撤销边界:检查队首进入交易、新意向被拒绝,以及等待买家和交易中买家的撤销权限。 |
| T05 | 交易失败并作废:检查商品恢复在售、当前口令码失效及队列继续保留。 |
| T06 | 交易失败并重新排队:检查原意向移到队尾、原口令码继续有效。 |
| T07 | 交易成功后的收尾:检查商品下架、相关意向结果、口令码失效及下一件商品发布。 |
| T08 | 卖家主动下架:检查商品停止展示、相关口令码失效及下一件商品发布。 |
| T09 | 图片上传与单图上限:检查 JPG、PNG、错误格式、超大文件及图片数量限制。 |
| T10 | 旧版多图商品兼容:检查公开接口只返回第一张图片。 |
| U01 | 买家免登录浏览商品,并检查无图片商品和未发布商品时的页面显示。 |
| U02 | 检查买家姓名、电话必填提示,以及提交意向后保存口令码和查询排位。 |
| U03 | 检查两位买家的提交顺序、卖家后台队列展示和队首进入交易。 |
| U04 | 检查交易期间等待买家可以撤销、交易中买家不能撤销及排位更新。 |
| U05 | 重启后端后,检查当前商品、有效意向、口令码及队列顺序是否保留。 |
| U06 | 检查商品只能选择一张图片,以及错误格式、超大图片和无图片发布的页面表现。 |
| U07 | 在桌面和窄屏浏览器检查买家页、卖家登录页及后台侧边目录。 |
测试实例一览
下表中的文件路径均相对于 tests/验收测试数据。每个用例有 3 个实例,共 51 个;T 类 30 个实例由自动化测试执行,U 类 21 个实例由用户确认人工测试通过。
| 实例编号 | 输入或操作 | 预期结果 | 实际结果 | 实例文件 |
|---|---|---|---|---|
| T01-01 | 错误密码与未登录拦截 | 未登录和错误密码均为 401;正确登录后可访问,退出后失效 | 通过 | T01/第1个测试实例/instance.json |
| T01-02 | 另一组错误密码 | 错误密码不能创建会话;正确登录及退出流程正常 | 通过 | T01/第2个测试实例/instance.json |
| T01-03 | 大小写错误密码 | 密码区分大小写,错误登录 401,退出后后台仍为 401 | 通过 | T01/第3个测试实例/instance.json |
| T02-01 | 商品甲发布与编辑;价格 88 | 必填校验 400;单件限制 409;公开查询返回更新商品甲 | 通过 | T02/第1个测试实例/instance.json |
| T02-02 | 商品乙发布与编辑;价格 99 | 发布状态 ON_SALE;编辑和公开查询一致 | 通过 | T02/第2个测试实例/instance.json |
| T02-03 | 商品丙发布与编辑;价格 120 | 第二件商品被拒绝;首件编辑成功 | 通过 | T02/第3个测试实例/instance.json |
| T03-01 | 138 号码三人队列;电话前缀 1380000000 | 唯一口令码;撤销、重排、作废后排位和有效性正确 | 通过 | T03/第1个测试实例/instance.json |
| T03-02 | 139 号码三人队列;电话前缀 1390000000 | 按提交先后排队;撤销和作废使口令码失效 | 通过 | T03/第2个测试实例/instance.json |
| T03-03 | 137 号码三人队列;电话前缀 1370000000 | 重新排队移至队尾并保留原口令码 | 通过 | T03/第3个测试实例/instance.json |
| T04-01 | 138 号码冻结边界;电话前缀 1381000000 | 只选队首;交易者不能撤销,等待者可以撤销 | 通过 | T04/第1个测试实例/instance.json |
| T04-02 | 139 号码冻结边界;电话前缀 1391000000 | 交易中拒绝新意向和直接下架 | 通过 | T04/第2个测试实例/instance.json |
| T04-03 | 137 号码冻结边界;电话前缀 1371000000 | 等待者撤销后后续排位前移 | 通过 | T04/第3个测试实例/instance.json |
| T05-01 | 138 号码失败作废;电话前缀 1382000000 | 商品恢复在售;失败买家原码失效;下一位仍排队 | 通过 | T05/第1个测试实例/instance.json |
| T05-02 | 139 号码失败作废;电话前缀 1392000000 | 失败后不自动开始下一笔交易 | 通过 | T05/第2个测试实例/instance.json |
| T05-03 | 137 号码失败作废;电话前缀 1372000000 | 卖家记录为 TRADE_FAILED,等待计数保持 | 通过 | T05/第3个测试实例/instance.json |
| T06-01 | 138 号码失败重排;电话前缀 1383000000 | 原码继续有效;原买家回到队尾 | 通过 | T06/第1个测试实例/instance.json |
| T06-02 | 139 号码失败重排;电话前缀 1393000000 | 另一位买家升为队首;商品恢复在售 | 通过 | T06/第2个测试实例/instance.json |
| T06-03 | 137 号码失败重排;电话前缀 1373000000 | 重排后没有进行中交易 | 通过 | T06/第3个测试实例/instance.json |
| T07-01 | 138 号码成交收尾;电话前缀 1384000000 | 成交商品下架;其余意向失败;所有口令码失效 | 通过 | T07/第1个测试实例/instance.json |
| T07-02 | 139 号码成交收尾;电话前缀 1394000000 | 成交后可发布下一件商品 | 通过 | T07/第2个测试实例/instance.json |
| T07-03 | 137 号码成交收尾;电话前缀 1374000000 | 卖家记录成功与失败状态正确 | 通过 | T07/第3个测试实例/instance.json |
| T08-01 | 138 号码主动下架;电话前缀 1385000000 | 商品不可浏览;等待意向口令码失效 | 通过 | T08/第1个测试实例/instance.json |
| T08-02 | 139 号码主动下架;电话前缀 1395000000 | 下架后可发布下一件商品 | 通过 | T08/第2个测试实例/instance.json |
| T08-03 | 137 号码主动下架;电话前缀 1375000000 | 相关意向记录仍存在于后端数据库 | 通过 | T08/第3个测试实例/instance.json |
| T09-01 | 红色样图上传 | JPG/PNG 可上传,错误格式与超 5 MB 被拒绝,商品只允许一张 | 通过 | T09/第1个测试实例/instance.json |
| T09-02 | 绿色样图上传 | 上传后返回 /uploads/ 地址,双图关联返回 400 | 通过 | T09/第2个测试实例/instance.json |
| T09-03 | 蓝色样图上传 | 文件类型、大小和单图限制均生效 | 通过 | T09/第3个测试实例/instance.json |
| T10-01 | 旧数据两张图片;首图 /uploads/old-first-a.jpg | 公开接口仅返回第一张图片 | 通过 | T10/第1个测试实例/instance.json |
| T10-02 | 旧数据另一组图片;首图 /uploads/old-first-b.png | 首轮接口不展示第二张图片 | 通过 | T10/第2个测试实例/instance.json |
| T10-03 | 旧数据混合格式;首图 /uploads/old-first-c.jpg | 数据库旧记录保留,读取时限制为首图 | 通过 | T10/第3个测试实例/instance.json |
| U01-01 | 没有商品的首页;清空当前商品后打开买家首页 | 显示空状态,不要求登录 | 通过 | U01/第1个测试实例/instance.json |
| U01-02 | 无图商品页面;卖家发布不带图片的商品;刷新买家首页 | 显示商品信息和无图占位 | 通过 | U01/第2个测试实例/instance.json |
| U01-03 | 有图商品页面;卖家发布一张图片的商品;刷新买家首页 | 只显示这一张图片 | 通过 | U01/第3个测试实例/instance.json |
| U02-01 | 缺少姓名;姓名留空、电话填写后点击提交 | 页面阻止提交并提示姓名必填 | 通过 | U02/第1个测试实例/instance.json |
| U02-02 | 缺少电话;填写姓名、电话留空后点击提交 | 页面阻止提交并提示电话必填 | 通过 | U02/第2个测试实例/instance.json |
| U02-03 | 完整提交与查询;填写姓名电话并提交;保存口令码后凭码查询 | 口令码仅在成功提示中显示一次,可查询排位 | 通过 | U02/第3个测试实例/instance.json |
| U03-01 | 两人顺序;两位买家依次提交;卖家查看侧边目录中的队列 | 后台依提交顺序显示两人 | 通过 | U03/第1个测试实例/instance.json |
| U03-02 | 三人队首交易;三位买家依次提交;卖家点击开始交易 | 只有第一位买家进入交易 | 通过 | U03/第2个测试实例/instance.json |
| U03-03 | 队首退出后的顺序;第二位买家撤销;卖家查看剩余队列 | 后续买家排位前移 | 通过 | U03/第3个测试实例/instance.json |
| U04-01 | 等待者撤销;开始队首交易;等待买家凭码撤销 | 等待买家退出队列且原口令码失效 | 通过 | U04/第1个测试实例/instance.json |
| U04-02 | 交易者撤销;开始队首交易;交易中买家尝试撤销 | 撤销被拒绝,交易仍保持 | 通过 | U04/第2个测试实例/instance.json |
| U04-03 | 新买家提交;开始队首交易;新买家尝试提交意向 | 页面提示商品交易中,不接受新意向 | 通过 | U04/第3个测试实例/instance.json |
| U05-01 | 商品重启保留;发布商品;停止并重启后端;重新打开买家页 | 当前商品仍存在 | 通过 | U05/第1个测试实例/instance.json |
| U05-02 | 队列重启保留;两位买家提交;停止并重启后端;查询两人排位 | 原意向及队列顺序保留 | 通过 | U05/第2个测试实例/instance.json |
| U05-03 | 口令码重启保留;记录有效口令码;停止并重启后端;凭原码查询 | 原码仍可查到同一意向 | 通过 | U05/第3个测试实例/instance.json |
| U06-01 | 无图发布;卖家不选择图片并发布商品 | 商品可发布,买家页显示无图占位 | 通过 | U06/第1个测试实例/instance.json |
| U06-02 | 选择第二张图片;先选择一张图片,再尝试增加第二张 | 页面只允许保留一张图片 | 通过 | U06/第2个测试实例/instance.json |
| U06-03 | 非法图片与超限;选择 TXT 文件,再选择大于 5 MB 的图片 | 页面分别提示格式和大小错误 | 通过 | U06/第3个测试实例/instance.json |
| U07-01 | 桌面买家页;设置浏览器宽度约 1440 像素;查看买家商品页 | 内容可读、按钮可操作 | 通过 | U07/第1个测试实例/instance.json |
| U07-02 | 窄屏买家页;设置浏览器宽度约 375 像素;查看买家商品页 | 无横向遮挡,表单可操作 | 通过 | U07/第2个测试实例/instance.json |
| U07-03 | 窄屏卖家页;设置浏览器宽度约 375 像素;查看卖家登录页和侧边目录 | 登录和菜单可操作,内容不重叠 | 通过 | U07/第3个测试实例/instance.json |
项目说明成果物
构建与部署成果物
以下为项目版本 1.0.0 的构建与部署材料。基础构建材料于 2026-10-14 补充,Docker 镜像构建、容器部署及镜像发布于 2026-10-19 完成。
- 构建脚本:构建前端并打包 Spring Boot 后端。
- 构建过程手册:记录工具版本、构建条件与执行步骤。
- 安装与部署手册:说明本机安装、Docker 部署、启动、停止及配置方式。
- 构建与部署结果:记录构建产物、本机部署及 Docker 部署结果。
- 本机安装脚本
- 版本 1.0.0 发布包
- Docker 容器编排配置:配置容器启动、端口映射及数据持久化,已用于完成实际部署。
- Docker 一键部署脚本:构建镜像、启动容器、检查页面访问并导出镜像 TAR,支持通过参数指定网络代理。
- Docker 镜像下载:镜像名称为
online-shopping-system:1.0.0,运行平台为Linux/amd64;已完成构建和部署,并通过 GitHub Release 发布。 - Docker 部署结果:记录镜像信息、容器状态、访问地址及部署验证结果;首页、卖家登录页和会话接口均返回 HTTP 200。
演示成果物
- 第 1 次阶段性评审 PPT:用于介绍需求规格及各成员完成的工作。
- 第一次验收演示视频(压缩版):展示系统首轮验收的操作流程。
流程与状态图成果物
业务流程图
商品与交易主流程

买家浏览、排队与口令码操作

卖家后台与历史记录

商品发布与媒体处理

状态图
商品状态

购买意向状态

口令码有效性

子系统划分与工作陈述成果物
- 在线购物系统子系统划分说明:说明系统的子系统划分及职责。
- 第一次工作内容陈述文档目录:集中查看本次迭代各成员的工作内容陈述。
任务完成情况
下表对应上述任务计划,列出本次迭代已完成的工作及完成人。测试与构建成果按 2026-10-14 修订时的记录补充。
| 任务编号 | 任务完成情况 | 完成人 |
|---|---|---|
| T1 | 已形成总体需求规格说明书和首轮验收基础需求文档;需求规格说明书已补充术语表、流程图和状态图,并提供 Wiki Markdown 版本。 | 麻津午、刘云炎 |
| T2 | 已完成买家商品浏览、购买意向提交和口令码查询页面源码。 | 林天宏 |
| T3 | 已完成卖家登录页、后台页,以及公共组件和插槽弹窗组件源码。 | 刘云炎 |
| T4 | 已完成商品与购买意向的数据模型、数据访问层和买家接口源码。 | 沈姚杰 |
| T5 | 已完成卖家接口及排队、交易处理的核心业务服务源码,并形成当前版本的后端接口说明。 | 章曦闵 |
| T6 | 已形成 17 个测试用例和 51 个具体测试实例。30 个后端自动化功能实例及 1 个文件完整性检查通过;另据用户确认,21 个页面与持久化人工实例全部通过。 | 杨熠 |
工作任务表
下表根据现有成果物列出工作。教师评审意见保留原报告中的填写内容。
| 序号 | 已完成工作任务 | 完成人 | 成果物地址 | 教师评审意见 |
|---|---|---|---|---|
| 1 | 梳理项目总体需求,编写需求规格说明书和首轮验收基础需求文档 | 麻津午 刘云炎 | 需求规格说明书、需求规格 Markdown、首轮验收基础需求 | 需求规格说明书增加词性表 |
| 2 | 编写买家商品浏览、购买意向提交和口令码查询页面源码 | 林天宏 | 买家商品页面源码 | 无 |
| 3 | 编写卖家登录、商品与队列管理页面,以及公共组件和插槽弹窗源码 | 刘云炎 | 卖家登录页面、卖家后台页面、公共组件目录 | 无 |
| 4 | 编写商品与购买意向的数据模型及买家接口源码 | 沈姚杰 | 数据模型目录、买家接口源码 | 展示内容增加后端接口和数据模型表 |
| 5 | 编写卖家接口、排队和交易处理业务源码 | 章曦闵 | 卖家接口源码、核心业务服务源码、后端接口说明 | 展示内容增加后端接口和数据模型表 |
| 6 | 编写首轮测试说明、测试用例和实例、后端集成测试及测试运行脚本 | 杨熠 | 测试说明、测试用例 Word、测试实例目录、测试源码、运行脚本 | 增加测试用例表 |