Files
cmroubao/docs/08-interaction-checklist.md
T

17 KiB
Raw Blame History

交互清单

本文把 P0 用户故事转换成可实现、可测试的 Web 和 Android 行为。页面入口见 路由,接口字段见 API。

交互总表

ID 用户故事 页面/组件 触发 预期结果 优先级 状态
IX-001 US-007 管理 Web 登录 提交账号密码 建立管理会话或显示通用错误 P0 已定
IX-002 US-001 新建任务表单 填写并提交 创建 PENDING 任务 P0 已定
IX-003 US-002 任务列表/详情 打开、刷新、取消 查看最新状态、证据和允许动作 P0 已定
IX-004 US-007 App 登录/设备绑定 登录或会话恢复 建立人员+设备身份 P0 T-206 已实现
IX-005 US-003 App 任务页 点击“获取任务” 就绪检查后领取一条任务或显示原因 P0 T-206 已实现
IX-006 US-004 App 执行页 确认开始/自动步骤 显示步骤并有界执行搜索与候选判断 P0 已定
IX-007 US-005 App 候选确认 接受/拒绝/转人工 停止自动化并回传人员结论 P0 已定
IX-008 US-006 App/管理端错误状态 自动失败、取消、重试上传 显示结构化原因和恢复动作 P0 已定
IX-009 US-008 App 候选理由/管理端决策详情 接受、拒绝、改选或修正 保存逐候选结构化人工标签 P1 T-208 已实现
IX-010 US-009 App 独立执行设置/同步状态 配置模式、离线执行或补报 授权内独立执行并可审计同步 P0 T-206 离线控制已实现,结果补报待 T-207
IX-011 US-010 Admin 候选授权/App 订单执行 选择候选并授权、设备领取执行 创建一笔可对账的待付款订单并提醒人工付款 P0 T-215 至 T-219 已完成
IX-012 US-011 Admin 货运导入/列表/详情 输入完整单号或日期区间并同步 幂等保存货运头与全部商品明细,显示同步结果 P0 T-220 至 T-224
IX-013 US-012 Admin 货运商品明细 核对来源字段、补充参考图并生成 创建或重放同一采购任务,不覆盖来源/任务历史 P0 T-223

IX-001 管理 Web 登录

  • 页面:/login
  • 角色:采购管理员
  • 前置条件:种子管理账号已建立。
  • 服务依赖:管理会话创建。
  • 关联原型:管理登录(T-202)。

正常路径

  1. 用户输入账号和密码并提交。
  2. 提交期间按钮禁用并显示进度,密码不回显。
  3. 成功后进入原目标页或 /tasks。

状态与异常

  • 默认:账号框自动聚焦;密码可切换显示但默认隐藏。
  • 校验:空字段在字段附近提示;服务端仍执行完整校验。
  • 失败:统一显示“账号或密码不正确”,不暴露账号是否存在。
  • 网络错误:保留账号,清空密码,允许重试。
  • 会话过期:跳转登录并保留安全的返回路径。

可访问性

  • 标签与输入框显式关联;错误摘要可被读屏感知。
  • Enter 提交;焦点移到首个错误字段。

IX-002 创建采购任务

  • 页面:/tasks/new
  • 角色:采购管理员
  • 服务依赖:POST /api/v1/assets、POST /api/v1/tasks
  • 关联原型:新建任务(T-202)。

正常路径

  1. 输入标题、SKU、描述、数量、可选商品总预算并选择一张图片。
  2. 浏览器展示图片预览、文件名和大小。
  3. 提交期间锁定重复提交并显示“正在创建”。
  4. 成功后进入任务详情,显示编号和 PENDING。

状态与异常

  • 标题和 SKU 必填,描述可空;数量默认 1,只接受正整数。
  • 商品总预算为空表示不设置上限;填写时表示当前任务全部数量的商品金额上限。
  • 图片类型、大小或解码失败时在图片控件旁提示。
  • 上传成功但创建失败时重用已上传 asset,不重复上传。
  • 网络状态不确定时使用幂等键查询结果,不直接再创建。
  • 离开含未提交内容的表单时提示确认。

