Skip to content

Requirements‐Analysis

hds556 edited this page Oct 5, 2026 · 2 revisions

在线购物系统(MVP)需求分析文档

项目 内容
文档名称 在线购物系统(最小可行产品)需求分析文档
版本 V2.2
日期 2026-10-05
编写依据 ① 基线需求原文(全文见附录 A);② 需求方对全部澄清问题的最终答复(全文见附录 B)
文档说明 本文档取代此前所有版本的需求规格/分析文档。凡本文档与旧版本冲突之处,以本文档为准。本文档自包含:正文引用的全部需求来源原文均收录于附录,无需外部文件即可核对。

修订记录(V2.0 → V2.1)

  1. 商品状态机由三态改为五态:在售、冻结、交易失败、恢复在售、下架(依据附录 B-10 口径)。
  2. 新密码规则确定为已定需求:不少于 8 位,且同时包含字母和数字(原待确认项 9.1.1,需求方确认按默认规则执行)。
  3. 删除"卖家初始账号交付方式"待确认项(需求方认为无需提出)。
  4. 原 9.2"实现解读"独立为第 9 节单独板块。

修订记录(V2.1 → V2.2)

  1. 文档改为自包含:新增附录 A(基线需求原文)与附录 B(需求方最终答复原文 B-1 ~ B-19)。
  2. 正文中"依据"列的引用由外部文件名改为附录内编号(如原"整理#3"→"B-3"),脱离原始 txt 文件亦可核对来源。
  3. 第 6 节表头注明引用含义。

1. 引言

1.1 编写目的

依据基线需求与需求方的全部澄清答复,对"在线购物系统(MVP)"形成完整、无歧义的需求描述,明确角色、功能、业务规则、数据定义与状态流转,作为设计、实现与验收的依据。

1.2 项目范围

本系统是一个只销售单一商品的极简在线购物系统,服务于一名卖家与不特定访客。买家免注册;交易线下完成(一手交钱一手交货),系统不涉及在线支付、物流与库存数量管理。售出一件后,卖家再发布下一件。

本版本明确不做的功能(需求方已确认,详见第 8 节):用户注册、退出登录、修改已发布商品、撤销交易成功、超时自动处理、意向去重合并、意向操作流水。

1.3 术语定义

术语 定义
在售 商品对外展示、可接受购买意向的状态。
意向购买人 / 意向队列 提交购买意向后即进入该商品的意向名单,按提交时间先后排队。
交易中 卖家与队首买家开始走线下交易流程时,该意向所处的状态;同一商品同一时刻至多一条。
冻结 商品暂停接受新意向的状态。两种进入方式:开始交易时自动冻结、卖家在后台手动冻结;二者是同一个"已冻结"状态。
交易失败(状态) 卖家标记"交易失败"后商品进入的过渡状态,此时先处置当前买家的意向,再按队列情况分流。
恢复在售 交易失败处置完毕且队列已空后,商品重新可售的状态;行为与"在售"完全等价。
下架 交易成功后商品进入的终态,永久撤下、进入历史,不可撤销。
递补 交易失败后,若队列中还有人排队,下一位自动进入交易,商品随之重新冻结。
口令码 买家提交意向成功后系统当场生成的唯一凭证,是买家认领自己意向的唯一凭据,可凭它查询、修改、撤销意向。
作废 交易失败后,卖家选择将该买家的意向直接终结。
重新排队 交易失败后,卖家选择让该买家排到队尾:旧意向结案、旧口令码即时失效,生成新记录与新口令码。
未成交 商品被更早排队的买家买走后,队列中其余意向的结局。
历史商品 交易成功后永久下架、进入历史的商品,连同其完整意向名单一并保留。

2. 用户角色

角色 说明
访客(买家) 无需注册、无需登录。可浏览在售商品、提交购买意向,并凭口令码查询 / 修改 / 撤销自己的意向。
卖家 系统唯一的管理用户。凭"用户名 + 密码"登录后台,发布商品、管理商品状态、按先来后到与买家交易、查看意向名单与历史商品、修改密码。

3. 核心业务模型

3.1 商品状态机(五态)

商品在其生命周期内于以下五个状态间切换:在售、冻结、交易失败、恢复在售、下架。

