option('dry-run')) { $status = $queue->status(); $this->info("Offen (Trockenlauf): {$status['jobs']} Archivaufträge, {$status['legacy_markers']} Altmarker ohne Auftrag."); return self::SUCCESS; } if (! $archive->isConfigured()) { $this->error('ARCHIVE_KEY fehlt oder ist ungültig — nichts nachgeholt, alle Aufträge bleiben offen.'); return self::FAILURE; } $queue->adoptLegacyMarkers(); $pending = ArchivePendingJob::query()->count(); $totals = ['recorded' => 0, 'skipped' => 0, 'failed' => 0]; ArchivePendingJob::query()->lazyById(100)->each(function (ArchivePendingJob $job) use ($retry, &$totals): void { foreach ($retry->retry($job) as $key => $count) { $totals[$key] += $count; } }); $remaining = ArchivePendingJob::query()->count(); $this->info(sprintf( 'Nachgeholt: %d Archiveinträge aus %d Aufträgen; übersprungen: %d; fehlgeschlagen: %d; weiterhin offen: %d.', $totals['recorded'], $pending, $totals['skipped'], $totals['failed'], $remaining, )); return $totals['failed'] > 0 || $totals['skipped'] > 0 || $remaining > 0 ? self::FAILURE : self::SUCCESS; } }