可访问性与小屏

  • 字段错误使用文本说明,不只使用颜色。
  • 图片选择有可访问名称;预览提供来源文件名。
  • 小屏下表单单列,提交按钮不遮挡最后一个字段。

IX-003 查看任务与证据

  • 页面:/tasks、/tasks/{id}
  • 角色:采购管理员
  • 服务依赖:任务列表、详情、取消和资产读取 API。
  • 关联原型:任务列表、 任务详情(T-202)。

正常路径

  1. 列表按最近创建时间展示编号、标题、状态、设备和更新时间。
  2. 进入详情查看原始输入、状态时间线、AI 派生结果、候选和证据。
  3. 仅 PENDING/允许状态展示取消命令,取消前二次确认。

状态与异常

  • 加载:保留页面框架和筛选条件,显示明确进度。
  • 空状态:说明还没有任务并提供“新建任务”入口。
  • 失败:保留上一次内容但标明可能过期,提供重试。
  • 权限不足/不存在:分别处理,但都不泄露任务内容。
  • 截图加载失败:显示占位和重试,不影响其他证据查看。
  • SUCCEEDED 详情必须醒目展示“验证完成,未提交订单”。

可访问性

  • 状态同时使用文字,不只用颜色。
  • 时间线使用有序列表语义;图片有描述性替代文本。
  • 列表在窄屏转换为可扫描行,不使用水平溢出遮挡操作。

IX-004 App 登录与设备绑定

  • 页面:Android“登录/设备绑定”
  • 角色:采购执行员
  • 服务依赖:POST /api/v1/auth/token、设备心跳。
  • 关联原型:App 登录、 设备设置(T-202)。

正常路径

  1. 用户输入采购账号并确认后端已预授权的当前设备身份。
  2. 成功后令牌存入 Android 安全存储,进入任务页。
  3. App 上报版本和就绪能力,不上传敏感设备内容。

状态与异常

  • 账号或设备被禁用:解释联系管理员,不反复重试。
  • 未预授权、token 错误或已绑定其他采购员的设备不能在 App 中“重新登记”,联系 管理员重新预置。
  • 网络错误:保留非敏感账号字段,密码清空。
  • 会话恢复失败:退出到登录页;活跃任务先查询服务端再决定状态。
  • 退出登录:有运行任务时禁止直接退出,先安全停止。T-204 只实现服务端 token 签发和验证;本地清除与服务端撤销接入属于 T-206。

可访问性

  • 支持系统字体缩放;输入与错误不重叠。
  • 软键盘不遮挡提交按钮,返回键不会静默丢失运行状态。

IX-005 手动获取任务

  • 页面:Android“任务”
  • 角色:采购执行员
  • 服务依赖:设备预检、POST /api/v1/tasks/claim-next
  • 关联原型:任务主页、 任务预览、 设备设置(T-202)。

正常路径

  1. 页面显示无障碍、拼多多、网络和当前任务的就绪状态。
  2. 全部就绪时“获取任务”可用;点击后立即禁用防重复。
  3. 成功后展示任务预览和“开始采购”,此时状态为 CLAIMED。

状态与异常

  • 无任务:显示安静的空状态和手动刷新,不循环弹错。
  • 权限缺失:提供打开对应系统设置的命令。
  • 已有任务:显示“继续任务”,不再领取。
  • 请求超时:保留请求前已安全保存的 claim token/幂等 key,先用同一请求重放并通过 heartbeat 对比服务端活跃任务,再允许生成新请求。
  • 租约到期:预览页提示任务已释放,返回任务页。

可访问性

  • 就绪状态使用图标加文字;系统设置命令有明确名称。
  • 主要控件满足 Android 最小触控区域,加载不改变控件尺寸。

