Implement academy analytics, billing, and web stories updates

This commit is contained in:
2026-05-26 07:27:29 +02:00
parent 456c3d6bb0
commit 0b33a1b074
177 changed files with 27360 additions and 2685 deletions

View File

@@ -49,6 +49,23 @@ Schedule::command('analytics:aggregate-similar-artworks')->dailyAt('03:10');
Schedule::command('analytics:aggregate-feed')->dailyAt('03:20');
Schedule::command('analytics:aggregate-discovery-feedback')->dailyAt('03:25');
Schedule::command('analytics:aggregate-tag-interactions')->dailyAt('03:35');
Schedule::command('academy:analytics-rollup')
->hourlyAt(12)
->name('academy-analytics-rollup')
->withoutOverlapping()
->runInBackground();
Schedule::command('academy:analytics-recalculate-popularity --days=30')
->dailyAt('03:45')
->name('academy-analytics-popularity')
->withoutOverlapping()
->runInBackground();
Schedule::command('academy:analytics-prune-events --days=180')
->dailyAt('04:20')
->name('academy-analytics-prune')
->withoutOverlapping()
->runInBackground();
// Drain Redis artwork-stat delta queue so MySQL counters stay fresh.
// Offset this off the :00/:10 boundaries so it does not pile onto publish jobs.
@@ -172,7 +189,7 @@ Schedule::command('nova:recalculate-heat')
// Generate static sitemap XML files that nginx can serve directly without PHP.
// The generate command writes public/sitemap.xml + public/sitemaps/{name}.xml.
Schedule::command('skinbase:sitemaps:generate')
->dailyAt('22:30')
->cron('30 10,22 * * *')
->name('sitemaps-generate')
->withoutOverlapping()
->runInBackground();