Skip to content
hds556 edited this page Oct 18, 2026 · 9 revisions

在线购物系统(MVP)需求规格说明书

项目 内容
文档名称 在线购物系统(最小可行产品)需求规格说明书(SRS)
版本 V1.5
日期 2026-10-18
编写依据 ① 基线需求原文(全文见附录 A);② 需求方对全部澄清问题的最终答复(全文见附录 B);③ 《需求分析文档 V2.2》
文档说明 本文档为需求基线,取代此前 V1.0 / V1.1 / V1.2 版需求规格说明书。全部条款均为已确认结论,可逐条验证。本文档自包含:全部需求来源原文收录于附录,脱离任何外部文件亦可核对与评审。

修订记录

  • V1.0:初版("提交意向即冻结"模型)。
  • V1.1:更正为"提交意向仅登记排队、进入交易才冻结"模型。
  • V1.2:依据需求方全部最终答复重写——商品五态状态机、先到先得硬约束、失败自动递补、口令码机制、意向五种结局;格式升级为规范 SRS(每条需求可验证,含验收标准)。
  • V1.3:文档改为自包含——新增附录 A(基线需求原文)、附录 B(需求方答复原文 B-1 ~ B-19)、附录 C(答复与业务规则对照表);参考资料不再指向外部文件。
  • V1.4:随 Java 重构更新——§2.3 运行环境改为 Java 17 + Spring Boot + SQLite;新增"输入字段前端预校验"要求(FR-S-02、FR-S-09、FR-B-02、6.2 节):各输入字段约束应先在浏览器端校验并即时反馈,后端校验仍为最终权威(依据课程评审意见与 DEF-001 迭代结论)。
  • V1.5:依据阶段性评审意见收紧价格约束——原规则"价格 > 0、两位小数"无上限,导致数千位的超长数值(评审中实测 5000 位)只能通过后端判定,违背"不合格输入不应到达后端"的分层校验原则。新增价格上限 999,999.99 元(整数部分不超过 6 位),浏览器端可用 HTML 约束属性(max / maxlength / pattern)直接拦截此类输入(同步更新 FR-S-02、BR-17、§4.1 数据字典)。补齐其余无界输入约束(与 V1.5 同一评审意见延伸)——商品名称 ≤ 128 字符、商品描述 ≤ 2000 字符(与实现数据库 varchar(128) / varchar(2000) 对齐,消除"需求无界、实现有界"的不一致);新密码 8~64 位(原规则仅有下限)。同步更新 FR-S-02、FR-S-09、BR-17、BR-18、§4.1、§4.3、6.2 节。

1. 引言

1.1 编写目的

本说明书规定"在线购物系统(MVP)"必须满足的全部功能与非功能需求,作为系统设计、实现、测试与验收的依据。每条需求均以可验证的方式陈述。

1.2 项目背景

本系统为软件需求工程实践课程作业:一个只销售单一商品的极简在线购物系统。一名卖家发布商品,不特定访客免注册登记购买意向并排队,卖家按先来后到与买家进行线下交易(一手交钱一手交货),售出一件后再发布下一件。

1.3 术语定义

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

1.4 参考资料

  1. 基线需求原文——见附录 A(本文档自包含)。
  2. 需求方对全部澄清问题的最终答复原文——见附录 B(B-1 ~ B-19)。
  3. 《在线购物系统(MVP)需求分析文档 V2.2》(过程稿,记录需求澄清过程)。
  4. 附录 C:附录 B 条目与本文档业务规则(BR-01 ~ BR-19)的对照表。

2. 总体描述

2.1 产品概述

系统提供买家侧(浏览商品、提交意向、凭口令码查/改/撤)与卖家后台(发布商品、管理交易、查看队列与历史、修改密码)两类功能。系统不涉及在线支付、物流、库存数量与用户注册。

2.2 用户特征

角色 说明
访客(买家) 无需注册登录。浏览在售商品、提交购买意向,凭口令码管理自己的意向。
卖家 系统唯一管理用户,凭预置账号密码登录后台,完成全部管理操作。

2.3 运行环境

  • 服务端:可运行 Java 17 的主机(Spring Boot 3.4,内嵌 SQLite 数据库,本地文件系统可写)。
  • 客户端:现代浏览器(Chrome / Edge / Firefox 近期版本)。

