结论有条件:如果核心任务只依赖一个可替换的输入或输出接口,优先做本地降级;如果核心任务与组件的数据结构、权限或前端渲染深度耦合,则应先冻结依赖并排期替换,而不是临时补丁。判断依据是停用后用户还能不能提交、查询或完成支付等关键动作,而不是页面看起来是否完整。
把“核心任务”写成一句可验证的话,例如“访客能提交预约并收到确认”。然后逐项检查:表单字段是否由组件动态生成,提交接口是否由组件托管,确认结果是否只存在组件数据库中。若三项都指向同一组件,停用后任务会直接中断;若只有展示层依赖它,核心流程通常还能继续。
一个可用的区分方法是做一次假设演练:把组件在测试环境禁用,观察任务链路在哪一步停止。停止在输入环节,说明需要替代输入;停止在存储环节,说明需要迁移数据;停止在结果反馈环节,说明需要接管通知。这个动作的结果决定下一步是修复、替换还是重写。
本地降级适合组件只承担边缘功能的情况,例如统计、分享按钮或在线地图。做法是把必要数据改为静态表单或站内链接,让用户仍能提交和联系。代价是失去部分自动化,后续需要人工处理或定期导出。选择条件是:核心任务不依赖组件返回的数据,且停用后没有合规或安全缺口。
整体替换适合组件参与核心任务的情况,例如预约排期、会员登录或支付回调。做法是先冻结现有版本,梳理字段、权限和回调地址,再选替代方案并做并行验证。代价是开发时间、数据迁移成本和短期双轨维护。选择条件是:组件停用会导致任务无法完成,或替代方案需要改变现有流程。
如果两种做法都看似合理,先看停用通知是否给出明确期限。没有期限时,本地降级可以争取时间;有明确期限且核心任务受影响时,整体替换更稳妥。不要因为页面仍可打开就判断任务仍可完成。
假设某预约组件停用后,前端表单仍能显示,用户也能点击提交,但提交实际写入的是组件托管数据库。此时页面看起来正常,核心任务却已经中断。若只做前端降级而不迁移数据,用户会以为预约成功,实际没有记录。这个反例说明:判断依据必须是提交后的存储与通知链路,而不是前端是否报错。
另一个反例是组件停用后,替代方案需要用户重新授权或重新填写历史数据。若核心任务包含“查询已有记录”,那么单纯恢复提交入口并不够,还需要确认旧数据能否导出、字段能否映射。无法导出时,本地降级只能保住新任务,旧任务需要单独说明或人工承接。
并行验证的结果会影响下一步:如果新旧结果一致,可以按计划切换;如果查询结果缺失,需要先补数据迁移再切换。整个过程不需要追求组件恢复,只需要保证用户能完成核心任务。
无论选择哪种做法,都应记录组件停用日期、受影响任务、替代入口、数据导出方式和人工兜底联系人。若组件涉及登录、支付或个人信息,还需确认停用后旧数据是否仍可访问,以及访问权限由谁持有。缺少这些条件时,本地降级可能只是暂时掩盖问题,整体替换也可能因为数据无法迁移而停滞。
最后检查一个动作:让不参与开发的人按核心任务走一遍。若他能独立完成提交并获得确认,说明降级或替换达到了目的;若他卡在授权、查询或通知环节,就回到失败点继续处理。这个检查结果比页面是否美观更能决定下一步该修哪里。