Änderungen (relevant):

- Add‑on Checkout auf Transactions + Transaction‑ID speichern: app/Services/Addons/EventAddonCheckoutService.php
  - Paket/Marketing Checkout auf Transactions: app/Services/Paddle/PaddleCheckoutService.php
  - Gift‑Voucher Checkout: Customer anlegen/finden + Transactions: app/Services/GiftVouchers/
    GiftVoucherCheckoutService.php
  - Tests aktualisiert: tests/Feature/Tenant/EventAddonCheckoutTest.php, tests/Unit/PaddleCheckoutServiceTest.php,
tests/Unit/GiftVoucherCheckoutServiceTest.php
This commit is contained in:
Codex Agent
2025-12-29 18:04:28 +01:00
parent 795e37ee12
commit 5f521d055f
26 changed files with 783 additions and 102 deletions

View File

@@ -36,12 +36,55 @@ return Application::configure(basePath: dirname(__DIR__))
\App\Console\Commands\SeedDemoSwitcherTenants::class,
])
->withSchedule(function (\Illuminate\Console\Scheduling\Schedule $schedule) {
$schedule->command('package:check-status')->dailyAt('06:00');
$schedule->command('photobooth:cleanup-expired')->hourly()->withoutOverlapping();
$schedule->command('photobooth:ingest')->everyFiveMinutes()->withoutOverlapping();
$schedule->command('exports:purge')->dailyAt('02:00');
$schedule->command('tenants:retention-scan')->dailyAt('03:00');
$schedule->command('guest:feedback-reminders')->dailyAt('22:00');
$onFailure = static function (string $command): \Closure {
return static function () use ($command): void {
\App\Support\SentryReporter::captureException(
new \RuntimeException('Scheduled command failed'),
[
'tags' => [
'schedule_command' => $command,
],
],
);
};
};
$schedule->command('package:check-status')
->dailyAt('06:00')
->onFailure($onFailure('package:check-status'));
$schedule->command('storage:monitor')
->everyFiveMinutes()
->withoutOverlapping()
->onFailure($onFailure('storage:monitor'));
$schedule->command('storage:check-upload-queues')
->everyFiveMinutes()
->withoutOverlapping()
->onFailure($onFailure('storage:check-upload-queues'));
$schedule->command('storage:archive-pending')
->dailyAt('01:00')
->withoutOverlapping()
->onFailure($onFailure('storage:archive-pending'));
$schedule->command('photobooth:cleanup-expired')
->hourly()
->withoutOverlapping()
->onFailure($onFailure('photobooth:cleanup-expired'));
$schedule->command('photobooth:ingest')
->everyFiveMinutes()
->withoutOverlapping()
->onFailure($onFailure('photobooth:ingest'));
$schedule->command('checkout:send-reminders')
->hourly()
->withoutOverlapping()
->onFailure($onFailure('checkout:send-reminders'));
$schedule->command('exports:purge')
->dailyAt('02:00')
->onFailure($onFailure('exports:purge'));
$schedule->command('tenants:retention-scan')
->dailyAt('03:00')
->onFailure($onFailure('tenants:retention-scan'));
$schedule->command('guest:feedback-reminders')
->dailyAt('22:00')
->onFailure($onFailure('guest:feedback-reminders'));
})
->withMiddleware(function (Middleware $middleware) {
$middleware->trustProxies(