状态 含义 进入方式 是否接受新意向
在售 商品展示中,可接受购买意向 卖家发布 是
冻结 暂停接受新意向。含两种触发:开始交易时自动冻结、后台手动冻结(同一个"已冻结"状态) 在售/恢复在售中开始交易或手动冻结 否
交易失败 过渡状态:卖家已标记交易失败,系统正在处置当前买家的意向(作废 / 重新排队) 冻结中标记"交易失败" 否
恢复在售 交易失败处置完毕且队列已空,商品重新可售;行为与"在售"完全等价 交易失败且队列已空 是
下架 终态:交易成功,商品永久撤下进入历史,不可撤销 冻结中标记"交易成功" 否

状态转移表:

当前状态 触发事件 下一状态 说明
在售 买家提交意向 在售(不变) 提交只登记排队,不冻结商品;商品继续展示、继续接受意向。
在售 / 恢复在售 卖家"开始交易"(对象为队首) 冻结 自动冻结,该队首意向变为"交易中"。
在售 / 恢复在售 卖家手动冻结 冻结 手动与自动是同一个"已冻结"状态。
冻结 卖家手动解冻 在售 只动商品状态,不触碰任何意向。主要用于卖家自己冻结(无人在交易)后想解开。
冻结 卖家标记"交易失败" 交易失败 进入过渡状态,先处置当前买家意向:作废 / 重新排队(二选一)。
交易失败 意向处置完毕,队列非空 冻结 下一位自动递补进入交易,商品随之重新冻结。
交易失败 意向处置完毕,队列已空 恢复在售 商品重新可售,可继续接受意向。
冻结 卖家标记"交易成功" 下架 商品永久下架入历史,不可撤销;其余意向记"未成交",全部口令码失效。

约束:

  • "交易失败"是过渡状态,不停留:意向处置完毕后立即按队列情况分流(非空 → 冻结,已空 → 恢复在售)。
  • "恢复在售"与"在售"行为完全等价(可接受意向、可开始交易、可手动冻结);区分为两个名称只为明确表达"该商品是经历交易失败后重新上架的"这一来历。
  • 任意时刻系统中至多一件未售出商品;上一商品未售出前不得发布新商品。
  • 冻结期间停止接受新的购买意向;已在队列中的意向保留。
  • 商品发布之后(无论在售、冻结还是已售出)信息不可修改。

3.2 意向队列与"先来后到"

  • 买家登记意向后进入队列,商品仍在售,他人可继续登记。
  • 交易对象不是卖家随便挑的:严格按提交时间先来后到,队首先交易;前面没谈成,按顺序递补下一位。卖家不能跳过前面的人。
  • 买家撤销(凭口令码)只是自己退出排队,后面的人位次依次前移;商品不会因买家撤销而自动恢复在售——恢复在售永远是卖家在后台的操作结果。
  • 每次提交都是一条独立的意向记录:不因联系方式相同而合并或覆盖。要改信息走口令码通道,不靠重复提交覆盖。

3.3 意向记录的生命周期与结局

每条意向从提交到终结经历:

提交 → 排队中 → 交易中 →(成功 / 作废 / 重新排队)
   └──────→ 撤销(买家凭口令码主动退出)
   └──────→ 未成交(商品被更早排队者买走)
  • 结局共五种,各自记清:成功、作废、重新排队、撤销、未成交。历史里要能看出"这个人排队又退出了""那单失败后又重新排了"。
  • "重新排队"的结案方式:旧记录以结局"重新排队"结案、旧口令码即时失效;系统生成一条新记录(新口令码、排到队尾)。卖家须把新口令码线下告知买家。
  • 排队位次按提交时间排序;凭口令码修改姓名/电话不改变位次、不重新排队。

3.4 口令码机制

口令码贯穿买家侧全程,是免注册前提下买家认领意向的唯一凭证:

环节 规则
生成 提交意向成功时系统生成唯一口令码,当场展示在提交成功页面,提示买家自行保存。
查询 凭口令码可查看:当前排到第几位、是否已进入交易。
修改 凭口令码可修改姓名、联系电话两项;不改位次。
撤销 凭口令码可撤销意向,从队列移除,后面位次前移。
失效 对应意向终结(成功/作废/撤销/未成交)或商品下架后,口令码作废,不能再查、改、撤;重新排队时旧码即时失效、另发新码。

