Files
cmbuyer/docs/07-user-stories.md
T

235 lines
12 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 用户故事清单
> 本文记录「谁在什么场景下,为了获得什么价值,要完成什么目标」。不写接口、数据字段、
> 组件实现或逐个按钮的行为。
> 页面如何响应操作见[交互清单](08-interaction-checklist.md);页面入口见[路由与页面结构](routes.md);
> 接口形状以 [API 合约](api.md) 为准。
## 一、职责边界
| 信息 | 权威文档 |
| --- | --- |
| MVP 范围、优先级、非目标 | [需求](02-requirements.md) |
| 用户目标、场景与验收场景 | 本文 |
| 页面操作、状态与反馈 | [交互清单](08-interaction-checklist.md) |
| 页面入口、导航与组件归属 | [路由与页面结构](routes.md) |
| 接口、事件与错误格式 | [API 合约](api.md) |
US 编号一经引用不再重用。需求变化时先改[需求](02-requirements.md),再同步本文。
## 二、用户故事总表
| ID | 标题 | 优先级 | 角色 | 要达成的目标 | 关联功能 | 关联交互 | 状态 |
| --- | --- | --- | --- | --- | --- | --- | --- |
| US-001 | 把「要买什么」变成一条任务 | P0 | 采购管理员 | 填一次链接和规格,后面不用再管 | F-001 | IX-002 | 已定 |
| US-002 | 知道每条任务现在卡在谁那里 | P0 | 采购管理员 | 一眼分出「等我」和「机器在跑」,快速找到要处理的那条 | F-004、F-011 | IX-003、IX-004 | 已定 |
| US-003 | 让手机自己跑,不用我盯着 | P0 | 采购执行员 | 开一次轮询,手机排着队跑,只在停下来时介入 | F-005、F-006 | IX-007、IX-008 | 已定 |
| US-004 | 确认机器有没有选对 | P0 | 采购管理员 | 看一眼机器实际勾选到的规格和价格,判断能不能买 | F-007、F-008 | IX-005 | 已定 |
| US-005 | 放心地授权一笔下单 | P0 | 采购管理员 | 授权后确信系统只下单不付款,且不会因断网重复下单 | F-008、F-009、F-010、F-017 | IX-005、IX-010、IX-011 | 已定 |
| US-006 | 付款前核对订单再花钱 | P0 | 采购管理员 | 对着系统给的几项组织人工核对,不一致就不付 | F-009 收口 | IX-006 | 已定 |
| US-007 | 管理身份和设备身份互不越权 | P0 | 采购管理员 | 设备被盗用也不能建单或改授权 | F-013 | IX-001 | 已定 |
| US-008 | 任务出问题时知道该怎么办 | P0 | 采购执行员 | 看到具体原因和下一步,而不是一个「失败」 | F-011 | IX-008 | 已定 |
> US-009(从 ERP 货运明细建单)随 F-003 移出 MVP,编号保留不重用。
## 三、故事详情
### US-001 把「要买什么」变成一条任务
- 优先级:P0 | 关联功能:F-001 | 关联交互:IX-002
- 角色:采购管理员
- 前置条件:已登录,手上有拼多多商品链接和要买的颜色分类、尺码。
**用户故事**
作为采购管理员,我想要填一次链接和规格就把任务交出去,从而不必自己再去手机上操作。
**范围**
- 包含:任务名称、手工填链接、颜色分类、尺码、数量、价格上限。
- 不包含:Excel 批量导入、从 ERP 生成、任务模板(均为 V2)。
**验收场景**
1. 假如我有商品链接和规格,当我填完表单提交,那么得到任务编号,任务出现在工作台的
「机器在跑」泳道且状态为待领取。
2. 假如链接无法解析出商品标识,当我提交,那么系统明确报错并保留我已填的内容。
3. 假如我没填价格上限,当我提交,那么系统拒绝——**价格上限是资金边界,不能留空**。
### US-002 知道每条任务现在卡在谁那里
- 优先级:P0 | 关联功能:F-004、F-011 | 关联交互:IX-003、IX-004
- 角色:采购管理员
- 前置条件:已登录,系统中有若干条不同状态的任务。
**用户故事**
作为采购管理员,我想要打开就看清哪几条在等我,从而不必逐条点进去确认还需不需要我
处理。
**范围**
- 包含:按「谁持球」分组、关键词与时间范围查询、任务详情的结果与证据。
- 不包含:自定义视图、导出报表、跨任务统计。
**验收场景**
1. 假如有任务停在等待人工确认,当我打开工作台,那么它出现在「等你决定」并且第一条
已经展开,我不用再点一次才看到内容。
2. 假如我按关键词筛选后没有匹配,当结果为空,那么显示空状态并提供清除筛选,而不是
一片空白或报错。
3. 假如任务失败了,当我打开详情,那么我看到可区分的失败原因和当时的截图,而不只是
「失败」两个字。
### US-003 让手机自己跑,不用我盯着
- 优先级:P0 | 关联功能:F-005、F-006 | 关联交互:IX-007、IX-008
- 角色:采购执行员
- 前置条件:电脑已连上 web 端;手机已连接、已解锁、已登录拼多多。
**用户故事**
作为采购执行员,我想要开一次轮询就让手机排着队把任务跑掉,从而把注意力留给真正需要
判断的时刻。
**范围**
- 包含:定时轮询领取、第一趟试选、第二趟下单、连续失败自动停。
- 不包含:多台手机并行、无人值守整夜运行、批量勾选编排(V2)。
**验收场景**
1. 假如有待处理任务且设备就绪,当我点击开始轮询,那么系统按间隔领取任务并显示**这一趟
是试选还是下单**;两个实例并发不会领到同一条。
2. 假如第一趟试选完成,当机器读完价截完图,那么**它退出商品页释放手机**,立刻可以开始
下一条,而不是停在规格面板上等我。
3. 假如某条任务需要人工,当它停下来,那么界面显著提示缺什么,该任务不再被本端领取,
但轮询继续跑其他任务。
4. 假如连续失败达到阈值,当失败累积,那么轮询自动停止并说明原因,**不无限重试**。
5. 假如我关闭窗口,那么轮询立即停止,不留后台进程。
### US-004 确认机器有没有选对
- 优先级:P0 | 关联功能:F-007、F-008 | 关联交互:IX-005
- 角色:采购管理员
- 前置条件:任务已完成第一趟试选并回传结果。
**用户故事**
作为采购管理员,我想要看一眼机器**实际勾选到**的规格和读到的价格,从而在它去下单之前
确认没选错。
**范围**
- 包含:需求与机器所选的逐项对照、单价与合计、规格面板截图、确认或退回。
- 不包含:在多个候选之间挑选(MVP 只有一个商品,多候选对照台是 V2)。
**验收场景**
1. 假如机器选到的颜色分类和尺码与我要的一致、合计没超上限,当我打开详情,那么各项
显示 ✓ 且确认按钮可用。
2. 假如机器选到的规格与我要的不符,当我打开详情,那么显示 ✗ 并说明哪一项不符,
**确认按钮禁用**,我只能退回或转人工。
3. 假如合计超出我设的上限,当我打开详情,那么显示超出多少且确认按钮禁用,
**不提供「仍然确认」入口**。
4. 假如价格读不到,那么任务根本不会进到这一步,而是直接转人工并说明原因。
### US-005 放心地授权一笔下单
- 优先级:P0 | 关联功能:F-008、F-009、F-010、F-017 | 关联交互:IX-005、IX-010、IX-011
- 角色:采购管理员
- 前置条件:任务处于等待确认,已看过试选结果。
**用户故事**
作为采购管理员,我想要确认后签发一次授权,从而让系统去下单,同时确信它不会替我付钱,
也不会因为卡住而让任务永久停摆。
**范围**
- 包含:确认签发、锁定单价、退回不买、围栏前放弃、dry-run、提交围栏与结果调和。
- 不包含:审批链、多人会签、金额分级授权。
**验收场景**
1. 假如我提交授权,当系统接受,那么明确告知只创建待付款订单、付款需我在拼多多完成。
2. 假如授权时的单价是 32.50,当机器第二趟发现价格变了,那么它**停下来转人工**,
不会按新价照下——我确认的是那个价格,不是那个商品。
3. 假如一笔授权在提交围栏前卡住,当我需要重来,那么我可以放弃它,任务进入待重新试选。
假如围栏已经建立,则不能放弃或重试,只能核查这一次提交。
4. 假如授权自动过期,那么系统要求**重新试选取新价**后再确认,不复用旧价。
5. 假如我重复提交同一笔授权,那么只产生一笔订单。
6. 假如真实点击前网络超时、无法确认服务端是否已建立围栏,那么系统不点击并提示核查;
假如点击后结果不明,那么系统保留围栏并进入调和,绝不再点一次。
### US-006 付款前核对订单再花钱
- 优先级:P0 | 关联功能:F-009 收口 | 关联交互:IX-006
- 角色:采购管理员(采购执行员在拼多多完成人工付款并反馈结果)
- 前置条件:系统已创建待付款订单,任务状态为等待付款。
**用户故事**
作为采购执行员,我想要拿着系统给的几项去拼多多逐一核对,从而不会付错单。
**范围**
- 包含:展示订单截图、商品、规格、数量与授权金额;人付款后手工标记完成。
- 不包含:系统代付、免密支付、在拼多多改单、**自动回读核对(F-016,V2)**。
**验收场景**
1. 假如订单已创建,当我打开详情,那么我看到需要核对的项和设备回传的订单截图。
2. 假如各项都对得上,当我在拼多多付完款回来点「已付款」,那么任务转为已完成并记录
标记人与时间。
3. 假如金额或规格对不上,当我发现不一致,那么我能「标记异常」转人工,
**不能直接标记已付款**。
4. 假如订单截图缺失,那么系统不允许标记完成,直接转人工——**无证据不得收口**。
### US-007 管理身份和设备身份互不越权
- 优先级:P0 | 关联功能:F-013 | 关联交互:IX-001
- 角色:采购管理员
- 前置条件:系统有管理员账号与已授权设备各一。
**用户故事**
作为采购管理员,我想要设备只能做执行、不能做决策,从而即使设备凭据泄露也不会有人
凭它建单或改授权。
**验收场景**
1. 假如持有设备凭据,当尝试创建任务或签发授权,那么被拒绝并记录。
2. 假如持有管理会话,当尝试调用设备接口,那么被拒绝。
3. 假如设备凭据被撤销,当设备下次请求,那么立即失效且当前任务安全停止。
### US-008 任务出问题时知道该怎么办
- 优先级:P0 | 关联功能:F-011 | 关联交互:IX-008
- 角色:采购执行员
- 前置条件:任务执行中遇到异常。
**用户故事**
作为采购执行员,我想要看到具体卡在哪一步、为什么,从而知道是自己能处理还是要找管理员。
**验收场景**
1. 假如规格找不到精确匹配,那么系统说明缺的是颜色分类还是尺码、页面上有哪些可选值,
并转人工——**不选相近的**。
2. 假如规格面板上读不到单价,那么系统转人工并说明原因,
**不用商品详情页正文的数字凑合**。
3. 假如第二趟发现价格与授权价不一致,那么系统说明「授权 ¥X、现价 ¥Y」并转人工,
既不按新价下单,也不自动放弃。
4. 假如遇到验证码或风控,那么系统立即停止、保留截图、转人工,**不尝试绕过**。
5. 假如点击提交订单后无法判断是否已创建,那么系统转人工并提示「订单可能已创建、
支付未完成」,进入同一提交记录的调和,**不自动重试、不释放围栏**。
## 四、交付前检查
- [ ] 每个 P0 功能至少关联一个 US 编号。
- [ ] 每个故事说明角色、目标、价值和可验证的验收场景。
- [ ] UI 故事已关联对应 IX 编号。
- [ ] 故事没有复制接口、字段或组件实现细节。
- [ ] 范围、优先级与[需求](02-requirements.md)一致。