I2.06.3cancel disposition of partial work设计

取消后需说明已完成部分的处置

别名: 取消后部分结果 · 半完成处置 · partial work after abort

概念解释

长加载经常不是原子的:四十张图传了二十五、导出写了一半文件、同步已经改了本地若干条。取消把未完成的停掉之后,已经完成的那截怎么处置仍然是一个状态问题。不说清,人会按最省事的模型猜——全部作废,或全部保留——而系统往往是第三种:一部分留下、一部分回滚、临时文件还在。说明处置,是取消语义的收尾,不是礼貌。

机制

部分完成会在三个地方留下痕迹:远端(已写入的行、已扣的额度)、本地(缓存、草稿、临时文件)、界面(已经画出来的块)。取消中止的是「继续」,不是自动选择这三处的清理策略。策略有几类:全部回滚到开始前;保留已成功的、丢弃未成功的;把半成品标成可恢复的草稿。无论哪类,人都无法从「等待皮消失」读出来,因为消失只编码了「停」。停之后的世界需要一句新的状态:保留了什么、丢了什么、能不能接着干。

不说明的伤害是后续操作建在错误前提上。以为没上传,又传一次,变成重复;以为已经上传,去分享,其实文件是半截;以为扣款回滚了,账单上还有一笔。处置说明把取消从「负向的进度」变成一次完整的状态转移。

边界

纯读取、无本地痕迹的查询,取消后可以没有处置文案,回到取消前的界面即是说明。一次性、没有部分态的请求(整份替换还没开始写)同理。部分态一旦可能被另一次会话看见(已写入服务器的草稿、已出现在别人列表里的半条),必须说,哪怕处置是「已撤回,对方可能短暂看见过」。回滚本身会失败,那时说明要变成「取消了继续,但已写入的部分没能撤掉,去那里处理」,不能假装回滚成功。不要在处置里塞重试策略的细则,那是失败重试那一组的事;这里只交代这一次停下来之后世界变成什么样。

怎么落地

  • 取消成功后用一句状态说清:已保存 n 项 / 未写入任何改动 / 临时文件已删除 / 可从草稿继续。
  • 有可恢复半成品时,给出入口,而不是只说「已取消」让人去翻目录。
  • 远端可能仍短暂可见的部分,承认可见窗口,不要写「从未发生」。
  • 验证:在 60% 处取消一次上传或同步,问旁边的人「现在服务器上有什么、本地有什么」。答不出或答错,就是处置没被说明。再检查实际痕迹是否与那句话一致。

延伸

  • 同组I2.06.1 长等待必须可取消 · I2.06.2 取消需真正中止而非仅隐藏
  • 相邻I3.07 后台任务 · I3.02 乐观更新 · I2.08 加载失败
  • 站内检索partial work disposition · cancel leftover · abort cleanup

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/I2.06.3