注意:商品一旦售出下架,所有口令码(包括没轮上的买家的)立即作废,买家连"没成交"这个结果也查不到;但他们的姓名、电话、提交时间与结局仍保留在卖家后台的历史记录里。


4. 功能需求

4.1 买家侧

FR-B-01 浏览在售商品

  • 展示当前商品的名称、描述、图片、价格。
  • 商品处于冻结状态时仍展示,但须标识"已被预定 / 暂停接受意向",且不开放提交入口。
  • 无在售商品时提示"暂无在售商品"。

FR-B-02 提交购买意向

  • 前置条件:商品处于"在售"或"恢复在售"状态。
  • 填写字段:姓名、联系电话,两项均必填(仅此两项)。
  • 提交成功:生成一条独立意向记录进入队尾,系统当场生成并展示唯一口令码,提示买家保存。
  • 每次提交都是独立记录,不做联系方式去重或合并。

FR-B-03 查询意向(凭口令码)

  • 输入口令码,显示该意向的排队位次、是否已进入交易。
  • 口令码无效或已失效时,提示无法查询。

FR-B-04 修改意向信息(凭口令码)

  • 可修改姓名、联系电话;其余内容不可改。
  • 修改不改变排队位次、不触发重新排队。
  • 仅口令码有效(意向未终结)时可用。

FR-B-05 撤销意向(凭口令码)

  • 撤销后意向从队列移除,结局记为"撤销",后面的人位次前移。
  • 商品状态不因撤销而改变:即使撤销的是正在交易中的买家,商品仍保持冻结,须由卖家在后台处理。

4.2 卖家后台

FR-S-01 登录

  • 凭"用户名 + 密码"登录;未登录不得访问后台任何功能。
  • 本版本不要求退出登录功能。

FR-S-02 发布商品

  • 填写:商品名称、商品描述、商品图片(最多一张主图,仅 JPG/PNG,单张不超过 5MB)、商品价格(大于 0,保留两位小数,单位:人民币元)。
  • 前置条件:系统内无未售出商品(上一商品已进入历史)。
  • 发布后商品进入"在售"状态,记录发布时间。
  • 商品一经发布,任何状态下均不可修改。

FR-S-03 查看意向队列

  • 按提交时间顺序显示意向名单:位次、姓名、联系电话、提交时间、当前状态(排队中/交易中)。

FR-S-04 开始交易

  • 卖家从队列发起交易时,系统强制取队首(最早提交者),不允许跳过前面的人。
  • 开始后:商品自动冻结,该意向变为"交易中"。

FR-S-05 手动冻结 / 解冻

  • 手动冻结:在售/恢复在售 → 冻结,停止接受新意向。
  • 手动解冻:冻结 → 在售,只改变商品状态,不影响任何意向(不会把任何人的意向判为失败)。
  • 典型用途:卖家自己冻结(无人在交易)之后想解开。真要结束与某位买家的交易,走"标记交易失败"。

FR-S-06 标记交易成功

  • 仅对"交易中"的意向可操作。
  • 结果:商品下架进入历史(终态,不可撤销,标记前须确认清楚);该买家意向结局记"成功";队列中其余未结束意向结局记"未成交";全部口令码即时失效。
  • 记录交易时间。

FR-S-07 标记交易失败

  • 仅对"交易中"的意向可操作。
  • 商品进入"交易失败"过渡状态,卖家须同时确认对该买家意向的处置,二选一:
    • 作废:意向终结,结局记"作废",口令码失效;
    • 重新排队:旧记录结局记"重新排队"、旧口令码即时失效;生成新记录(新口令码)排至队尾,卖家将新口令码线下告知买家。
  • 处置后:队列非空 → 下一位自动递补进入交易,商品重新冻结;队列已空 → 商品进入"恢复在售"。
  • 记录结果标记时间。

FR-S-08 查看历史商品

  • 每个历史商品显示:名称、描述、图片、价格、发布时间、交易结果、交易时间。
  • 每个历史商品附带完整意向购买人名单:姓名、电话、提交时间、对应结局(成功/作废/重新排队/撤销/未成交),成交后也不删除。

