diff --git a/app/Http/Controllers/Admin/PlatformBatchController.php b/app/Http/Controllers/Admin/PlatformBatchController.php index aa9d47b..5b11242 100644 --- a/app/Http/Controllers/Admin/PlatformBatchController.php +++ b/app/Http/Controllers/Admin/PlatformBatchController.php @@ -134,6 +134,14 @@ class PlatformBatchController extends Controller 'bmpa_failed_only' => '1', ]), $safeBackForLinks, 'filters'); + // 本批次可同步重试:用于处理“批量 BMPA 后仍未同步订阅”的订单(例如同步暂时失败/后续补救)。 + // 口径:batch_bmpa_run_id + syncable_only=1 + sync_status=unsynced + $governanceLinks['retry_syncable'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([ + 'batch_bmpa_run_id' => $runId, + 'syncable_only' => '1', + 'sync_status' => 'unsynced', + ]), $safeBackForLinks, 'filters'); + // 本批次可再次尝试:对齐仪表盘/列表的“真正可BMPA处理集合”口径。 $governanceLinks['retry_processable'] = BackUrl::withBackAndFragment('/admin/platform-orders?' . \Illuminate\Support\Arr::query([ 'batch_bmpa_run_id' => $runId, diff --git a/resources/views/admin/platform_batches/show.blade.php b/resources/views/admin/platform_batches/show.blade.php index affc3d4..b07155c 100644 --- a/resources/views/admin/platform_batches/show.blade.php +++ b/resources/views/admin/platform_batches/show.blade.php @@ -135,6 +135,10 @@ 本批次可同步重试 @endif + @if(($governanceLinks['retry_syncable'] ?? '') !== '') + + 本批次可同步重试 + @endif @if(($governanceLinks['retry_processable'] ?? '') !== '') 本批次可再次尝试(可BMPA处理) diff --git a/tests/Feature/AdminPlatformBatchShowPageShouldRenderForBmpaTest.php b/tests/Feature/AdminPlatformBatchShowPageShouldRenderForBmpaTest.php index f2f1a00..c265c73 100644 --- a/tests/Feature/AdminPlatformBatchShowPageShouldRenderForBmpaTest.php +++ b/tests/Feature/AdminPlatformBatchShowPageShouldRenderForBmpaTest.php @@ -91,6 +91,10 @@ class AdminPlatformBatchShowPageShouldRenderForBmpaTest extends TestCase $this->assertStringContainsString('bmpa_error_keyword=', $html); $this->assertStringContainsString(urlencode('模拟失败:订单不是待处理+未支付'), $html); + // 治理入口:本批次可同步重试(batch_bmpa_run_id + syncable_only=1 + sync_status=unsynced) + $this->assertStringContainsString('syncable_only=1', $html); + $this->assertStringContainsString('sync_status=unsynced', $html); + // 治理入口:本批次可再次尝试(可BMPA处理) $this->assertStringContainsString('bmpa_processable_only=1', $html); }