diff --git a/app/Support/PlatformOrderToolsGuard.php b/app/Support/PlatformOrderToolsGuard.php index db86863..46a8292 100644 --- a/app/Support/PlatformOrderToolsGuard.php +++ b/app/Support/PlatformOrderToolsGuard.php @@ -120,20 +120,24 @@ class PlatformOrderToolsGuard */ public static function clearSyncErrorsReason(array $filters): string { - // 口径对齐后端安全阀:清理「同步失败」标记必须在失败治理集合内执行,且不得叠加与失败集合互斥的筛选。 - if ((string) ($filters['sync_status'] ?? '') !== 'failed' && (string) ($filters['fail_only'] ?? '') === '') { - return '建议先筛选「同步失败」集合(sync_status=failed)后再执行清理,避免误清理。'; - } - - if ((string) ($filters['syncable_only'] ?? '') === '1') { - return '当前已勾选「只看可同步」:该集合与「同步失败」互斥。请先取消只看可同步或切到失败集合后再清理。'; - } - + // 与后端 clearSyncErrors() 阻断口径对齐:避免运营在互斥集合上误清理。 $syncStatus = (string) ($filters['sync_status'] ?? ''); if ($syncStatus !== '' && $syncStatus !== 'failed') { return '当前为「清理同步失败标记」动作:若需要筛选同步状态,请使用 sync_status=failed(或清空该筛选)后再执行。'; } + if ((string) ($filters['syncable_only'] ?? '') === '1') { + return '当前已勾选「只看可同步」:该集合与「同步失败」互斥,请先取消只看可同步或切到失败集合后再清理。'; + } + + $hasAnyFailedScope = ($syncStatus === 'failed') + || ((string) ($filters['fail_only'] ?? '') === '1') + || (trim((string) ($filters['sync_error_keyword'] ?? '')) !== ''); + + if (! $hasAnyFailedScope) { + return '建议先筛选「同步失败」集合(sync_status=failed / fail_only=1 / 失败原因关键词)后再执行清理,避免误清理。'; + } + return ''; }