Scheduled Jobs

GurzBrain corre jobs automáticos vía php artisan schedule:run (cron cada minuto).

Jobs activos

Comando Cadencia Propósito
gurzbrain:brief:daily 6am DO Resumen diario del hub
gurzbrain:digest:weekly Domingo 8am DO Agregado semanal
gurzbrain:report:weekly Domingo 8am DO Health score 0-100 cross-system
gurzbrain:backup Diario 2am DO Backup local via spatie
gurzbrain:backup:verify Diario 7am DO Verifica fresco < 36h + offsite B2
gurzbrain:cost:calculate 1ro de mes 7am Infra cost vs vendors
gurzbrain:deps:check Miércoles 4am composer outdated cross-hub
gurzbrain:vuln:scan Diario 5am composer audit vulnerabilities
gurzbrain:kuma:sync Cada 2min Monitors Kuma status
gurzbrain:domains:watch Lunes 9am WHOIS + SSL expiry 14 dominios
gurzbrain:payments:reconcile Diario 6am Stripe vs DB local
gurzbrain:selfheal Cada hora Fix issues conocidos
gurzbrain:guardian Cada 5min Prompt injection defense

Añadir job propio

En bootstrap/app.php → withSchedule(function (Schedule $schedule) { ... }):

$schedule->command('mi:comando')->dailyAt('03:00');

O vía Laravel 11+ attributes:

#[\Illuminate\Console\Scheduling\Schedule]
class MiComando extends Command { ... }

Monitoring

Cada run se persiste en tabla scheduled_runs con job_name, status, output, duration_sec, ran_at. Visible en dashboard /gurzbrain sección "Scheduled Runs".