'use client' import React from 'react' interface Audit { id: string name: string target_name: string total_questions: number answered_questions: number } interface ScoreResult { audit_id: string total_questions: number answered: number passed: number failed: number skipped: number compliance_score: number by_regulation: Record by_severity: Record } interface Props { audit: Audit score: ScoreResult } function scoreColor(score: number): string { if (score >= 80) return 'text-green-600' if (score >= 50) return 'text-yellow-600' return 'text-red-600' } function scoreBg(score: number): string { if (score >= 80) return 'bg-green-100 border-green-200' if (score >= 50) return 'bg-yellow-100 border-yellow-200' return 'bg-red-100 border-red-200' } export function AuditResult({ audit, score }: Props) { const regEntries = Object.entries(score.by_regulation) const sevEntries = Object.entries(score.by_severity) return (
{/* Score Overview */}
{Math.round(score.compliance_score)}%
Compliance Score
{audit.name}{audit.target_name ? ` — ${audit.target_name}` : ''}
{/* Summary Stats */}
{score.answered}
Beantwortet
{score.passed}
Bestanden
{score.failed}
Nicht bestanden
{score.skipped}
Uebersprungen
{/* By Regulation */} {regEntries.length > 0 && (

Nach Regulierung

{regEntries.map(([reg, data]) => (
{reg}
= 80 ? 'bg-green-500' : data.score >= 50 ? 'bg-yellow-500' : 'bg-red-500' }`} style={{ width: `${data.score}%` }} />
{Math.round(data.score)}% {data.passed}/{data.total}
))}
)} {/* By Severity */} {sevEntries.length > 0 && (

Nach Schweregrad

{sevEntries.map(([sev, data]) => (
{sev}
{data.passed}/{data.total}
{data.failed} nicht bestanden
))}
)} {/* Actions */}
Zurueck zur Liste
) }