FR-S-09 修改密码

  • 须先验证原密码。
  • 新密码规则(已定需求):不少于 8 位,且同时包含字母和数字。
  • 密码加密存储,不明文保存;记录改密时间。

5. 数据需求

5.1 商品(Product)

字段 规则
商品名称 必填;发布后不可改
商品描述 必填;发布后不可改
商品图片 必填,最多 1 张主图,仅 JPG/PNG,单张 ≤ 5MB;发布后不可改
商品价格 必填,> 0,两位小数,人民币;发布后不可改
状态 在售 / 冻结 / 交易失败(过渡) / 恢复在售 / 下架
发布时间 系统记录
冻结时间 系统记录(关键操作时间戳)
交易结果、交易时间 系统记录(售出后)

5.2 购买意向(PurchaseIntent)

字段 规则
关联商品 对应的商品
姓名 必填
联系电话 必填
提交时间 系统记录,决定排队位次
口令码 系统生成的唯一凭证
状态 / 结局 排队中、交易中;终结后记录结局:成功 / 作废 / 重新排队 / 撤销 / 未成交

留痕边界:历史只存每条意向最终定下来的内容(最终的姓名、电话、提交时间、结局)。买家中途改过几次、何时改的、何时撤的,操作流水不保留;"意向修改/撤销"不在关键操作时间戳清单内。

5.3 卖家账号(Seller)

字段 规则
用户名 系统预置,唯一
密码 可修改,加密存储;改密须验原密码;新密码 ≥ 8 位且同时包含字母和数字

5.4 关键操作时间戳清单

必须记录时间戳的操作:发布商品、冻结、标记交易结果(成功/失败)、修改密码。 明确不记录时间戳的操作:意向的修改与撤销。

5.5 数据持久性

全部数据(商品、意向、口令码、账号)须持久保存,关机、重启不丢失。


6. 关键业务规则速查

编号 规则 依据
BR-01 提交意向只登记排队,不冻结商品;商品继续在售、继续接受意向 B-3
BR-02 卖家与队首开始交易时商品自动冻结;也可后台手动冻结;同一"已冻结"状态 B-3、B-9
BR-03 冻结期间停止接受新意向 B-3
BR-04 交易对象严格先来后到,卖家不可跳选;失败后按顺序递补 B-3
BR-05 交易失败且队列非空 → 下一位自动递补进入交易并重新冻结;队列已空 → 恢复在售 B-11
BR-06 手动解冻只动商品状态,不触碰任何意向 B-12
BR-07 交易失败时卖家二选一:作废 / 重新排队(队尾 + 旧口令码失效、另发新码) B-15
BR-08 交易成功 → 商品下架(终态,不可撤销);其余意向记未成交,全部口令码失效 B-13、B-14
BR-09 买家凭口令码可撤销;撤销只退出排队、位次前移,商品不自动恢复在售 B-1、B-18
BR-10 每次提交独立记录,不按联系方式合并/覆盖 B-17
BR-11 意向信息字段仅姓名 + 联系电话,均必填 B-2
BR-12 凭口令码修改只限姓名、电话,不改位次 B-18
BR-13 口令码失效时机:意向终结或商品下架;重新排队时旧码即时失效 B-7、B-15、B-18
BR-14 商品发布后不可修改(任何状态) B-8、B-9
BR-15 历史保留完整意向名单(姓名/电话/提交时间/结局),成交后不删 B-4、B-16
BR-16 历史只留意向最终内容,不留修改/撤销流水 B-19
BR-17 图片最多 1 张,JPG/PNG,≤ 5MB;价格 > 0、两位小数、人民币 B-10
BR-18 密码加密存储;改密验原密码;新密码 ≥ 8 位且含字母和数字 B-9、B-10 + V2.1 确认
BR-19 关键操作(发布/冻结/标记结果/改密)记时间戳;数据持久不丢 B-10、B-19

"依据"列说明:B-n 表示本文档附录 B 的第 n 条(需求方答复原文),可直接在附录中核对该条规则的原话出处。


