FALLBACK

FALLBACK

那个专门吞错误的杂技演员,能把坏数据包装成假成功,还管这叫韧性。

今天它会吞掉一次真正的失败,打一句可爱的 warning,再往业务指标里塞进一个假的 0。

The Sin

它对任何坏数据、坏状态、坏异常都有一种母爱般的纵容。没有值?给个 0。对象炸了?给个 {}。请求失败了?return 一下,世界依然和平。

然后第二天你会发现报表全是假的,排查路径全断了,唯一留下来的只有一句:

“别担心,我已经帮你 fallback 了。”

The Smell

export async function buildRevenuePanel() {
  const raw = await fetch("/api/revenue")
    .then((res) => res.json())
    .catch(() => null);

  const payload =
    (((raw ?? {}) as Record<string, unknown>)?.data ?? {}) as Record<string, unknown>;

  const summary =
    ((((payload ?? {}) as Record<string, unknown>).summary ?? {}) ??
      {}) as Record<string, unknown>;

  return {
    total:
      Number((((summary ?? {}) as Record<string, unknown>).total ?? 0) ?? 0) ?? 0,
    growth:
      Number((((summary ?? {}) as Record<string, unknown>).growth ?? 0) ?? 0) ?? 0,
    trend:
      ((((payload ?? {}) as Record<string, unknown>).trend ?? []) ?? []) as unknown[],
  };
}

The Reading

这张牌出现时,说明系统已经坏了,但 agent 不允许你知道。它会把真实的失败抹平成温柔的默认值,让你在一片假装正常的废墟里继续往前走。