@extends('admin.layouts.main', ['fluid' => true]) @section('content')

← Back to Octoparse import logs

Octoparse — New entries from import #{{ $log->id }}

Started at: {{ optional($log->started_at)->format('Y-m-d H:i:s') }} · Finished at: {{ optional($log->finished_at)->format('Y-m-d H:i:s') ?: '—' }} · Status: @php $badge = $log->status === 'success' ? 'success' : ($log->status === 'failed' ? 'danger' : ($log->status === 'partial' ? 'warning' : 'info')); @endphp {{ $log->status }}

@if (!$trackingAvailable)
This import predates per-run new-entries tracking — only summary counts are available. Future imports will list their newly-inserted records here.
@elseif ($recordsByTask->isEmpty())
No new entries were imported in this run. All scraped rows already existed and were re-upserted as updates.
@else
{{ $log->rows_inserted }} new {{ $log->rows_inserted === 1 ? 'record was' : 'records were' }} inserted in this run, across {{ $recordsByTask->count() }} {{ $recordsByTask->count() === 1 ? 'task' : 'tasks' }}.
@foreach ($recordsByTask as $taskId => $records) @php $taskConfig = $tasks[$taskId] ?? []; $label = $taskConfig['label'] ?? $taskId; @endphp

{{ $label }} view all records →

Task ID: {{ $taskId }} · New rows: {{ $records->count() }}

@foreach ($records as $record) @php $payloadJson = json_encode( $record->payload, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE ); $payloadPreview = mb_substr($payloadJson, 0, 240); $modalId = 'octoparse-new-row-' . $record->id; @endphp @endforeach
ID External key Payload (preview) Scraped at
{{ $record->id }} {{ $record->external_key }} {{ $payloadPreview }}@if (mb_strlen($payloadJson) > 240)…@endif
View full payload
{{ optional($record->scraped_at)->format('Y-m-d H:i') ?: '—' }}
@endforeach @endif @stop