IX-006 执行采购任务

  • 页面:Android“任务执行”及拼多多前台
  • 角色:采购执行员
  • 服务依赖:start、heartbeat、App 本地 AI、event API 和 Android 自动化。
  • 关联原型:任务预览、 任务执行(T-202)。

正常路径

  1. 用户检查原始需求并点击“开始采购”。
  2. App 启动前台服务,进入预检并显示当前步骤。
  3. 解析需求,打开拼多多,搜索并检查最多 5 个候选。
  4. 每一步上报事件;找到结果后进入 WAITING_CONFIRMATION。

状态与异常

  • 运行中禁止第二次开始;持续通知提供“返回任务”和“停止”。
  • App 切换到拼多多时,通知是回到执行页的稳定入口。
  • 用户请求停止后进入“正在安全停止”,不立即在动作中间销毁状态。
  • 进程重启时查询任务和 execution;无法证明可安全恢复则标记失败。
  • 验证码、风控、登录、支付和未知页面立即停止,不展示“自动继续”。
  • AI 超时最多按配置重试;输出无效或低置信度转人工。
  • 候选商品价乘以任务数量达到总预算上限校验失败,或运费/优惠导致总价无法确认时, 不能进入接受状态。

可访问性与反馈

  • 当前步骤使用文字和进度列表,不显示虚假百分比。
  • 错误、暂停和等待人工使用不同语义,不只依赖颜色。
  • 通知操作名称明确;动态更新通过适度的 live region/无障碍播报。

IX-007 人工确认候选

  • 页面:Android“候选确认”
  • 角色:采购执行员
  • 服务依赖:POST /api/v1/tasks/{id}/complete
  • 关联原型:候选确认、 任务结果(T-202)。

正常路径

  1. 展示原始需求、候选标题/价格、匹配项、缺失项和证据截图。
  2. 用户选择“接受候选”“拒绝候选”或“需人工处理”。
  3. 每种选择要求确认并填写简短人工原因;这满足 T-207 第一版审计,不冒充结构化 优化标签。
  4. 结果幂等回传,页面显示“验证完成,未提交订单”。

状态与异常

  • 没有候选时只允许确认“无匹配”或“需人工处理”。
  • 存在商品总价超预算、最终商品金额无法确认或关键属性未知时禁用“接受候选”并 说明原因。
  • 回传超时:保留选择和原因,查询最终状态后再重试。
  • 返回键不能恢复自动点击;等待确认一旦到达就是硬停止点。
  • 所有结果都写入 order_submitted=false。

可访问性

  • 候选信息按标题、价格、匹配和风险分组。
  • 确认对话框默认焦点在取消;破坏性/拒绝动作不能与接受动作混淆。

IX-008 失败、取消和恢复

正常路径

  1. 系统停止动作,保存失败步骤和错误类别。
  2. App 显示发生了什么、是否已停止和建议下一步。
  3. 证据上传成功后,管理详情显示相同结论。

状态与异常

  • 上传失败:本地加密/受控保留待传证据,显示“结果待同步”。
  • 取消:说明不会自动恢复;服务端终态后清理前台服务。
  • 可恢复设备问题:只提供“修复后重新领取/新建尝试”,不原地猜测继续。
  • 安全错误 SAFETY_* 不允许自动重试。
  • 清理本地证据仅在服务端确认接收或超过明确保留策略后发生。

验收证据

  • 每类错误至少有一个自动化或 fake 测试。
  • 验证码/未知页/支付边界至少在受控环境各验证一次安全停止。

IX-009 结构化候选理由

  • 页面:Android“候选确认”、管理 Web“任务详情/候选决策”。
  • 角色:采购执行员、采购管理员/优化人员。
  • 前置条件:T-207 第一版流程和 T-208 reason schema 已完成。
  • 服务依赖:已实现的 T-208 幂等 human review API。

