@extends("admin.layouts.app") @section("title", __("admin.automation_status")) @section("content") {{-- Bu sayfa eskiden sekiz satirlik, elle yazilmis bir tabloydu: her satirda "Hic calismadi" ve "Yapilandirilmamis" yaziyordu — sunucuda ne olursa olsun. Otomasyonun yasadigini soylemesi gereken tek ekran, inanilamayacak tek ekrandi. Artik gercek zamanlanmis gorevleri ve gercek son calisma kayitlarini okuyor. --}} @php $tasks = app(\App\Services\ScheduleStatusService::class)->tasks(); $counts = app(\App\Services\ScheduleStatusService::class)->summary(); $tone = [ 'ok' => ['#1f8a4c', '#e7f5ec'], 'overdue' => ['#a76a00', '#fdf1dc'], 'failed' => ['#b0322a', '#fbe6e4'], 'pending' => ['#5b6673', '#eef1f4'], ]; @endphp
{{ __('admin.automation.cron_job_status') }}
@foreach($tasks as $t) @endforeach
{{ __('admin.automation.task') }} {{ __('admin.automation.frequency') }} {{ __('admin.automation.last_run') }} {{ __('admin.automation.next_due') }} {{ __('common.table.status') }}
{{ $t['label'] }}
{{ $t['command'] }}
{{ $t['frequency'] }} @if($t['last_run_at']) {{ $t['last_run_at']->diffForHumans() }}
{{ $t['last_run_at']->setTimezone(display_tz())->format('d.m.Y H:i') }} @if($t['runtime_ms'] !== null) · {{ number_format($t['runtime_ms'] / 1000, 1) }}s @endif @else {{ __('admin.automation.never_yet') }} @endif @if($t['failures'] > 0)
{{ $t['failures'] }}× {{ __('admin.automation.state_failed') }} @endif
{{ $t['next_due'] ? $t['next_due']->diffForHumans() : '—' }} {{ __('admin.automation.state_' . $t['state']) }}
{{ __('admin.automation.cron_configuration') }}
@if(app(\App\Services\ScheduleStatusService::class)->schedulerRunsInContainer()) {{-- The Docker image runs the scheduler itself; a host cron line with the container's path in it can only mislead. --}}

{{ __('admin.automation.container_scheduler') }}

@else

{{ __('admin.automation.cron_instruction') }}

* * * * * cd {{ base_path() }} && php artisan schedule:run >> /dev/null 2>&1

{{ __('admin.automation.cron_explanation') }}

@endif
@endsection