7. 非功能需求

  • NFR-01 一致性(防一货两卖):任意时刻至多一件未售出商品;同一商品同一时刻至多一条"交易中"意向;开始交易、递补、标记结果等状态切换须原子完成,不得出现两人同时买下同一商品。
  • NFR-02 数据持久性:关机、重启后数据不丢失(见 5.5)。
  • NFR-03 安全性:密码加密存储;后台全部功能须登录后访问;意向购买人联系方式仅卖家可见;口令码唯一且不可被枚举猜测(实现要求)。
  • NFR-04 可用性:买家免注册完成"浏览 → 提交 → 查/改/撤"全流程,界面极简。

8. 本版本明确不做的功能(范围外)

不做的功能 依据
用户注册(买家侧) 基线
退出登录 B-9
修改已发布商品(任何状态下) B-8、B-9
撤销"交易成功"标记 B-14
冻结/交易超时自动处理 B-6
按联系方式对意向去重、合并、覆盖 B-17
意向修改/撤销的操作流水与时间戳 B-19
在线支付、物流、库存数量 基线
落选买家通知(售出后口令码直接失效,无通知渠道) B-13
手动下架(不经交易直接撤下商品) B-9 后台功能清单未包含

9. 实现解读(默认口径)

以下条目需求方未逐字明确,本文档按如下默认口径实现;需求方有异议时以需求方答复为准。

  1. "重新排队"的落库方式:解读为"旧记录以结局'重新排队'结案 + 生成新记录(新口令码、新提交时间、排队尾)"。理由:同时满足"四种结局各自记清"与"每条记录只存最终内容"两条要求。
  2. "未成交"结局:答复列举的四种结局(成功/作废/重新排队/撤销)未覆盖"商品被他人买走时队列中剩余意向"的结局,本文档补充第五种"未成交"。
  3. 交易中执行手动解冻:允许,但只解冻商品;该买家意向保持"交易中"标记,卖家事后仍须通过"标记交易结果"正式结束。建议界面上提示"结束交易请使用标记交易失败"。
  4. 冻结中商品的前台展示:默认正常展示商品信息,附加"已被预定/暂停接受意向"标识。
  5. 口令码格式:实现自由,建议 8 位以上随机字母数字,保证唯一、不可顺序枚举。

附录 A · 基线需求原文

以下为课程题目给出的原始需求(基线),本文档全部内容均在其范围内展开,未自行扩大。

基线需求——最简单而又可用的在线购物系统(MVP),具备功能如下:

  1. 只卖一个商品,卖掉一个,再制作一个,再卖。
  2. 只有一个卖家。
  3. 没有用户注册,当查看后想要购买时,再填入用户信息。
  4. 线下交易,一手交钱一手交货。
  5. 在实施线下交易前,商品暂且冻结,直到交易成功,把商品撤下,或者交易失败,商品恢复上线。
  6. 卖家有一个后台,用于发布一个商品、查看历史商品、查看意向购买人信息、冻结商品等功能。
  7. 卖家可修改密码。
  8. 其中商品信息包括:商品名称、商品描述、商品图片、商品价格。

题目附加说明:本系统为软件需求工程实践作业,要求"根据基线需求完善成正常正确的需求,不自行多加需求"。


附录 B · 需求方答复原文(B-1 ~ B-19)

本附录为需求方(卖家)对全部澄清问题的最终答复原文,按答复先后顺序编号 B-1 ~ B-19。正文第 6 节"关键业务规则速查"的"依据"列即指向此处,可逐条核对原话。

B-1 · 买家撤销的后果

买家撤销只是他退出排队,后面的人位次往前挪一下。商品本身不会因为买家点个「撤销」就自动变回可卖——商品什么时候恢复在售,还是得我在后台操作(标记交易失败,或者手动解冻),不是买家那边一点就能直接放出来的。

B-2 · 意向信息字段

就两个:姓名和联系电话,都得填。买家看中了想买的时候,填这俩就行,我好线下联系他完成交易。

B-3 · 冻结触发时机与先来后到

买家登记意向之后,不会立刻冻结商品。他登记完只是进了我的「意向购买人」名单,算是在排队——这时候商品还在正常在售,别人也还能继续登记意向。 冻结是等真正进入交易时才发生的:我跟某个买家开始走交易流程(商品变成「交易中」)时,商品会自动冻结;我也可以在后台手动冻结。冻结之后才停止收新的意向。 而且交易对象也不是我随便挑的,是按先来后到——最早提交意向的先跟我交易;前面这单要是没谈成,再按提交顺序递补下一个。