2.4 设计与实现约束

  • 系统中任意时刻至多存在一件未售出商品。
  • 数据须持久保存于服务端,重启、关机不丢失。
  • 本版本不实现:用户注册、退出登录、修改已发布商品、撤销交易成功、超时自动处理、意向去重合并、意向操作流水、落选通知、手动下架(详见第 7 章)。

2.5 假设与依赖

  • 系统预置且仅预置一个卖家账号,初始凭据随部署交付。
  • 交易的钱货交割在线下进行,系统只记录意向与状态,不处理钱款。

2.6 业务流程总览

flowchart TD
    S1[卖家登录后台] --> S2[发布商品<br>(名称/描述/图片/价格)]
    S2 --> P1[商品:在售]

    P1 -->|买家浏览商品| B1[买家填写姓名、电话<br>提交购买意向]
    B1 --> B2[系统生成独立意向记录<br>置于队尾,发出口令码]
    B2 -->|商品保持「在售」| P1

    B3[买家凭口令码<br>查询位次/修改信息/撤销意向] -.可选操作.-> B2

    P1 -->|卖家开始交易<br>(强制取队首)| P2[商品:冻结<br>队首意向转「交易中」]
    P1 -->|卖家手动冻结| P2

    P2 -->|标记交易成功| P3[商品:下架(终态)<br>该买家结局=成功<br>其余意向=未成交,口令码全部失效]
    P2 -->|标记交易失败| D1{卖家处置当前买家意向}

    D1 -->|作废| D2[该意向结局=作废<br>口令码失效]
    D1 -->|重新排队| D3[旧记录结案<br>生成新意向排至队尾<br>向卖家展示新口令码]

    D2 --> Q1{队列是否为空?}
    D3 --> Q1
    Q1 -->|非空| P2
    Q1 -->|已空| P4[商品:恢复在售]
    P4 -.等价于「在售」.-> P1
Loading

说明:图中商品状态(在售/冻结/下架/恢复在售)与意向结局(成功/作废/重新排队/撤销/未成交)的完整规范见 3.3、3.4 节;线下交易、钱款交割不在系统流程内。


3. 功能需求

3.1 买家侧功能

FR-B-01 浏览在售商品

  • 系统应展示当前未售出商品的名称、描述、图片、价格。
  • 商品处于冻结状态时,仍应正常展示,并以显著标识表明"已被预定/暂停接受意向"。
  • 无未售出商品时,应提示"暂无在售商品"。
  • 验收:三种情形(在售/冻结/无商品)分别访问,展示与标识符合上述要求。

FR-B-02 提交购买意向

  • 前置条件:商品处于"在售"或"恢复在售"状态;否则系统应拒绝并提示。
  • 买家应且只应填写:姓名、联系电话,两项均必填,缺一不得提交;姓名不超过 64 字符、电话不超过 32 字符,超限应在浏览器端即被阻止输入/提交。
  • 提交成功后,系统应:生成一条独立的意向记录并置于队尾;当场生成并展示唯一口令码,提示买家保存。
  • 系统不得因联系方式相同而合并、覆盖已有意向记录。
  • 验收:连续以同一联系方式提交两次,队列中出现两条独立记录,各持不同口令码;冻结状态下提交被拒绝。

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

  • 买家输入有效口令码后,系统应显示对应意向的排队位次及是否已进入交易。
  • 口令码无效或已失效时,系统应拒绝查询,且不区分"无效"与"已失效"的具体原因。
  • 验收:队列第 2 位买家查询显示"第 2 位";其进入交易后查询显示"交易中";商品售出后任一买家查询均被拒绝。

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

  • 凭有效口令码,买家应可修改本人的姓名、联系电话,且仅限这两项。
  • 修改不得改变排队位次、不得触发重新排队。
  • 意向已终结或商品已下架时,系统应拒绝修改。
  • 验收:第 2 位买家修改电话后仍居第 2 位;已撤销意向的口令码修改被拒。

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

  • 凭有效口令码,买家应可撤销本人的意向;撤销后该意向从队列移除,结局记为"撤销",后续买家位次依次前移。
  • 撤销不得改变商品状态;即使撤销的是交易中的买家,商品仍应保持冻结,等待卖家处理。
  • 验收:撤销后队列位次前移正确;商品状态不变;该口令码此后查询/修改/撤销均被拒。

3.2 卖家后台功能

