销售改了产品介绍,技术人员在早先打开的页面里修正规格。两个人都看到“保存成功”,最后销售的介绍却变回旧版。问题不是谁没有编辑权限,而是后保存的人携带了旧内容。可靠的多人编辑体验,应同时做到发现变化、保住尚未提交的工作,并让团队明确最终采用哪份内容。
先用一条时间线看清覆盖怎样发生
以下是虚构产品 P30 的示例。上午九点,甲和乙都打开第 12 版:介绍为“适用于场景 A”,交期为“10 个工作日”。甲把介绍改成“适用于场景 A、B”,先保存成第 13 版。乙仍看到第 12 版,把交期改成“15 个工作日”。
如果乙提交整个旧表单,服务器无条件接收,介绍也可能随之恢复为“适用于场景 A”。乙并没有主动删除甲的成果,却发生了丢失更新。同一个人开两个标签页也会遇到,不能只按员工数量判断是否需要保护。
版本核对可以识别这种旧基础上的保存。MDN 说明,If-Match 等条件更新机制可用于防止覆盖读取之后发生的变化;但界面仍要解释发生了什么、接下来怎么处理。只把“保存失败”换成一个状态码,不会帮助业务人员完成工作。
冲突时,应当比较三份内容
只展示“我的版本”和“最新版本”,员工可能仍不知道哪一项是别人刚改的。把开始编辑时的原始版本一起列出,才能判断双方各自改变了什么。继续上例:
| 字段 | 共同起点,第 12 版 | 当前已保存,第 13 版 | 乙尚未保存的输入 |
|---|---|---|---|
| 介绍 | 场景 A | 场景 A、B | 场景 A,乙未改 |
| 交期 | 10 个工作日 | 10 个工作日 | 15 个工作日 |
若介绍与交期在当前业务里确实互不依赖,经确认后可保留甲的新介绍与乙的新交期。乙没有改过介绍,就不应把旧值当作“乙明确选择恢复原文”。界面可以突出差异,但自动合并规则必须事先明确,不能仅凭两人的修改字段名称不同就决定安全。
如果甲也把交期改成 12 个工作日,而乙填了 15,就需要进一步核对哪一个有依据。较晚点击保存不意味着内容更准确。合理流程是保留双方修改,交由有权限的人确认最终值,并留下必要的修改说明。
字段不同,也可能存在同一个业务冲突
假设原规格为 1000 mm,甲把单位换成 m,并把数值换成 1;乙还在旧页面把数值改为 1200,意图仍是 1200 mm。如果合并时保留甲的单位和乙的数值,就会得到错误的 1200 m。按毫米换算,后者是 1,200,000 mm,与乙的意图相差一千倍。
价格与币种、数量与包装单位、型号与配套文件,也可能有类似关系。应把需要一起确认的字段作为业务组合处理。单位变化后,旧页面提交的数字不能脱离原来的含义直接采用;无法可靠转换时,应要求重新确认,而不是给出表面上整齐的合并结果。
这类判断不要求企业给开发方设计复杂算法,但需要把已知的关联规则说明白。对于不常发生的冲突,人工对照确认可能已足够;只有确实需要高频同时编辑的内容,才考虑更复杂的实时协作能力。
让用户能退出冲突,而不是被困在失败按钮旁
冲突提示应保留尚未保存的输入,并提供明确选择:查看最新内容、放弃本次修改,或在比较后重新提交。如果刷新页面就清空输入,员工可能为避免返工选择强行覆盖,反而扩大错误。
保存前应让用户知道哪些改动将被保留。重新确认后提交时,也要再次判断基础版本是否仍有效;如果第三个人期间又改了资料,不能因为刚才看过对照表就无条件写入。交付验收需要覆盖这个时间窗口,而不只是第一次冲突。
网络超时与版本冲突要区分。超时可能已经保存,只是结果没有返回;应先核对当前记录,再决定是否重试。重复点击“强制保存”不能成为默认恢复办法。若业务确实允许授权人员覆盖,应明确影响范围、保留历史,并避免把它放成最容易误点的选项。
编辑锁、历史记录和发布流程各自解决什么
提示“某人正在编辑”可以减少碰撞,但不等于旧页面再也不能保存。独占编辑也需要考虑断线、离开页面和锁何时释放;锁失效后,旧编辑者重新提交仍要经过相应核对。只显示一把锁的图标,不足以证明内容不会被覆盖。
修改历史帮助追溯谁在何时改了什么,不能代替保存时的防护。恢复旧版本也应视为基于当前状态的一次变更:如果只想找回一段介绍,应尽量核对这段差异,而不是连后来更新的联系方式一并恢复。恢复动作同样需要权限和结果确认。
有审核发布流程的网站,还要区分编辑版本与公开版本。乙保存后的资料可能仍待审核,不能向客户宣称已上线。审核人员应知道确认的是哪一版,后续编辑是否使原审核失效应有约定,避免批准一份内容后公开的却是另一份。
验收时有意制造顺序差异
在获准测试环境,用两位测试编辑者同时打开虚构资料:先保存甲,再保存乙,检查冲突提示及最终内容;交换保存顺序再做一次。分别测试修改同一字段、独立字段和数值单位组合,不能只看到两个保存按钮都成功就算通过。
随后验证输入保留、主动放弃、重新确认期间的第三次修改、网络结果未知、权限撤销和历史恢复。每次记录共同起点、各自意图、预期采用的值及最终回读。公开版本也应在授权范围内核对,不以后台保存提示代替发布结果。
团队最终应能回答:哪份资料现在有效,哪些修改没有采用,为什么需要再次确认。清楚的协作规则比一味减少提示更重要,也能避免员工在客户发现错误后再互相追问谁覆盖了谁。
网站经常出现旧内容覆盖新修改,可私聊客服说明资料类型、参与人员和冲突实例,沟通合适的版本提示、内容取舍与验收范围。
技术参考:MDN:If-Match 与丢失更新。