B-4 · 历史保留意向名单

会保留的,成交了也不删。我后台看历史商品的时候,每个商品下面都带着它的意向购买人名单——姓名、电话、什么时候提交的意向、最后是成了还是没成,都留着,方便我以后翻记录。

B-5 · 线下交易的确认方

线下交易谁说了算——由我(卖家)在后台标记。买卖双方当场「一手交钱一手交货」谈妥之后,我自己在后台把这一单标成「交易成功」或「交易失败」,系统就按我标的这个结果去改商品状态。

B-6 · 无超时机制

这个版本没有超时机制。商品冻结之后会一直保持冻结状态,直到交易有个结果为止——不存在「冻结多久自动算超时、系统自动处理」这一说。结果是我在线下交易完成后自己在后台标记的:标记成功就下架,标记失败就恢复在售、重新上线。系统本身不会去算冻结了多久,也不会自动超时。

B-7 · 口令码机制

买家虽然不登录,但每次提交购买意向后,系统会当场生成一个唯一的口令码,直接显示在提交成功的页面上,让他自己保存好。 之后他就凭这个口令码来查自己的意向——现在排到第几位、有没有进入交易,都能查到;还能凭它改自己留的姓名、电话,或者撤销意向。 不过这个口令码只在交易结束(成功或失败)或商品下架后失效,之后就不能再用来查了。

B-8 · 不提供修改已发布商品

不能。这个版本没有「修改已发布商品信息」的功能——商品发布后,名称、描述、图片、价格这些信息就固定下来了。卖家后台对商品能做的只有发布、冻结/解冻、标记交易成功或失败,没有编辑入口。

B-9 · 卖家后台功能清单

登录:必做。后台得用「用户名 + 密码」登录,不登录进不去。 退出:这个我没提过,这版本不要求做退出登录。 修改密码:必做。改的时候得先验原密码,新密码有长度和强度要求。 发布商品:必做。填名称、描述、图片、价格。 修改商品:没有这个功能。商品发布之后——不管在售、冻结还是已售出——都不能改。 手动冻结:必做(冻结和解冻都在后台手动操作,跟自动冻结是同一个「已冻结」状态)。 查看购买意向:必做。后台能看到意向购买人名单和联系方式。 确认交易结果:必做。线下交易完了,我在后台标记「交易成功」或「交易失败」。 查看历史商品:必做。后台能翻历史记录。 商品冻结或售出后还能改吗:不能。这版本压根没做「修改商品」,发布了就定死了,冻结、售出之后更动不了。

B-10 · 商品状态、图片与价格规则、历史内容、数据持久与密码

商品得有状态来回切:在售、冻结、下架、交易失败恢复在售,这一套得定清楚,别让一件商品被两个人同时买走。 图片:一件商品最多传一张主图,就认 JPG/PNG,单张别超过 5MB。 价格:得是大于 0 的数,保留两位小数,人民币。 历史记录要存啥:商品名、描述、图片、价格、发布时间、交易结果、交易时间;意向购买人名单里得有姓名、电话、提交时间、结果。 数据不能一关机就没;发布、冻结、标记结果、改密码这些关键操作得记时间戳。 密码得加密存,不能明文;改密要验原密码。

B-11 · 交易失败后自动递补

我标记「交易失败」→ 商品先恢复「在售」→ 只要后面还有人排队,下一位就自动递补进入交易,商品随之重新冻上;要是队已经排空了,商品就真正回到「在售」挂着。

B-12 · 手动解冻与标记交易失败的区别

手动解冻不会自动把那位买家的意向判成失败。手动解冻只是把商品从「冻结」放回「在售」,就动了商品这一个状态,不碰买家的意向。 标记交易失败:这才是正式结束跟某位买家的交易——那时候我会确认这位买家的意向是作废还是重新排队,商品同时恢复在售。 所以真在跟人谈着的时候想结束,走「标记交易失败」;手动解冻主要是我自己冻了商品(没人在谈)之后想解开用的。

B-13 · 交易成功后其余意向的处置