正常路径

  1. 用户选择接受项、逐项拒绝、改选或全部无匹配。
  2. 每个决定至少选择一个结构化理由,并明确一个主要理由;备注默认可选。
  3. 选择“其他”时显示 4-200 字备注输入;没有预算时不显示预算类理由。
  4. 改选时先确认原推荐项拒绝理由,再确认替代项选择理由。
  5. 全部拒绝时逐候选确认;允许勾选多个候选后显式批量应用相同理由。
  6. 提交后显示人工结论、模型判断和系统推荐三个独立区块,不合并文案。

状态与异常

  • 模型理由可以只读展示,但不得预选为人工理由。
  • 网络失败保留本地草稿和独立幂等 key;查询服务端后决定是否重放。
  • 修改已提交结论时明确提示“创建修订版本”,不能覆盖原记录。
  • 理由码失效或与任务不适用时由服务端拒绝并要求重新选择。

可访问性

  • 理由使用 checkbox/radio 和明确 label,不依赖颜色;主要理由可用单选控件指定。
  • 批量应用前显示候选数量和标题摘要,默认不选中。

IX-010 App 独立执行与同步

  • 页面:Android“设备设置”“任务执行”和“结果同步”。
  • 角色:采购执行员。
  • 前置条件:设备已绑定;后台任务已领取。
  • 服务依赖:T-206 有限离线授权;T-207 Keystore provider 配置和加密 outbox。

正常路径

  1. 设置页选择 MANUAL_FIRST 或 AI_ASSISTED。AI 模式复用 Roubao 现有 provider、 model、Base URL 和 Key 配置,Key 默认隐藏。
  2. 开始后台任务时固定本次 execution 的模式及非秘密 provenance;任务 payload 不能 改写本地 provider 设置。
  3. 管理后端断开时,执行页显示“离线执行”、服务端授权截止时间和待同步项目数;授权 内继续本地 workflow。
  4. 恢复连接后先同步任务归属和取消状态,再按依赖顺序幂等上传事件、证据和终态结果。

状态与异常

  • 旧明文 Key 迁移失败或 Keystore 不可用:禁用真实 VLM 调用,允许用户显式改用 MANUAL_FIRST,不能静默切换。
  • 远程 provider 非 HTTPS、发生重定向或输出无效:停止 AI 分支并转人工,不影响已有 outbox 和任务证据。
  • 离线授权剩余 5 分钟时持续显示警告;到期时在安全检查点停止,不提供“继续离线”。
  • 离线期间无法保证即时接收管理取消;恢复连接后收到取消必须先停止再上传。
  • 结果补报失败保留加密本地记录和原幂等 key;不能恢复终态后的自动化。
  • App 可以显示 provider 名称和模型,但不得回显 Key、Authorization 或完整敏感 URL。

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/数量/价格不一致、地址/运费/优惠导致金额不确定时停止, 不提交订单。
  • 页面要求添加地址、最终按钮不是唯一的“提交订单”或出现免密/自动扣款语义时停止。
  • 提交响应超时或页面未知时显示“正在对账”,禁止再次提交;没有唯一新订单时转人工。
  • 页面和 App 都不能提供自动付款按钮。

可访问性

  • 候选使用带完整 label 的 radio;理由用 select/radio,不依赖颜色或图片顺序。
  • 授权按钮文案包含动作结果,确认对话框默认焦点在取消。
  • 状态更新不改变候选卡和按钮尺寸,错误与待付款提醒可被读屏读取。

通用交互约束

  • Web 和 App 的所有提交都防重复,网络超时后以服务端状态为准。
  • 状态名称使用用户可理解中文,同时保留稳定机器状态码。
  • 不在 UI 暴露模型密钥、设备令牌、内部堆栈或文件绝对路径。
  • 字体放大、窄屏、软键盘和系统返回操作下,主要命令和错误不能被遮挡。
  • P0 页面实现前按 design/README.md 生成低保真原型并人工确认。