FR-S-01 卖家登录

  • 卖家应凭"用户名 + 密码"登录后台;未登录访问后台任何功能应被拒绝。
  • 登录失败提示不得区分"用户名错误"与"密码错误"。
  • 本版本不要求提供退出登录功能。
  • 验收:未登录直接访问后台接口/页面被拦截;错误凭据登录得到统一提示。

FR-S-02 发布商品

  • 前置条件:系统内无未售出商品;否则应拒绝发布。
  • 卖家应填写:商品名称、商品描述、商品图片、商品价格,四项均必填;商品名称不超过 128 字符、商品描述不超过 2000 字符,超限应在浏览器端即被阻止输入/提交。
  • 图片约束:最多一张主图,仅 JPG/PNG 格式,单张不超过 5MB;价格约束:大于 0、保留两位小数、不超过 999,999.99 元(整数部分最多 6 位)、单位为人民币元。
  • 输入校验分层:上述图片格式/大小、价格取值约束应先在浏览器端校验(HTML 约束属性 + 提交前脚本检查),不满足时即时提示且不发起请求;服务端校验仍为最终权威,两条防线缺一不可(见 6.2 节)。
  • 发布成功后商品进入"在售"状态,系统记录发布时间。
  • 商品一经发布,其名称、描述、图片、价格在任何状态下均不得修改。
  • 验收:缺图/超 5MB/非 JPG·PNG/名称超 128 字符/描述超 2000 字符/价格为 0、负数或超过 999,999.99 元均被拒绝(超长输入应在浏览器端即被拦截,不产生请求);存在未售出商品时发布被拒;全系统无修改商品入口。

FR-S-03 查看意向队列

  • 后台应展示当前商品的意向名单,按提交时间排序,含:位次、姓名、联系电话、提交时间、当前状态(排队中/交易中)。
  • 交易中买家已自行撤销的,名单中应有可见标记。
  • 意向购买人信息仅卖家可见。
  • 验收:名单顺序与提交时间一致;买家侧任何页面无法获取他人意向信息。

FR-S-04 开始交易

  • 卖家发起交易时,系统应强制取队列最前者(最早提交且仍在排队的意向)作为交易对象,不提供选择其他买家的入口。
  • 开始后:商品自动进入"冻结",该意向转为"交易中"。
  • 队列为空时操作应被拒绝。
  • 验收:队列有 3 人时发起交易,绑定的一定是第 1 位;卖家无法指定第 2、3 位。

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

  • 卖家应可将"在售/恢复在售"的商品手动冻结;冻结后停止接受新意向。
  • 卖家应可将冻结中的商品手动解冻回"在售";解冻只改变商品状态,不得改变任何意向的状态。
  • 手动冻结与开始交易产生的自动冻结为同一"已冻结"状态。
  • 验收:手动解冻后,原队列全部意向(含位次)保持不变。

FR-S-06 标记交易成功

  • 仅当存在"交易中"意向时可操作。
  • 标记后:商品进入"下架"(终态),系统不提供任何撤销手段;该买家意向结局记"成功";队列中其余未结束意向结局记"未成交";全部口令码即时失效。
  • 系统应记录交易结果与交易时间;操作前界面应要求卖家二次确认。
  • 验收:标记成功后商品不可再售、不可恢复;落选买家口令码查询被拒;历史中出现该商品及完整意向名单。

FR-S-07 标记交易失败

  • 仅当存在"交易中"意向时可操作。
  • 卖家应同时确认对当前买家意向的处置,二选一:
    • 作废:该意向终结,结局记"作废",口令码失效;
    • 重新排队:该意向以结局"重新排队"结案、口令码即时失效;系统生成新意向记录(新口令码、排至队尾),并向卖家展示新口令码以便线下告知买家。
  • 处置完成后系统应立即分流:队列非空 → 新队首自动转为"交易中",商品保持/重新"冻结";队列已空 → 商品进入"恢复在售"。
  • 系统应记录结果标记时间。
  • 验收:选"重新排队"后旧口令码失效、新记录位于队尾;队列非空时递补自动发生、无需卖家再次操作;队空时商品恢复可接受意向。

FR-S-08 查看历史商品

  • 后台应可查看全部历史商品:名称、描述、图片、价格、发布时间、交易结果、交易时间。
  • 每个历史商品应附完整意向购买人名单:姓名、联系电话、提交时间、对应结局(成功/作废/重新排队/撤销/未成交)。
  • 历史记录不得删除,成交后亦完整保留。
  • 验收:完成一轮完整交易后,历史中商品信息与意向名单(含五种结局的准确标注)完整可见。

