← 返回博客列表
产品设计2026-05-28·5 分钟阅读

Update 风险分级:9 个信号决定签字单长什么样

扫描器对比新旧描述符触发对应信号,映射 Green / Yellow / Red 风险等级。Red 风险硬挡 60s 倒计时,签字单条款动态变化。

Update 这件事的核心矛盾是:你既要快(每天甚至每小时迭代),又要稳(失败不能丢数据 / 不能停服 / 不能误操作)。这两者天然冲突。

我们的解法是:把每次 Update 自动算一个「风险等级」,根据等级动态调整签字单严苛程度。低风险 1 秒过、中风险加条款、高风险 60 秒硬挡。

9 个信号

扫描器对比新旧描述符,触发以下任一信号:

  • runtime_changed — Node.js → Python 这类运行时大类变化(几乎一定要 yellow)
  • runtime_version_jump — node 18 → 20 主版本号跨越
  • start_command_changed — 启动命令从 pm2 改成 systemd 等
  • port_changed — 服务监听端口变化
  • new_required_env — 新增必填环境变量(缺值启动失败)
  • pre_deploy_added — 新增 pre_deploy 钩子
  • pre_deploy_has_unreversible — 包含 DROP COLUMN / RENAME TABLE 等不可逆操作
  • breaks_api — API 破坏式变更(删字段 / 改返回类型;由发起者声明)
  • major_dep_bump — 关键依赖主版本升级(react 17 → 18)

三级映射

Green · 低风险

单条信号 ≤ 1,默认签字模板,签字框 + 一句「我已确认」,没有倒计时,通常 5 秒过。

Yellow · 中风险

≥ 2 条信号,签字单加额外条款(比如「我确认新增的 NEW_ENV 已在 Vault 中正确配置」),健康检查窗 ×1.5(45s)。

Red · 高风险

≥ 5 条信号 / 含不可逆操作,签字单顶部 60 秒倒计时硬挡(不到时间提交按钮变灰),专属确认短语(不是「我已确认」而是「我已读懂三条 X / Y / Z 不可逆操作的后果」),失败时不自动回滚(因为已经改了数据库 schema),由你人工裁决。

我们不替你决定该不该上这个 Update。但我们能让你不在凌晨 3 点手抖点错按钮的时候搞砸事情。

为什么 60 秒?

心理学。人在 60 秒内会更倾向于反思「我真的想好了吗」,而不是「快点跑完吃饭」。3 秒太短(纯惯性),5 分钟太长(用户开始烦)。60 秒是一个让你不冲动、又不会被拖累的甜蜜点。

同类阅读

评论功能未启用(需要环境变量 NEXT_PUBLIC_UTTERANCES_REPO=owner/repo)