Files
AFC-Demo/routes/console.php
T

47 lines
1.7 KiB
PHP

<?php
use App\Jobs\SyncBackendDataPool;
use App\Jobs\TransformDataPoolToProduction;
use Illuminate\Foundation\Inspiring;
use Illuminate\Support\Facades\Artisan;
use Illuminate\Support\Facades\Schedule;
Artisan::command('inspire', function () {
$this->comment(Inspiring::quote());
})->purpose('Display an inspiring quote');
/**
* Backend Data Pool Sync Scheduling
*
* - Incremental Sync: Läuft alle 6 Stunden (nur neue/geänderte Daten)
* - Full Sync: Läuft jeden Sonntag um 3 Uhr morgens (kompletter Rebuild)
*/
// Incremental Sync: Alle 6 Stunden
Schedule::job(new SyncBackendDataPool(fullSync: false, batchSize: 1000))
->everySixHours()
->name('sync-backend-data-pool-incremental')
->description('Sync new/updated backend transactions to data pool')
->withoutOverlapping(1800); // Max 30 Minuten Lock (1800 Sekunden)
// Full Sync: Jeden Sonntag um 3 Uhr morgens
Schedule::job(new SyncBackendDataPool(fullSync: true, batchSize: 1000))
->weeklyOn(0, '03:00') // Sonntag, 3:00 Uhr
->name('sync-backend-data-pool-full')
->description('Full sync and rebuild of backend data pool')
->withoutOverlapping(3600); // Max 1 Stunde Lock (3600 Sekunden)
/**
* Data Pool Transformation Scheduling (Stufe 2)
*
* - Läuft 30 Minuten nach jedem Incremental Sync
* - Transformiert Daten aus backend_data_pool → companies + transactions
*/
// Transformation: 30 Minuten nach jedem Sync (0:30, 6:30, 12:30, 18:30)
Schedule::job(new TransformDataPoolToProduction(batchSize: 100))
->cron('30 */6 * * *') // :30 jede 6 Stunden
->name('transform-data-pool-to-production')
->description('Transform data pool into companies and transactions')
->withoutOverlapping(1800); // Max 30 Minuten Lock