2026-07-25 16:59:06 +08:00
|
|
|
|
# 交互清单
|
|
|
|
|
|
|
|
|
|
|
|
> 本文把 P0 用户故事转换成可实现、可测试的 Web 和 Android 行为。页面入口见
|
|
|
|
|
|
> [路由](routes.md),接口字段见 [API](api.md)。
|
|
|
|
|
|
|
|
|
|
|
|
## 交互总表
|
|
|
|
|
|
|
|
|
|
|
|
| ID | 用户故事 | 页面/组件 | 触发 | 预期结果 | 优先级 | 状态 |
|
|
|
|
|
|
| --- | --- | --- | --- | --- | --- | --- |
|
|
|
|
|
|
| IX-001 | US-007 | 管理 Web 登录 | 提交账号密码 | 建立管理会话或显示通用错误 | P0 | 已定 |
|
|
|
|
|
|
| IX-002 | US-001 | 新建任务表单 | 填写并提交 | 创建 `PENDING` 任务 | P0 | 已定 |
|
|
|
|
|
|
| IX-003 | US-002 | 任务列表/详情 | 打开、刷新、取消 | 查看最新状态、证据和允许动作 | P0 | 已定 |
|
2026-07-27 11:11:16 +08:00
|
|
|
|
| IX-004 | US-007 | App 登录/设备绑定 | 登录或会话恢复 | 建立人员+设备身份 | P0 | T-206 已实现 |
|
|
|
|
|
|
| IX-005 | US-003 | App 任务页 | 点击“获取任务” | 就绪检查后领取一条任务或显示原因 | P0 | T-206 已实现 |
|
2026-07-25 16:59:06 +08:00
|
|
|
|
| IX-006 | US-004 | App 执行页 | 确认开始/自动步骤 | 显示步骤并有界执行搜索与候选判断 | P0 | 已定 |
|
|
|
|
|
|
| IX-007 | US-005 | App 候选确认 | 接受/拒绝/转人工 | 停止自动化并回传人员结论 | P0 | 已定 |
|
|
|
|
|
|
| IX-008 | US-006 | App/管理端错误状态 | 自动失败、取消、重试上传 | 显示结构化原因和恢复动作 | P0 | 已定 |
|
2026-07-28 11:57:25 +08:00
|
|
|
|
| IX-009 | US-008 | App 候选理由/管理端决策详情 | 接受、拒绝、改选或修正 | 保存逐候选结构化人工标签 | P1 | T-208 已实现 |
|
2026-07-27 11:11:16 +08:00
|
|
|
|
| IX-010 | US-009 | App 独立执行设置/同步状态 | 配置模式、离线执行或补报 | 授权内独立执行并可审计同步 | P0 | T-206 离线控制已实现,结果补报待 T-207 |
|
2026-07-28 18:16:09 +08:00
|
|
|
|
| IX-011 | US-010 | Admin 候选授权/App 订单执行 | 选择候选并授权、设备领取执行 | 创建一笔可对账的待付款订单并提醒人工付款 | P0 | T-215 至 T-219 已完成 |
|
2026-07-28 22:39:18 +08:00
|
|
|
|
| IX-012 | US-011 | Admin 货运导入/列表/详情 | 输入完整单号或日期区间并同步 | 幂等保存货运头与全部商品明细,显示同步结果 | P0 | T-220 至 T-224 |
|
|
|
|
|
|
| IX-013 | US-012 | Admin 货运商品明细 | 核对来源字段、补充参考图并生成 | 创建或重放同一采购任务,不覆盖来源/任务历史 | P0 | T-223 |
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
## IX-001 管理 Web 登录
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:`/login`
|
|
|
|
|
|
- 角色:采购管理员
|
|
|
|
|
|
- 前置条件:种子管理账号已建立。
|
|
|
|
|
|
- 服务依赖:管理会话创建。
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[管理登录](design/admin-login.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 用户输入账号和密码并提交。
|
|
|
|
|
|
2. 提交期间按钮禁用并显示进度,密码不回显。
|
|
|
|
|
|
3. 成功后进入原目标页或 `/tasks`。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 默认:账号框自动聚焦;密码可切换显示但默认隐藏。
|
|
|
|
|
|
- 校验:空字段在字段附近提示;服务端仍执行完整校验。
|
|
|
|
|
|
- 失败:统一显示“账号或密码不正确”,不暴露账号是否存在。
|
|
|
|
|
|
- 网络错误:保留账号,清空密码,允许重试。
|
|
|
|
|
|
- 会话过期:跳转登录并保留安全的返回路径。
|
|
|
|
|
|
|
|
|
|
|
|
**可访问性**
|
|
|
|
|
|
|
|
|
|
|
|
- 标签与输入框显式关联;错误摘要可被读屏感知。
|
|
|
|
|
|
- Enter 提交;焦点移到首个错误字段。
|
|
|
|
|
|
|
|
|
|
|
|
## IX-002 创建采购任务
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:`/tasks/new`
|
|
|
|
|
|
- 角色:采购管理员
|
|
|
|
|
|
- 服务依赖:`POST /api/v1/assets`、`POST /api/v1/tasks`
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[新建任务](design/admin-task-create.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
2026-07-26 14:03:32 +08:00
|
|
|
|
1. 输入标题、SKU、描述、数量、可选商品总预算并选择一张图片。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
2. 浏览器展示图片预览、文件名和大小。
|
|
|
|
|
|
3. 提交期间锁定重复提交并显示“正在创建”。
|
|
|
|
|
|
4. 成功后进入任务详情,显示编号和 `PENDING`。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
2026-07-26 14:03:32 +08:00
|
|
|
|
- 标题和 SKU 必填,描述可空;数量默认 1,只接受正整数。
|
|
|
|
|
|
- 商品总预算为空表示不设置上限;填写时表示当前任务全部数量的商品金额上限。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
- 图片类型、大小或解码失败时在图片控件旁提示。
|
|
|
|
|
|
- 上传成功但创建失败时重用已上传 asset,不重复上传。
|
|
|
|
|
|
- 网络状态不确定时使用幂等键查询结果,不直接再创建。
|
|
|
|
|
|
- 离开含未提交内容的表单时提示确认。
|
|
|
|
|
|
|
|
|
|
|
|
**可访问性与小屏**
|
|
|
|
|
|
|
|
|
|
|
|
- 字段错误使用文本说明,不只使用颜色。
|
|
|
|
|
|
- 图片选择有可访问名称;预览提供来源文件名。
|
|
|
|
|
|
- 小屏下表单单列,提交按钮不遮挡最后一个字段。
|
|
|
|
|
|
|
|
|
|
|
|
## IX-003 查看任务与证据
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:`/tasks`、`/tasks/{id}`
|
|
|
|
|
|
- 角色:采购管理员
|
|
|
|
|
|
- 服务依赖:任务列表、详情、取消和资产读取 API。
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[任务列表](design/admin-task-list.html)、
|
|
|
|
|
|
[任务详情](design/admin-task-detail.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 列表按最近创建时间展示编号、标题、状态、设备和更新时间。
|
|
|
|
|
|
2. 进入详情查看原始输入、状态时间线、AI 派生结果、候选和证据。
|
|
|
|
|
|
3. 仅 `PENDING`/允许状态展示取消命令,取消前二次确认。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 加载:保留页面框架和筛选条件,显示明确进度。
|
|
|
|
|
|
- 空状态:说明还没有任务并提供“新建任务”入口。
|
|
|
|
|
|
- 失败:保留上一次内容但标明可能过期,提供重试。
|
|
|
|
|
|
- 权限不足/不存在:分别处理,但都不泄露任务内容。
|
|
|
|
|
|
- 截图加载失败:显示占位和重试,不影响其他证据查看。
|
|
|
|
|
|
- `SUCCEEDED` 详情必须醒目展示“验证完成,未提交订单”。
|
|
|
|
|
|
|
|
|
|
|
|
**可访问性**
|
|
|
|
|
|
|
|
|
|
|
|
- 状态同时使用文字,不只用颜色。
|
|
|
|
|
|
- 时间线使用有序列表语义;图片有描述性替代文本。
|
|
|
|
|
|
- 列表在窄屏转换为可扫描行,不使用水平溢出遮挡操作。
|
|
|
|
|
|
|
|
|
|
|
|
## IX-004 App 登录与设备绑定
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:Android“登录/设备绑定”
|
|
|
|
|
|
- 角色:采购执行员
|
|
|
|
|
|
- 服务依赖:`POST /api/v1/auth/token`、设备心跳。
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[App 登录](design/android-login.html)、
|
|
|
|
|
|
[设备设置](design/android-settings.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
2026-07-26 15:18:48 +08:00
|
|
|
|
1. 用户输入采购账号并确认后端已预授权的当前设备身份。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
2. 成功后令牌存入 Android 安全存储,进入任务页。
|
|
|
|
|
|
3. App 上报版本和就绪能力,不上传敏感设备内容。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 账号或设备被禁用:解释联系管理员,不反复重试。
|
2026-07-26 15:18:48 +08:00
|
|
|
|
- 未预授权、token 错误或已绑定其他采购员的设备不能在 App 中“重新登记”,联系
|
|
|
|
|
|
管理员重新预置。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
- 网络错误:保留非敏感账号字段,密码清空。
|
|
|
|
|
|
- 会话恢复失败:退出到登录页;活跃任务先查询服务端再决定状态。
|
2026-07-26 15:18:48 +08:00
|
|
|
|
- 退出登录:有运行任务时禁止直接退出,先安全停止。T-204 只实现服务端 token
|
|
|
|
|
|
签发和验证;本地清除与服务端撤销接入属于 T-206。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**可访问性**
|
|
|
|
|
|
|
|
|
|
|
|
- 支持系统字体缩放;输入与错误不重叠。
|
|
|
|
|
|
- 软键盘不遮挡提交按钮,返回键不会静默丢失运行状态。
|
|
|
|
|
|
|
|
|
|
|
|
## IX-005 手动获取任务
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:Android“任务”
|
|
|
|
|
|
- 角色:采购执行员
|
|
|
|
|
|
- 服务依赖:设备预检、`POST /api/v1/tasks/claim-next`
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[任务主页](design/android-task-home.html)、
|
|
|
|
|
|
[任务预览](design/android-task-preview.html)、
|
|
|
|
|
|
[设备设置](design/android-settings.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 页面显示无障碍、拼多多、网络和当前任务的就绪状态。
|
|
|
|
|
|
2. 全部就绪时“获取任务”可用;点击后立即禁用防重复。
|
|
|
|
|
|
3. 成功后展示任务预览和“开始采购”,此时状态为 `CLAIMED`。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 无任务:显示安静的空状态和手动刷新,不循环弹错。
|
|
|
|
|
|
- 权限缺失:提供打开对应系统设置的命令。
|
|
|
|
|
|
- 已有任务:显示“继续任务”,不再领取。
|
2026-07-26 16:16:36 +08:00
|
|
|
|
- 请求超时:保留请求前已安全保存的 claim token/幂等 key,先用同一请求重放并通过
|
|
|
|
|
|
heartbeat 对比服务端活跃任务,再允许生成新请求。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
- 租约到期:预览页提示任务已释放,返回任务页。
|
|
|
|
|
|
|
|
|
|
|
|
**可访问性**
|
|
|
|
|
|
|
|
|
|
|
|
- 就绪状态使用图标加文字;系统设置命令有明确名称。
|
|
|
|
|
|
- 主要控件满足 Android 最小触控区域,加载不改变控件尺寸。
|
|
|
|
|
|
|
|
|
|
|
|
## IX-006 执行采购任务
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:Android“任务执行”及拼多多前台
|
|
|
|
|
|
- 角色:采购执行员
|
2026-07-27 09:43:04 +08:00
|
|
|
|
- 服务依赖:start、heartbeat、App 本地 AI、event API 和 Android 自动化。
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[任务预览](design/android-task-preview.html)、
|
|
|
|
|
|
[任务执行](design/android-task-running.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 用户检查原始需求并点击“开始采购”。
|
|
|
|
|
|
2. App 启动前台服务,进入预检并显示当前步骤。
|
|
|
|
|
|
3. 解析需求,打开拼多多,搜索并检查最多 5 个候选。
|
|
|
|
|
|
4. 每一步上报事件;找到结果后进入 `WAITING_CONFIRMATION`。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 运行中禁止第二次开始;持续通知提供“返回任务”和“停止”。
|
|
|
|
|
|
- App 切换到拼多多时,通知是回到执行页的稳定入口。
|
|
|
|
|
|
- 用户请求停止后进入“正在安全停止”,不立即在动作中间销毁状态。
|
|
|
|
|
|
- 进程重启时查询任务和 execution;无法证明可安全恢复则标记失败。
|
|
|
|
|
|
- 验证码、风控、登录、支付和未知页面立即停止,不展示“自动继续”。
|
|
|
|
|
|
- AI 超时最多按配置重试;输出无效或低置信度转人工。
|
2026-07-26 14:03:32 +08:00
|
|
|
|
- 候选商品价乘以任务数量达到总预算上限校验失败,或运费/优惠导致总价无法确认时,
|
|
|
|
|
|
不能进入接受状态。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**可访问性与反馈**
|
|
|
|
|
|
|
|
|
|
|
|
- 当前步骤使用文字和进度列表,不显示虚假百分比。
|
|
|
|
|
|
- 错误、暂停和等待人工使用不同语义,不只依赖颜色。
|
|
|
|
|
|
- 通知操作名称明确;动态更新通过适度的 live region/无障碍播报。
|
|
|
|
|
|
|
|
|
|
|
|
## IX-007 人工确认候选
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:Android“候选确认”
|
|
|
|
|
|
- 角色:采购执行员
|
|
|
|
|
|
- 服务依赖:`POST /api/v1/tasks/{id}/complete`
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[候选确认](design/android-candidate-confirm.html)、
|
|
|
|
|
|
[任务结果](design/android-task-result.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 展示原始需求、候选标题/价格、匹配项、缺失项和证据截图。
|
|
|
|
|
|
2. 用户选择“接受候选”“拒绝候选”或“需人工处理”。
|
2026-07-26 20:16:42 +08:00
|
|
|
|
3. 每种选择要求确认并填写简短人工原因;这满足 T-207 第一版审计,不冒充结构化
|
|
|
|
|
|
优化标签。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
4. 结果幂等回传,页面显示“验证完成,未提交订单”。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 没有候选时只允许确认“无匹配”或“需人工处理”。
|
2026-07-26 14:03:32 +08:00
|
|
|
|
- 存在商品总价超预算、最终商品金额无法确认或关键属性未知时禁用“接受候选”并
|
|
|
|
|
|
说明原因。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
- 回传超时:保留选择和原因,查询最终状态后再重试。
|
|
|
|
|
|
- 返回键不能恢复自动点击;等待确认一旦到达就是硬停止点。
|
|
|
|
|
|
- 所有结果都写入 `order_submitted=false`。
|
|
|
|
|
|
|
|
|
|
|
|
**可访问性**
|
|
|
|
|
|
|
|
|
|
|
|
- 候选信息按标题、价格、匹配和风险分组。
|
|
|
|
|
|
- 确认对话框默认焦点在取消;破坏性/拒绝动作不能与接受动作混淆。
|
|
|
|
|
|
|
|
|
|
|
|
## IX-008 失败、取消和恢复
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:Android“任务执行/结果”、Web 任务详情
|
|
|
|
|
|
- 角色:采购执行员、采购管理员
|
|
|
|
|
|
- 服务依赖:fail、event、asset API。
|
2026-07-26 13:19:16 +08:00
|
|
|
|
- 关联原型:[管理任务详情](design/admin-task-detail.html)、
|
|
|
|
|
|
[App 任务执行](design/android-task-running.html)、
|
|
|
|
|
|
[App 任务结果](design/android-task-result.html)(T-202)。
|
2026-07-25 16:59:06 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 系统停止动作,保存失败步骤和错误类别。
|
|
|
|
|
|
2. App 显示发生了什么、是否已停止和建议下一步。
|
|
|
|
|
|
3. 证据上传成功后,管理详情显示相同结论。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 上传失败:本地加密/受控保留待传证据,显示“结果待同步”。
|
|
|
|
|
|
- 取消:说明不会自动恢复;服务端终态后清理前台服务。
|
|
|
|
|
|
- 可恢复设备问题:只提供“修复后重新领取/新建尝试”,不原地猜测继续。
|
|
|
|
|
|
- 安全错误 `SAFETY_*` 不允许自动重试。
|
|
|
|
|
|
- 清理本地证据仅在服务端确认接收或超过明确保留策略后发生。
|
|
|
|
|
|
|
|
|
|
|
|
**验收证据**
|
|
|
|
|
|
|
|
|
|
|
|
- 每类错误至少有一个自动化或 fake 测试。
|
|
|
|
|
|
- 验证码/未知页/支付边界至少在受控环境各验证一次安全停止。
|
|
|
|
|
|
|
2026-07-26 20:16:42 +08:00
|
|
|
|
## IX-009 结构化候选理由
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:Android“候选确认”、管理 Web“任务详情/候选决策”。
|
|
|
|
|
|
- 角色:采购执行员、采购管理员/优化人员。
|
2026-07-28 11:57:25 +08:00
|
|
|
|
- 前置条件:T-207 第一版流程和 T-208 reason schema 已完成。
|
|
|
|
|
|
- 服务依赖:已实现的 T-208 幂等 human review API。
|
2026-07-26 20:16:42 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 用户选择接受项、逐项拒绝、改选或全部无匹配。
|
|
|
|
|
|
2. 每个决定至少选择一个结构化理由,并明确一个主要理由;备注默认可选。
|
|
|
|
|
|
3. 选择“其他”时显示 4-200 字备注输入;没有预算时不显示预算类理由。
|
|
|
|
|
|
4. 改选时先确认原推荐项拒绝理由,再确认替代项选择理由。
|
|
|
|
|
|
5. 全部拒绝时逐候选确认;允许勾选多个候选后显式批量应用相同理由。
|
|
|
|
|
|
6. 提交后显示人工结论、模型判断和系统推荐三个独立区块,不合并文案。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 模型理由可以只读展示,但不得预选为人工理由。
|
|
|
|
|
|
- 网络失败保留本地草稿和独立幂等 key;查询服务端后决定是否重放。
|
|
|
|
|
|
- 修改已提交结论时明确提示“创建修订版本”,不能覆盖原记录。
|
|
|
|
|
|
- 理由码失效或与任务不适用时由服务端拒绝并要求重新选择。
|
|
|
|
|
|
|
|
|
|
|
|
**可访问性**
|
|
|
|
|
|
|
|
|
|
|
|
- 理由使用 checkbox/radio 和明确 label,不依赖颜色;主要理由可用单选控件指定。
|
|
|
|
|
|
- 批量应用前显示候选数量和标题摘要,默认不选中。
|
|
|
|
|
|
|
2026-07-27 09:43:04 +08:00
|
|
|
|
## IX-010 App 独立执行与同步
|
2026-07-27 09:22:03 +08:00
|
|
|
|
|
2026-07-27 09:43:04 +08:00
|
|
|
|
- 页面:Android“设备设置”“任务执行”和“结果同步”。
|
|
|
|
|
|
- 角色:采购执行员。
|
|
|
|
|
|
- 前置条件:设备已绑定;后台任务已领取。
|
|
|
|
|
|
- 服务依赖:T-206 有限离线授权;T-207 Keystore provider 配置和加密 outbox。
|
2026-07-27 09:22:03 +08:00
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
2026-07-27 09:43:04 +08:00
|
|
|
|
1. 设置页选择 `MANUAL_FIRST` 或 `AI_ASSISTED`。AI 模式复用 Roubao 现有 provider、
|
|
|
|
|
|
model、Base URL 和 Key 配置,Key 默认隐藏。
|
|
|
|
|
|
2. 开始后台任务时固定本次 execution 的模式及非秘密 provenance;任务 payload 不能
|
|
|
|
|
|
改写本地 provider 设置。
|
|
|
|
|
|
3. 管理后端断开时,执行页显示“离线执行”、服务端授权截止时间和待同步项目数;授权
|
|
|
|
|
|
内继续本地 workflow。
|
|
|
|
|
|
4. 恢复连接后先同步任务归属和取消状态,再按依赖顺序幂等上传事件、证据和终态结果。
|
2026-07-27 09:22:03 +08:00
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
2026-07-27 09:43:04 +08:00
|
|
|
|
- 旧明文 Key 迁移失败或 Keystore 不可用:禁用真实 VLM 调用,允许用户显式改用
|
|
|
|
|
|
`MANUAL_FIRST`,不能静默切换。
|
|
|
|
|
|
- 远程 provider 非 HTTPS、发生重定向或输出无效:停止 AI 分支并转人工,不影响已有
|
|
|
|
|
|
outbox 和任务证据。
|
|
|
|
|
|
- 离线授权剩余 5 分钟时持续显示警告;到期时在安全检查点停止,不提供“继续离线”。
|
|
|
|
|
|
- 离线期间无法保证即时接收管理取消;恢复连接后收到取消必须先停止再上传。
|
|
|
|
|
|
- 结果补报失败保留加密本地记录和原幂等 key;不能恢复终态后的自动化。
|
|
|
|
|
|
- App 可以显示 provider 名称和模型,但不得回显 Key、Authorization 或完整敏感 URL。
|
2026-07-27 09:22:03 +08:00
|
|
|
|
|
2026-07-28 12:25:26 +08:00
|
|
|
|
## IX-011 Admin 候选授权与待付款订单
|
|
|
|
|
|
|
|
|
|
|
|
- 页面:管理 Web“任务详情/候选确认”、Android“等待授权/订单执行”。
|
|
|
|
|
|
- 角色:采购管理员、采购执行员。
|
|
|
|
|
|
- 服务依赖:T-215 order authorization、T-216 device command、T-217/T-218
|
|
|
|
|
|
订单自动化与对账。
|
|
|
|
|
|
|
|
|
|
|
|
**正常路径**
|
|
|
|
|
|
|
|
|
|
|
|
1. 任务进入 `WAITING_CONFIRMATION` 后,Admin 查看原始要求、候选标题/SKU/组合价格、
|
|
|
|
|
|
模型理由、candidate key 和详情/规格截图。
|
|
|
|
|
|
2. Admin 单选一个候选,为接受项和其余拒绝项选择结构化理由,并确认“只创建待付款
|
|
|
|
|
|
订单,不授权付款”。
|
|
|
|
|
|
3. 后端生成不可变 `PENDING_DELIVERY` 授权;设备领取后页面显示投递/执行进度。
|
|
|
|
|
|
4. Roubao 重新定位商品,复核 SKU/数量/价格后只提交一次,再从订单列表读取订单号
|
|
|
|
|
|
和下单时间。
|
|
|
|
|
|
5. Admin 显示“待人工确认付款”,提供订单号、时间和审计证据;人员切换拼多多付款。
|
|
|
|
|
|
|
|
|
|
|
|
**状态与异常**
|
|
|
|
|
|
|
|
|
|
|
|
- 候选证据不完整、任务版本变化、取消已请求或授权过期时禁用授权。
|
|
|
|
|
|
- 授权尚未投递时改选会创建修订版本;旧授权显示 `SUPERSEDED`,不能覆盖。
|
|
|
|
|
|
- 投递后不能静默改选;必须先走设备停止/撤销协议。
|
|
|
|
|
|
- 商品无法重新定位、SKU/数量/价格不一致、地址/运费/优惠导致金额不确定时停止,
|
|
|
|
|
|
不提交订单。
|
2026-07-28 16:56:17 +08:00
|
|
|
|
- 页面要求添加地址、最终按钮不是唯一的“提交订单”或出现免密/自动扣款语义时停止。
|
2026-07-28 12:25:26 +08:00
|
|
|
|
- 提交响应超时或页面未知时显示“正在对账”,禁止再次提交;没有唯一新订单时转人工。
|
|
|
|
|
|
- 页面和 App 都不能提供自动付款按钮。
|
|
|
|
|
|
|
|
|
|
|
|
**可访问性**
|
|
|
|
|
|
|
|
|
|
|
|
- 候选使用带完整 label 的 radio;理由用 select/radio,不依赖颜色或图片顺序。
|
|
|
|
|
|
- 授权按钮文案包含动作结果,确认对话框默认焦点在取消。
|
|
|
|
|
|
- 状态更新不改变候选卡和按钮尺寸,错误与待付款提醒可被读屏读取。
|
|
|
|
|
|
|
2026-07-25 16:59:06 +08:00
|
|
|
|
## 通用交互约束
|
|
|
|
|
|
|
|
|
|
|
|
- Web 和 App 的所有提交都防重复,网络超时后以服务端状态为准。
|
|
|
|
|
|
- 状态名称使用用户可理解中文,同时保留稳定机器状态码。
|
|
|
|
|
|
- 不在 UI 暴露模型密钥、设备令牌、内部堆栈或文件绝对路径。
|
|
|
|
|
|
- 字体放大、窄屏、软键盘和系统返回操作下,主要命令和错误不能被遮挡。
|
|
|
|
|
|
- P0 页面实现前按 [`design/README.md`](design/README.md) 生成低保真原型并人工确认。
|