command('payment:check-uptime') ->everyFiveMinutes() ->withoutOverlapping() ->runInBackground(); // Job 1: Überprüft täglich um 02:00 Uhr die Zahlungskonten. $schedule->command('payments:check-accounts')->dailyAt('02:00'); // Jobs 2, 3, 4: Die Befehle aus deinem alten Shell-Skript. // Werden nacheinander täglich zu unterschiedlichen Zeiten ausgeführt, // um die Serverlast zu verteilen. $schedule->command('business:store-optimized 0 0')->dailyAt('03:00'); $schedule->command('user:cleanup')->dailyAt('03:30'); $schedule->command('user:make_abo_order')->dailyAt('04:00'); // Stripe: liegengebliebene Webhook-Events nachverarbeiten (Cron-Race / // verzögerter Stripe-Retry; Stripe CLI auf dem Test-Server retryt gar nicht). $schedule->command('stripe:process-pending-events') ->everyTenMinutes() ->withoutOverlapping() ->runInBackground(); // Stripe: offene Zahlungen aktiv gegen die API abgleichen. Fängt den Fall // ab, dass ein Webhook NIE zugestellt wurde (Endpoint down, falsches // Konto am Listener, Stripe gibt Retries nach ~3 Tagen auf) — dann läge // das Geld bei Stripe, während die Bestellung auf "offen" steht. // Läuft über denselben, idempotenten Paid-Pfad wie ein echter Webhook. $schedule->command('stripe:sync-payment-status --pending --days=3') ->hourly() ->withoutOverlapping() ->runInBackground(); // Abo-Einmalprodukte: Reminder-Mail vor der Ausführung (Einmalprodukte-Fenster). // BEWUSST INAKTIV bis zum Abschluss des Review-Gates (Feature aktuell nur VIP // im Sales Center, Portal ausgeblendet). Nach Freigabe einkommentieren: $schedule->command('abo:send-execution-reminder')->dailyAt('06:00'); // Abo-Chart-Snapshots: vergangene Monate einfrieren (nach allen Abo-Jobs) $schedule->command('abo:store-chart-snapshots')->dailyAt('04:30'); // Backoffice-Statistik-Snapshots: abgeschlossene Monate fuer VIP-Statistiken einfrieren $schedule->command('backoffice:store-statistics-snapshots')->dailyAt('04:45'); // VP-Punkte des Sponsors: fehlende Registrierungs-Buchungen des laufenden // Monats nachziehen (Callback-Aussetzer), vor business:store-optimized um 03:00 $schedule->command('sales:repair-sponsor-vp')->dailyAt('02:30'); // Incentive: Punkteberechnung täglich nach business:store-optimized $schedule->command('incentive:calculate')->dailyAt('05:00'); // Cleanup old log files weekly (keeps logs for 30 days) $schedule->command('logs:cleanup --days=30')->weekly()->sundays()->at('05:00'); // DHL Tracking Update: Stündlich mit status-basierten Intervallen und Batch-API $schedule->command('dhl:update-tracking --days=30 --send-emails') ->hourly() ->withoutOverlapping() ->runInBackground(); } /** * Register the commands for the application. * * @return void */ protected function commands() { $this->load(__DIR__.'/Commands'); require base_path('routes/console.php'); } }