FR-S-09 修改密码

  • 修改前应先验证原密码,原密码错误应拒绝。
  • 新密码应满足:8~64 位,且同时包含字母和数字;不满足应拒绝,超长输入应在浏览器端即被阻止(maxlength)。
  • 输入校验分层:新密码强度约束应先在浏览器端校验(HTML 约束属性 + 提交前脚本检查),不满足时即时提示且不发起请求;服务端校验仍为最终权威(见 6.2 节)。
  • 密码应以加密(哈希)形式存储,任何存储位置不得出现明文。
  • 系统应记录改密时间。
  • 验收:弱密码(如纯数字 6 位)或超 64 位密码均被拒;改密后旧密码无法登录、新密码可登录;数据文件中密码为密文。

3.3 商品状态机(规范性要求)

商品应在以下五个状态间切换,且仅允许下列转移:

当前状态 事件 下一状态 约束
在售 买家提交意向 在售(不变) 仅登记排队,不冻结
在售 / 恢复在售 开始交易(系统取队首) 冻结 自动冻结,队首意向转"交易中"
在售 / 恢复在售 手动冻结 冻结 与自动冻结同一状态
冻结 手动解冻 在售 不影响任何意向
冻结 标记交易失败 交易失败(过渡) 先处置当前买家意向(作废/重新排队)
交易失败 意向处置完毕且队列非空 冻结 下一位自动递补进入交易
交易失败 意向处置完毕且队列已空 恢复在售 商品重新可售
冻结 标记交易成功 下架(终态) 不可撤销;其余意向记"未成交";口令码全部失效
  • "交易失败"为过渡状态,处置完毕应立即分流,不得停留。
  • "恢复在售"与"在售"行为完全等价。
  • 任意时刻至多一件未售出商品、至多一条"交易中"意向。
  • 冻结期间不得接受新的购买意向;已排队意向保留。

3.4 意向生命周期与结局

每条意向的结局应记为以下五种之一,且历史记录中应能区分:成功、作废、重新排队、撤销、未成交。

  • "重新排队"以旧记录结案 + 新记录入队尾的方式实现。
  • 历史只保留每条意向最终的姓名、电话、提交时间与结局;修改、撤销的操作流水不予保留。

3.5 业务规则(BR-01 ~ BR-19)

编号 规则 依据
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 且 ≤ 999,999.99 元(整数部分 ≤ 6 位)、两位小数、人民币;名称 ≤ 128 字符、描述 ≤ 2000 字符。 B-10、评审意见
BR-18 密码加密存储;改密验原密码;新密码 8~64 位且含字母和数字。 B-9、B-10、评审意见
BR-19 发布、冻结、标记交易结果、修改密码应记录时间戳;意向修改/撤销不记时间戳;全部数据持久保存。 B-10、B-19

"依据"列说明:B-n 指附录 B 的第 n 条(需求方答复原文),本文档附录内即可逐条核对,无需外部文件。全部业务规则均有来源,不存在无依据的自增规则。


4. 数据需求(数据字典)

4.1 商品(Product)

字段 类型 必填 约束
商品名称 字符串 是 ≤ 128 字符;发布后不可改
商品描述 字符串 是 ≤ 2000 字符;发布后不可改
商品图片 文件 是 1 张,JPG/PNG,≤ 5MB;发布后不可改
商品价格 数值 是 0 < 价格 ≤ 999,999.99 元(整数部分 ≤ 6 位),两位小数,人民币;发布后不可改
状态 枚举 是 在售 / 冻结 / 恢复在售 / 下架("交易失败"为不停留的过渡态)
发布时间 时间 系统记录 —
冻结时间 时间 系统记录 关键操作时间戳
交易结果 / 交易时间 枚举 / 时间 售出后记录 —

4.2 购买意向(PurchaseIntent)

字段 类型 必填 约束
关联商品 引用 是 —
姓名 字符串 是 ≤ 64 字符;可凭口令码修改
联系电话 字符串 是 ≤ 32 字符;可凭口令码修改
提交时间 时间 系统记录 决定排队位次,不可变
口令码 字符串 系统生成 唯一,8 位随机字母数字
阶段 / 结局 枚举 是 排队中 / 交易中;终结后记结局:成功 / 作废 / 重新排队 / 撤销 / 未成交

