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