减少相互覆盖的关键不是禁止多人编辑,而是把同一页面的改动拆成互不重叠的层:结构层、内容层、元信息层分别由不同人负责,并用短周期的锁定约定代替长期占有。下面用一个假设情境说明判断过程。
假设一个产品落地页需要同时做三件事:A编辑重写正文段落,B编辑调整标题和描述,C编辑修改页面内的模块顺序。如果三人各自在同一个文件里直接保存,最可能出现的不是冲突提示,而是后保存的人把前一个人的改动整段覆盖,而且覆盖往往发生在不同区域,事后很难判断哪一版才是完整的。
这个情境的边界要写清楚:它适用于同一页面、同一文件、改动区域可能重叠的情况。如果三人改的是不同页面,或者页面由模板统一生成、各自只改数据字段,覆盖风险会明显下降,下面的做法就不必照搬。
把改动按层归类,比按人分任务更有效。同一层内的改动最容易互相覆盖,跨层的改动通常可以并行。
如果A和B都在改元信息层,即使一个改标题、一个改描述,只要它们写在同一个配置块里,仍然可能互相覆盖。此时应把元信息层再拆成独立字段,或者约定同一时间段只由一人提交该层。
多人协作时,最容易被忽略的是“谁正在改”这个状态。可以做一个简单的占用记录,写在团队都能看到的位置,包含页面标识、占用层、开始时间和预计释放时间。
这个动作的作用是让后续编辑知道该等哪一层、可以先做哪一层。如果占用记录只写“有人在改这个页面”,后来者无法判断能否先改内容层,协调成本反而更高。
假设A先提交正文,B后提交标题和描述,C最后调整模块顺序。如果C的改动基于A提交前的版本,A的正文可能被带回旧状态。判断方法不是看提交时间,而是看C开始编辑时拉取的版本是否包含A的改动。
可区分的证据包括:改动记录里是否出现与本次任务无关的段落回退;同一段文字是否在两个版本间反复变化;元信息字段是否回到修改前的值。出现其中一项,说明提交顺序或基线版本出了问题,下一步应暂停该页面的并行改动,先统一到最新版本再继续。
需要说明的是,某次提交后页面表现变化,不能单独归因于覆盖。搜索需求波动、抓取时间差异、数据采集口径不同,都可能让前后比较出现偏差。把覆盖判断建立在版本记录上,比建立在表现数据上更可靠。
单个页面用占用记录就能应付,页面数量上升后会出现两个例外。第一,同一模板下的多个页面如果共用一个元信息配置,改动一个字段可能影响一批页面,此时按页面登记占用已经不够,需要按字段或按模板登记。第二,编辑人数增加后,等待释放的时间可能超过实际编辑时间,占用约定会变成瓶颈。
遇到这两种情况,判断依据是:改动是否跨页面生效,以及等待是否已经成为主要成本。如果是前者,把粒度从页面改为字段;如果是后者,改为按层分配固定时间段,而不是按人抢占。两种做法的前提不同,不能直接把小样本阶段的约定放大到全部页面。
在并行改动开始前,先让每位编辑写出自己将改动的层和具体字段,汇总后检查是否有两人落在同一字段。如果有,合并为一人执行或错开时间;如果没有,直接并行。改动完成后,用版本记录核对每个字段的最终值是否等于预期值,而不是只看页面能否正常打开。这一步的结果决定下一步是继续并行,还是需要把某一层单独拆出去。