'use client' import type { EvidenceCheck, CheckResult, CHECK_TYPE_LABELS, RUN_STATUS_LABELS } from './EvidenceTypes' import { CHECK_TYPE_LABELS as checkTypeLabels, RUN_STATUS_LABELS as runStatusLabels } from './EvidenceTypes' export function ChecksTab({ checks, checksLoading, checkResults, runningCheckId, seedingChecks, onRun, onLoadResults, onSeed, }: { checks: EvidenceCheck[] checksLoading: boolean checkResults: Record runningCheckId: string | null seedingChecks: boolean onRun: (id: string) => void onLoadResults: (id: string) => void onSeed: () => void }) { return ( <> {!checksLoading && checks.length === 0 && (

Keine automatischen Checks vorhanden

Laden Sie ca. 15 Standard-Checks (TLS, Header, Zertifikate, etc.).

)} {checksLoading ? (
) : (
{checks.map(check => { const typeMeta = checkTypeLabels[check.check_type] || { label: check.check_type, color: 'bg-gray-100 text-gray-700' } const results = checkResults[check.id] || [] const lastResult = results[0] const isRunning = runningCheckId === check.id return (

{check.title}

{typeMeta.label} {!check.is_active && ( Deaktiviert )}
{check.description &&

{check.description}

}
Code: {check.check_code} {check.target_url && Ziel: {check.target_url}} Frequenz: {check.frequency} {check.last_run_at && Letzter Lauf: {new Date(check.last_run_at).toLocaleDateString('de-DE')}}
{lastResult && ( {runStatusLabels[lastResult.run_status]?.label || lastResult.run_status} )}
{results.length > 0 && (

Letzte Ergebnisse

{results.slice(0, 3).map(r => (
{runStatusLabels[r.run_status]?.label || r.run_status} {new Date(r.run_at).toLocaleString('de-DE')} {r.duration_ms}ms {r.findings_count > 0 && ( {r.findings_count} Findings ({r.critical_findings} krit.) )} {r.summary && {r.summary}}
))}
)}
) })}
)} ) }