fix(frontend): monitor form check-mode restore, account unbinding and mode badge

审计 P2-7 三处前端收尾:

- 切离 antigravity 时对称还原 check_mode:antigravity 强制 quota,但反向
  切走没有还原——编辑存量 antigravity 监控换平台后停留在 quota,目标平台
  未必支持。现切走时还原为 probe 并清掉占位模型 'quota'(回填值),否则
  probe 模式拿 'quota' 当探活模型(与离开 grok 清 DEFAULT_GROK_MODEL
  同一先例)。
- update 切回 probe 显式发 account_id=0:后端语义 0=解绑、null=不动,
  此前 probe 模式 payload 带 null,存量关联永远清不掉。仅 update——
  create 发 0 会落 &0 触发外键违约(API 类型注释同步写明)。
- 管理列表 provider 徽章旁并列 check_mode 徽章(checkModeLabel 此前
  定义了却无处使用):quota 系=蓝、probe=中性灰,三种模式一眼可分;
  i18n 复用既有 monitorCommon.checkMode.*,零新增键。
This commit is contained in:
Randark
2026-08-18 10:28:28 +00:00
parent e2dfb3b8cb
commit c9effc4560
6 changed files with 266 additions and 2 deletions
@@ -675,6 +675,14 @@ function selectProvider(provider: Provider) {
if (provider === PROVIDER_ANTIGRAVITY && form.check_mode !== CHECK_MODE_QUOTA) {
form.check_mode = CHECK_MODE_QUOTA
}
// 对称还原:从 antigravity 切走时撤掉强制 quota,否则编辑存量 antigravity
// 监控换平台后仍停留在 quota(目标平台未必支持),update 会携带残留配置。
// 同步清掉 quota 占位模型(loadFromMonitor 回填的 'quota'),否则切回
// probe 后拿 'quota' 当探活模型(与离开 grok 清 DEFAULT_GROK_MODEL 同理)。
if (previousProvider === PROVIDER_ANTIGRAVITY && form.check_mode === CHECK_MODE_QUOTA) {
form.check_mode = CHECK_MODE_PROBE
if (form.primary_model.trim() === 'quota') form.primary_model = ''
}
if (provider === PROVIDER_GROK) {
if (!form.endpoint.trim()) form.endpoint = DEFAULT_GROK_ENDPOINT
if (!form.primary_model.trim()) form.primary_model = DEFAULT_GROK_MODEL
@@ -849,6 +857,9 @@ async function handleSubmit() {
req.clear_template = true
delete req.template_id
}
// account_id 同理:probe 模式不带账号,update 发 0 显式解绑存量关联
// (后端 0=清空、null=不动)。仅 update——create 发 0 会落 &0 触发 FK 违约。
if (!usesQuotaMode.value) req.account_id = 0
await adminAPI.channelMonitor.update(target.id, req)
appStore.showSuccess(t('admin.channelMonitor.updateSuccess'))
} else {