Files

3.0 KiB

失败插入卡片重试与删除

背景

图片或附件插入失败后,消息内卡片目前只显示“插入失败”,用户既不能在原位重试,也不能清理该失败项,只能重新组织消息或容忍残留卡片。

目标

为失败插入卡片提供“重试”和“删除”两个就地操作,使失败可恢复、残留可清理,同时保持原消息文本和其他附件不变。

用户故事

  • 作为发送图片/附件的用户,我可以点击“重试”,沿用原失败项再次执行插入,不必重新选择文件。
  • 作为发送图片/附件的用户,我可以点击“删除”,只移除目标失败项,不影响同一消息中的文本和其他附件。
  • 作为键盘或辅助技术用户,我可以识别按钮用途和重试中的忙碌状态。

功能要求

  1. 仅状态为失败的插入卡片展示“重试”和“删除”操作。
  2. 重试必须以失败项的稳定标识为目标,复用现有插入链路及原始附件数据。
  3. 重试开始后卡片进入处理中状态;在请求完成前禁用重复重试和删除,并暴露可访问的忙碌状态。
  4. 重试成功后,卡片按现有成功状态渲染,不再展示失败操作。
  5. 重试再次失败后,卡片恢复失败操作,并显示既有或更明确的失败原因。
  6. 删除只移除目标失败项;同名附件、其他附件、消息文本及其他消息不得受影响。
  7. 操作必须遵循现有状态持久化边界:若失败项已持久化,刷新后仍能正确重试/删除;若现有设计只保存于客户端,则不得伪造跨刷新保证。
  8. 事件处理必须防止重复绑定和并发提交。

视觉与交互

  • 两个操作放在失败状态附近,文本分别为“重试”“删除”。
  • “重试”为主要恢复操作,“删除”为克制的危险操作;不引入与当前卡片风格冲突的大面积按钮。
  • 重试期间显示明确的处理中反馈,并设置 disabled 与 aria-busy(或等价可访问语义)。
  • 按钮应支持键盘聚焦与激活,并具有明确的可访问名称。

非目标

  • 不重构整个消息或附件系统。
  • 不删除用户本地原始文件,也不清理与目标失败项无关的服务器资源。
  • 不新增独立的附件管理面板。
  • 不改变成功卡片和进行中卡片的既有操作语义。

验收标准

  • 失败卡片可见两个操作,其他状态不可见。
  • 连续快速点击重试只产生一次有效插入请求。
  • 成功、再次失败、删除三个分支均有自动化测试。
  • 删除一项后,同消息中的文字和其他附件保持不变。
  • 定向测试、相关回归和语法/静态检查通过,单次测试最长 60 秒。
  • 最终差异不覆盖工作区中已有的“独立任务看板”改动。

实施隔离

.trellis/.current-task 当前属于另一个活动会话。本任务不切换该全局指针;实施与检查代理必须显式读取本目录下的 prd.md、上下文清单和研究材料。