H5.04.3handled items leave the bundle设计研究
已处理的条目需从聚合中移除
别名: 聚合剔除已处理 · 摘要过期 · stale bundle
概念解释
摘要是尚未处理的集合的窗口。人在通知上回复了、在应用里读了、在另一台设备上归档了,这些成员必须从堆里消失,条数和预览跟着变。处理完仍留在摘要里,卡片就变成谎言:看起来还有事,点开却没有。
这条管聚合的生命周期。它不是未读角标怎么计数,也不是历史里要不要留已消失的记录。
机制
人用摘要当待办。待办的语义是闭包:做完一项,集合变小。若闭包不发生,摘要从信号退化成装饰,之后的策略是整组划掉或永久不看。跨面同步尤其容易破:手机上回复了,手表和桌面的同一堆还在;应用内已读,系统栏仍显示旧预览。破的不是动画,是「这张卡片还代表工作」。
移除的粒度是成员,不是整卡。五条里处理了两条,应留下三条,而不是整卡消失或整卡不动。整卡消失会让未处理成员跟着死;整卡不动则奖励「反正怎么处理都不减」。
怎么研究
让人从摘要或应用内处理子集,观察其他表面的条数、预览和卡片是否在数秒内收敛。
自变量:处理发生在通知动作、应用内还是另一设备;是否只减计数不换预览。 因变量:陈旧成员残留时间、错误地点开「已无事」卡片的次数、整组误清率。
实验室单设备会漏掉跨面陈旧。至少要两面(手机 + 另一客户端)。不要用最终一致当合格——人在处理当下就会再看一眼栏,秒级仍显示旧堆会被读成系统没接到动作。
边界
离线队列可以晚几秒,但回到前台时应先收敛摘要再展示新到达。需要审计留痕的告警可以在栏里消失、在审计日志里仍在,两者不要混成同一张待办卡。用户「稍后处理」不是已处理,成员应留下或进入明确的延后集合,而不是当已读删掉。部分失败(归档成功、回复失败)应按失败的那一侧保留成员,不能整条乐观移除。
怎么落地
- 任何已读、已回复、已归档、已在其他设备完成的成员,从所有表面上的同一摘要剔除,并改写条数与最新预览。
- 子集处理不得拆掉整卡,也不得让卡片假装没变。
- 处理失败时把该成员留在堆里并标明未完成,不要先消失再弹回。
- 验证:摘要显示 5,在应用内读掉 2,立刻回头看通知栏。应变为 3 且预览不再是已读那两条。仍显示 5,或卡片消失却还有 3 条未读,生命周期就断了。