@extends('admin.layouts.app')
@section('title', __('admin.ai.tasks.detail_title', ['id' => $task->id]) . ' — ' . __('admin.brand.name'))
@section('page_title', __('admin.ai.tasks.detail_title', ['id' => $task->id]))
@section('content')
@include('admin.ai._layout')
@php $p = $summary['progress'] ?? []; $pct = (float) ($p['percent'] ?? 0); @endphp
{{ __('admin.ai.tasks.cols.kind') }}
{{ $task->kind }}
{{ __('admin.ai.tasks.cols.mode') }}
{{ $task->mode }}
{{ __('admin.ai.tasks.cols.admin') }}
{{ $task->admin?->name ?: $task->admin?->email }}
{{ __('admin.ai.tasks.cols.timing') }}
{{ $task->started_at?->diffForHumans() ?? '—' }} → {{ $task->finished_at?->diffForHumans() ?? '…' }}
{{ $p['done'] ?? 0 }} done · {{ $p['skipped'] ?? 0 }} skipped · {{ $p['failed'] ?? 0 }} failed · {{ $p['pending'] ?? 0 }} pending
({{ number_format($pct, 1) }}%)
@php $canRollback = auth('admin')->user()?->can('ai.rollback') ?? false; @endphp
@if (! $task->isTerminal())
{{ __('admin.ai.tasks.resume_hint') }}
@endif
@if ($canRollback && ($task->progress['done'] ?? 0) > 0)
@endif
{{-- Input / Output JSON --}}
{{ __('admin.ai.tasks.input') }}
{{ json_encode($task->input, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) }}
{{ __('admin.ai.tasks.output') }}
@if (! empty($task->output))
{{ json_encode($task->output, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) }}
@else
{{ __('admin.ai.tasks.no_output_yet') }}
@endif
{{-- Linked change requests section retired in the 2026-06-08
cleanup along with the AiChangeRequest model. Audit trail
for what this task did lives in `task.output` above + the
activity log link in the header. --}}
{{-- Sample items (last 20) --}}
@if ($sampleItems->isNotEmpty())
{{ __('admin.ai.tasks.sample_items') }}
({{ __('admin.ai.tasks.last_n', ['n' => $sampleItems->count()]) }})
| # | {{ __('admin.ai.tasks.cols.subject') }} | {{ __('admin.ai.tasks.cols.item_status') }} | {{ __('admin.ai.tasks.cols.attempts') }} | {{ __('admin.ai.tasks.cols.result') }} |
@foreach ($sampleItems as $it)
| #{{ $it->id }} |
{{ class_basename($it->subject_type) }}#{{ $it->subject_id }} |
{{ $it->status }} |
{{ $it->attempts }} |
{{ \Illuminate\Support\Str::limit(json_encode($it->result ?? $it->error, JSON_UNESCAPED_UNICODE), 100) }} |
@endforeach
@endif
@endsection