两者不能共用同一个队列,但也不该完全隔离。可行的做法是:合同内任务按交付里程碑占用固定产能,临时救火任务只占用预留缓冲,并且必须登记来源、影响范围和预计工时;如果救火任务连续占满缓冲,就要触发合同任务的重新承诺,而不是靠加班硬扛。缺少完整数据或权限时,至少可以先做一件事:把未来两周的任务按“合同承诺日期”和“实际阻塞程度”各标一列,再决定谁先排。这个动作能暴露排期冲突,但不能证明救火任务一定比合同任务更紧急,也不能推出延迟是由某一方造成的。
在怀化网络服务的实际排期里,常见矛盾是:临时救火任务带着“现在就要”的语气进来,合同内任务则带着明确的验收日期。前者容易插队,后者一旦被挤掉,往往在临近交付时才暴露风险。两种解释都成立:一种是救火任务确实影响线上可用性,必须优先;另一种是救火任务只是缺少提前规划,本可转为合同内变更。不能只凭“谁喊得响”判断优先级。
能区分这两种解释的证据,是救火任务是否伴随可验证的影响面:例如是否影响已上线页面的可访问性、是否阻塞表单提交、是否导致已承诺的投放无法落地。如果只有口头描述,没有影响面,就更接近规划缺口;如果有明确影响面,就应进入缓冲产能,并同步调整合同任务的承诺日期。
合同内任务适合用里程碑排期:把需求拆成可验收的节点,每个节点占用一段固定产能,节点之间留出返工余量。这样做的好处是,临时任务插入时,你能清楚看到被挤占的是哪个节点,而不是笼统地“往后拖几天”。
一个假设例子:某合同节点计划周三开始,需要客户提供栏目结构确认。如果确认未到,任务不是“延期”,而是“等待输入”。此时把救火任务放进缓冲,不会挤压该节点;但若确认已到、开发已开始,救火任务又占满缓冲,就必须重新承诺该节点日期。这个判断依赖输入是否到位,而不是依赖任务名称。
临时救火任务不应直接进入合同任务队列。更稳妥的流程是:先登记,再分级,最后决定占用缓冲还是触发变更。登记内容至少包括来源、影响对象、可验证现象、预计工时和是否可延后。缺少完整数据或权限时,仍然可以完成登记,只是无法立即确认根因。
这里的实际动作是登记影响面,它的结果会直接决定下一步:影响面明确,就进入缓冲并同步调整合同节点;影响面不明确,就先做最小验证,而不是直接拉长整个排期。最小验证可以是复现一次、检查一次输入是否完整、确认一次权限是否到位。这些动作不能证明根因,但能区分“需要立即处理”和“可以排队”。
排期争议往往不是缺方法,而是缺可区分的证据。下面三类证据能把“确实紧急”和“只是插队”分开:
需要说明的是,请求量、抓取量或某项统计归零,不能单独证明排期处理正确。它还可能来自统计口径变化、权限范围变化、采集延迟或任务本身尚未上线。把这些现象当作唯一依据,容易把“没看到”误判成“没问题”。
如果暂时拿不到完整后台数据或账号权限,仍然可以执行一个最小动作:用两列表格记录未来两周的任务,一列写合同承诺日期,一列写当前阻塞程度,再标出哪些任务在等待输入。这个动作不需要额外工具,也不需要完整数据。
它能带来的结果是:你能看到哪些合同任务其实在等待输入,哪些救火任务缺少可验证影响面,从而决定缓冲给谁。它不能推出的结论包括:不能确定根因、不能证明某类任务一定优先、不能据此承诺具体交付日期。排期调整后,下一步应重新确认合同节点的最晚开始时间,并检查缓冲是否仍然够用;如果不够,就应触发变更沟通,而不是继续压缩返工余量。