商品交易成功、一下架,其余排队的人就算没轮上、没成交了,他们的意向到此结束——商品已经卖给先到的那个人了。口令码:失效了。商品一下架,所有口令码就作废,他们不能再凭码查到任何结果(包括"没成交"这个结果)。 不过:他们填的姓名、电话这些,还留在我的后台历史记录里——每个商品的意向购买人名单都存着,含提交时间和对应结果,只是买家自己查不到了,我后台能翻到。

B-14 · 不可撤销交易成功

没有,这个版本没有「撤销交易成功」的功能。我在后台标记了「交易成功」之后,商品就直接永久下架、进历史记录了,点错了也撤不回来。所以标记前得先确认清楚。

B-15 · 交易失败时对买家的两种处置

交易失败之后,我可以选把这个买家的意向直接「作废」,也可以让他「重新排队」,这两个由我在后台确认。不过「重新排队」是排到队尾,口令码立刻失效重新生成。

B-16 · 意向四种结局均须记录

历史要能还原整个商品的完整过程,所以每个意向从提交到最后结局,都得留个状态。我倾向这样记——成功、作废、重新排队、撤销,这四种结局都各自记清楚,而不是只留「成功/作废」两档。因为重新排队和撤销都是真实发生过的事,卖家回头查历史,应该能看出「这个人排队又退出了」「那单失败后又重新排了」。

B-17 · 每次提交独立记录

我现在的想法就是:每次提交都是一条独立的意向记录,一条就是一条,不会因为联系方式相同就自动合并覆盖。真要改自己的信息,有专门的通道(凭提交时拿到的凭证),不是靠「重复提交同名联系方式」去覆盖。

B-18 · 口令码全流程与边界

买家要改意向,核心靠的是提交成功时系统给的那个「口令码」——买家没注册,口令码就是他认领自己这条意向的唯一凭证,所以第一步是:提交时把口令码保存好。 完整流程大概这样:提交意向时,系统生成一个唯一口令码,在提交成功页面直接展示,提示买家保存;买家想查自己的意向,就凭口令码查询——能看到自己的排队位次、有没有进入交易;想改信息,凭口令码修改——姓名、联系电话这两个都可以改;不想要了,凭口令码撤销——撤销后这条意向从队列里移除,排在后面的人位次依次往前移。 限制和边界:改内容只限姓名、联系电话,别的不动;修改不改变排队位次、不重新排队,原来排第几还是第几;口令码会失效:交易结束(成功或失败)或商品下架后,口令码就作废了,不能再用来查、改、撤。 所以概括起来就是:一口令码贯穿全程,能查、能改名和电话、能撤销;改信息不插队,交易完了码就失效。

B-19 · 历史只留最终内容

只保存最新内容,不留完整过程。历史记录里的「意向购买人」列表,存的是每个买家最终的那份:姓名、联系电话、意向提交时间、对应的交易结果。买家中途改过几次、撤销没撤销,这些操作流水不会保留,系统里留的就是最后定下来的那一条。 而且我这边对关键操作记时间戳的清单里(发布、冻结、标记交易结果、改密码),也没有「意向修改/撤销」这一项——所以改动的过程本身是不留痕的。


附录 C · 附录 B 与业务规则对照表

附录 B 条目 主题 被引用处
B-1 买家撤销的后果 BR-09
B-2 意向信息字段 BR-11
B-3 冻结触发时机、先来后到 BR-01 ~ BR-04
B-4 历史保留意向名单 BR-15
B-5 线下交易确认方 3.3 状态机(交易结果的确定)
B-6 无超时机制 第 8 节(不做超时)
B-7 口令码机制 BR-13
B-8 不可修改商品 BR-14
B-9 后台功能清单、密码要求 BR-02、BR-14、BR-18
B-10 状态/图片/价格/历史/持久化/密码 BR-17 ~ BR-19
B-11 交易失败自动递补 BR-05
B-12 手动解冻与标记失败的区别 BR-06
B-13 交易成功后其余意向处置 BR-08、BR-13
B-14 不可撤销交易成功 BR-08
B-15 失败时作废/重新排队 BR-07、BR-13
B-16 四种结局均须记录 BR-15
B-17 每次提交独立记录 BR-10
B-18 口令码全流程与边界 BR-09、BR-12、BR-13
B-19 历史只留最终内容 BR-16、BR-19

Clone this wiki locally