买家前端设计文档讲述版 - H15058218452-rgb/Software-Engineering-Experimental-Group GitHub Wiki

1. 工作概述

1.1 工作目标

本阶段主要负责《在线购物系统 MVP》第一迭代中买家端的需求分析与原型设计。

本阶段暂不进行具体页面编码,重点确定买家端的:

  • 角色与权限
  • 页面结构
  • 页面交互
  • 业务流程
  • 商品状态
  • 购买意向状态
  • 排队机制
  • 口令码机制
  • 异常场景
  • 前后端职责
  • 验收标准

2. 系统业务定位

项目 本 MVP 设计
卖家数量 单卖家
在售商品 同一时间仅一件
买家账号 不需要注册
支付方式 线下交易
购买方式 提交购买意向
购买处理 按提交时间排队
交易确认 卖家手动确认
商品冻结 卖家开始交易后冻结
买家身份识别 购买意向口令码

核心业务原则

提交购买意向 ≠ 进入交易 ≠ 商品冻结

实际业务关系为:

提交购买意向
      ↓
进入排队
      ↓
卖家选择队首买家
      ↓
进入线下交易
      ↓
商品冻结
      ↓
卖家确认交易结果

3. 买家角色与权限设计

买家采用匿名用户模式。

买家无需注册和登录,即可:

  • 浏览商品
  • 查看商品详情
  • 提交购买意向
  • 获取购买意向口令码
  • 查询购买意向
  • 查看排队位次
  • 修改排队中的联系信息
  • 撤销排队中的购买意向
  • 查看交易状态

买家不能:

  • 查看其他买家信息
  • 修改正在交易中的意向
  • 撤销正在交易中的意向
  • 访问卖家后台

4. 买家端页面设计

本阶段设计 6 个核心页面:

编号 页面 核心功能
BUY-01 商品浏览首页 查看当前商品
BUY-02 商品详情页 查看商品详细信息
BUY-03 购买意向提交页 填写买家信息
BUY-04 意向提交成功页 展示一次性口令码
BUY-05 意向口令码管理页 查询购买意向
BUY-06 意向详情/状态页 管理购买意向

页面关系:

商品首页
   ↓
商品详情
   ↓
提交购买意向
   ↓
提交成功
   ↓
口令码管理
   ↓
意向详情

5. 核心业务设计

5.1 购买意向机制

买家提交购买意向后,并不会立即冻结商品。

所有有效意向按照提交时间进入队列。

例如:

A  10:01  → 第1位
B  10:03  → 第2位
C  10:05  → 第3位

卖家只能选择队首买家开始交易。

因此:

先提交,先获得交易机会。

5.2 商品状态

在售
 ↓
卖家选择队首买家
 ↓
已冻结(交易中)
 ↓
 ├── 交易成功 → 已下架
 │
 └── 交易失败
       ├── 队列有买家 → 继续冻结
       └── 队列为空 → 恢复在售

商品状态:

状态 查看商品 提交意向
在售 ✓ ✓
已冻结 ✓ ×
已下架 × ×

6. 购买意向状态设计

购买意向状态:

排队中
 ↓
正在交易
 ├──→ 已成功
 ├──→ 已作废
 └──→ 重新排队
          ↓
        排队中

其中:

排队中

允许:

  • 查询
  • 修改姓名
  • 修改联系电话
  • 撤销意向

正在交易

只允许查询,不允许买家修改或撤销。

重新排队

交易失败后进入队尾。

原口令码继续有效。

已成功 / 已作废 / 已撤销

购买意向终结,口令码失效。

7. 口令码设计

由于系统没有买家注册,因此需要解决:

买家如何再次找到自己的购买意向?

本系统采用购买意向口令码作为匿名身份凭证。

流程:

提交购买意向
      ↓
系统生成唯一口令码
      ↓
成功页面展示
      ↓
买家自行保存
      ↓
后续通过口令码查询

口令码生命周期:

状态 口令码
排队中 有效
正在交易 有效
重新排队 有效
买家撤销 失效
卖家作废 失效
交易成功 失效
商品下架导致意向终结 失效

8. 关键异常场景

本阶段重点考虑以下异常:

8.1 商品状态变化

买家打开页面时商品为在售,但提交时商品已经被冻结。

处理:

前端提交
   ↓
后端重新检查商品状态
   ↓
商品已冻结
   ↓
拒绝提交

提示:

商品状态已发生变化,请刷新页面后重试。

8.2 重复提交

前端:

  • 提交按钮进入加载状态
  • 禁止重复点击

8.3 交易失败

卖家可以选择:

交易失败
   ├── 作废
   │    └── 意向终结
   │
   └── 重新排队
        └── 进入队尾

如果还有其他买家,则自动递补下一位。

如果没有其他买家,则商品恢复在售。