{% extends 'base.html' %} {% from 'macros.html' import jobs_table with context %} {% block title %}Crawls · imgsrx{% endblock %} {% block content %} {% include "partials/live_activity.html" %}
EIN BLICK IN DIE WERKSTATT

Was dein Index gerade macht.

Gespeicherte Abrufläufe und Seitenprotokolle. Die Statusanzeige aktualisiert sich automatisch; geöffnete Protokolle bleiben erhalten.

{% if run_id %}{% endif %}Filter zurücksetzen

{% include 'partials/updated.html' %}

{{ quantity(total_runs, 'Lauf', 'Läufe') }} und {{ quantity(total_jobs, 'Seitenjob', 'Seitenjobs') }} in dieser Filterauswahl. Die Zähler gelten für die gesamte Auswahl, nicht nur die sichtbare Seite.

{{ statuses.get('running',0) }}Seiten in Bearbeitung
{{ statuses.get('pending',0) }}Wartende Seiten
{{ statuses.get('completed',0) }}Abgerufene Seiten
{{ statuses.get('failed',0) + statuses.get('skipped',0) }}Fehlgeschlagen oder übersprungen

Crawl-Läufe

{% for run in runs %}{% if run_id or run.status in ['queued','running','paused'] %}

{{ run.source.domain }} →

{{ 'Testlauf (Dry Run)' if run.dry_run else 'Regulärer Crawl' }} · Start: {{ timestamp(run.created_at) }}{% if run.completed_at %} · Abruf beendet: {{ timestamp(run.completed_at) }}{% endif %}

Diesen Lauf direkt öffnen → {% with crawl=run, pipeline=pipelines[run.id], show_effective=true %}{% include 'partials/pipeline.html' %}{% endwith %}

Erfassungsumfang: {{ quantity(run.max_pages, 'Seite', 'Seiten') if run.max_pages is not none else 'Kein Seitenlimit' }} · {{ quantity(run.max_images, 'Bild', 'Bilder') if run.max_images is not none else 'Kein Bildlimit' }} · {{ (mib(run.max_bytes) ~ ' MiB') if run.max_bytes is not none else 'Kein Downloadlimit' }} · {{ 'Tiefe ' ~ run.max_depth if run.max_depth is not none else 'Keine Tiefengrenze' }}. Übertragen: {{ '%.2f'|format(run.bytes_downloaded / 1024**2) }} MiB in {{ quantity(run.requests_count, 'Anfrage', 'Anfragen') }}.

{% if run.dry_run %}
Gemessene Stichprobe und getrennte Hochrechnung

Dieser Test speichert keine neuen Bilddateien oder Suchvektoren.

Abgerufene Seiten
{{ run.pages_successful }}
Geprüfte Bilder
{{ run.sample_report.get('images_checked',0) }}
Duplikate in der Stichprobe
{{ run.sample_report.get('duplicates',0) }}
Abruf-/Bildfehler
{{ run.errors_count }}
{% if 'estimated_images_at_page_budget' in run.sample_report %}

Grobe Hochrechnung: {{ quantity(run.sample_report.estimated_images_at_page_budget, 'Bild', 'Bilder') }} auf {% if run.sample_report.get('estimate_page_budget') %}ein Budget von {{ quantity(run.sample_report.estimate_page_budget, 'Seite', 'Seiten') }}{% else %}das damalige Seitenbudget (Zielgröße historisch nicht separat gespeichert){% endif %}. Dies ist keine Messung der Websitegröße.

{% endif %}
Gespeicherte Rohdaten
{{ run.sample_report|tojson(indent=2) }}
{% endif %} {% if run.status not in ['queued','running','paused'] and run.source.enabled and not run.source.archived %}
{% endif %} {% if run.status in ['queued','running','paused'] %}
{% endif %}
{% endif %}{% else %}

{% if source_id or run_id or status != 'all' %}Keine Läufe in dieser Auswahl. Filter zurücksetzen →{% elif sources %}Noch kein Abruf gestartet. Vorhandene Quelle öffnen und Testlauf oder Crawl wählen →{% else %}Noch keine Quelle vorhanden. Quelle hinzufügen →{% endif %}

{% endfor %}
{% if not run_id %}

Abgeschlossene Läufe

Kompakte Historie · bis zu 50 Läufe je Seite. Details und Protokolle öffnen sich über den jeweiligen Lauf.

{% for run in runs if run.status not in ['queued','running','paused'] %} {% else %}{% endfor %}
Abgeschlossene Crawl-Läufe
Quelle / StartZustand / AbschlussgrundSeitenSuchbare BilderDetails
{{ run.source.domain }}
{{ timestamp(run.created_at) }} · {{ 'Testlauf' if run.dry_run else 'Crawl' }}
{{ state_label(run.status) }}{% if run.stopped_reason %}
{{ state_label(run.stopped_reason) }}{% endif %}
{{ run.pages_successful }}{{ pipelines[run.id].ready }}{% if pipelines[run.id].waiting %}
{{ pipelines[run.id].waiting }} in Vorbereitung{% endif %}
Lauf öffnen →
Keine abgeschlossenen Läufe auf dieser Seite.
{% endif %}

Seitenjobs · {{ jobs|length }} von {{ total_jobs }}

{{ jobs_table(jobs) }}
{% endblock %}