From 75622a728e83c25a20463bf38bb37296eaf395ab Mon Sep 17 00:00:00 2001 From: whm <973418690@qq.com> Date: Thu, 6 Aug 2026 09:03:41 +0800 Subject: [PATCH] fix: allow deleting system default sync channel with immediate heal Remove hard ban that returned 400 with no UI feedback; delete then Ensure+rebinding, and show confirm/toast on SyncPage. Co-authored-by: Cursor --- platform/internal/handler/sync.go | 20 ++++++++++--------- web/src/SyncPage.tsx | 32 ++++++++++++++++++++++++++++--- web/src/api.ts | 12 ++++++++++++ 联调后修改意见-宇恒松离线.md | 8 ++++---- 4 files changed, 56 insertions(+), 16 deletions(-) diff --git a/platform/internal/handler/sync.go b/platform/internal/handler/sync.go index b025657..5c95b82 100644 --- a/platform/internal/handler/sync.go +++ b/platform/internal/handler/sync.go @@ -121,21 +121,23 @@ func syncDeleteHandler(svcCtx *svc.ServiceContext) http.HandlerFunc { authx.WriteError(w, http.StatusNotFound, err.Error()) return } - // Z12h-1:公司默认同步通道禁止删除(账号落点依赖它) - if ch.IsSystemDefault { - authx.WriteError(w, http.StatusBadRequest, "公司默认同步通道不可删除;账号绑定落点依赖此通道。若异常请刷新页面自动修复") - return - } + wasDefault := ch.IsSystemDefault svcCtx.DBSync.StopChannel(id) if err := svcCtx.DBSync.Store().DeleteChannel(id); err != nil { authx.WriteError(w, http.StatusBadRequest, err.Error()) return } - // 若误删后仍有 Binding 挂死,heal 会挂回默认通道 - if _, hErr := applogic.HealTenantSyncBind(r.Context(), svcCtx, tid); hErr != nil { - _ = hErr + // Z12h-1:默认同步可删;删后 Ensure+heal,账号落点自动挂回新默认通道 + out := map[string]any{"ok": true, "deleted_id": id, "was_system_default": wasDefault} + if healed, hErr := applogic.HealTenantSyncBind(r.Context(), svcCtx, tid); hErr != nil { + out["heal_error"] = hErr.Error() + } else if healed != nil { + out["channel_id"] = healed.ChannelID + out["recreated_default"] = wasDefault || healed.ChannelCreated + out["bindings_fixed"] = healed.BindingsFixed + out["agents_fixed"] = healed.AgentsFixed } - httpx.OkJson(w, map[string]any{"ok": true}) + httpx.OkJson(w, out) } } diff --git a/web/src/SyncPage.tsx b/web/src/SyncPage.tsx index 507133e..0c41d4c 100644 --- a/web/src/SyncPage.tsx +++ b/web/src/SyncPage.tsx @@ -586,9 +586,35 @@ export function SyncPage(props: {