Files
sub2api/frontend
shaw 7d036c0863 fix(risk-control): 收窄风控 fail-closed 范围并补齐审计异常拦截
#5394 把配置加载失败改成 fail-closed,但该分支位于 risk_control_enabled 与
cfg.Enabled 两道闸门之前,导致从未开启风控的部署也会被 500 打死;同时它没有覆盖
#5388 实际抱怨的场景——审计 API 调用失败仍然放行。

- 配置加载失败恢复 fail-open:loadRuntimeSnapshot 仅在冷启动无快照时报错,此刻
  无从得知运维的阻断意图,拦截会让一次设置读取抖动、或一行损坏的配置 JSON 演变
  成全站 5xx(后者确定性失败,快照永远建不起来,构成永久中断)
- 新增 fail_closed_on_error 开关(默认关):仅在「审计启用 + pre_block 模式」下
  生效,覆盖审计 API 调用失败与无可用审计 Key 两条路径,这才是 #5388 的场景
- fail-closed 响应改为 503 + content_moderation_unavailable,与 prompt-guard 既有
  的不可用语义对齐,不再把系统故障伪装成 content_policy_violation
- Flagged 恒为 false 且不写 flagged 日志,故障拒绝不进入自动封号计数
- 异步 worker 与 observe 模式永不 fail-closed(无可拒绝的客户端)

Refs #5388, #5394
2026-08-10 09:44:22 +08:00
..
2026-01-12 11:44:34 +08:00
2026-02-02 22:13:50 +08:00
2025-12-18 13:50:39 +08:00