4.3 卖家账号(Seller)

字段 类型 必填 约束
用户名 字符串 是 系统预置,唯一
密码 哈希 是 加密存储;改密验原密码;新密码 8~64 位且含字母和数字

5. 外部接口需求

  • 用户界面:浏览器访问。买家侧:商品展示页(含意向提交与口令码管理);卖家侧:后台管理页(登录后使用)。界面应极简,买家无需任何说明即可完成操作。
  • 软件接口:无外部系统接口;不接入支付、短信、邮件等任何第三方服务。
  • 通信接口:浏览器与服务端之间使用 HTTP;买家侧数据交互无需鉴权,后台数据交互须凭登录会话。

6. 非功能需求

6.1 性能需求

  • 系统按"单卖家、单商品、低并发"规模设计;在意向队列不超过 200 条的规模下,常规页面加载与操作响应应不超过 2 秒。
  • 系统无多商品、多卖家、高并发要求。

6.2 安全需求

  • 密码加密存储;登录失败提示不区分账号/密码错误。
  • 后台全部功能须登录后访问;会话凭证不得暴露于页面脚本(HttpOnly)。
  • 意向购买人姓名、电话仅卖家可见;买家侧按口令码仅返回本人的位次与阶段。
  • 口令码应唯一且不可顺序枚举(8 位随机字母数字)。
  • 上传图片应校验格式(JPG/PNG)与大小(≤ 5MB)。
  • 输入字段前端预校验:发布商品(名称/描述长度、价格、图片)、修改密码(新密码强度与长度)、提交/修改意向(姓名、电话长度)等输入约束,应先在浏览器端校验并即时反馈,不合格的请求不得发出;服务端对同一约束保留完整校验,作为最终权威防线(防止绕过前端直连接口)。
  • 口令码输入框应限制长度(8 位)并在提交前做规范化处理(去除首尾空白、统一大写)。

6.3 可靠性需求

  • 全部数据持久保存,关机、重启不丢失。
  • 关键写操作(发布、冻结、标记结果、改密、提交意向)完成后数据应立即落盘。
  • 状态切换应保证一致性:不得出现两人同时买下同一商品、不得出现一件商品同时有两条"交易中"意向(NFR-01)。

6.4 可用性需求

  • 买家免注册完成"浏览 → 提交 → 保存口令码 → 查/改/撤"全流程。
  • 口令码在提交成功页显著展示并提示保存。

7. 范围外需求(本版本明确不实现)

编号 不实现的功能
EX-01 用户注册(买家侧)
EX-02 退出登录
EX-03 修改已发布商品(任何状态下)
EX-04 撤销"交易成功"标记
EX-05 冻结/交易超时自动处理
EX-06 按联系方式对意向去重、合并、覆盖
EX-07 意向修改/撤销的操作流水与时间戳
EX-08 在线支付、物流、库存数量
EX-09 落选买家通知
EX-10 手动下架(不经交易直接撤下商品)

8. 验收标准与需求验证

8.1 验收总则

  • 第 3 章全部功能需求逐条通过验收(各条已附验收要点)。
  • 第 3.5 节业务规则通过场景测试验证;第 6 章非功能需求通过测试与审查验证。
  • 第 7 章范围外功能出现即视为缺陷(防止自行扩需求)。

8.2 验证方式对照

需求类别 验证方式
FR-B-01 ~ FR-B-05 功能测试(买家场景脚本)
FR-S-01 ~ FR-S-09 功能测试(后台场景脚本)
3.3 状态机 状态遍历测试(覆盖全部 8 条合法转移 + 非法转移拒绝)
3.4 意向结局 五种结局各构造一例核查历史记录
BR-01 ~ BR-19 融入上述场景测试逐条断言
6.1 性能 200 条意向规模下抽样测量响应时间
6.2 安全 数据文件审查(密码密文)、越权访问测试、口令码枚举抽查
6.3 可靠性 重启后数据核对;并发/重复提交一致性测试

附录 A · 基线需求原文

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

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

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

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


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

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

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

说明:EX-xx 为第 7 章"范围外需求"编号,用于证明"不作某功能"同样有需求方依据,而非遗漏。

Clone this wiki locally