'use client' import React from 'react' import type { ComplianceScopeState, ScopeDecision, ComplianceDepthLevel } from '@/lib/sdk/compliance-scope-types' import { DEPTH_LEVEL_LABELS, DEPTH_LEVEL_DESCRIPTIONS, DEPTH_LEVEL_COLORS, DOCUMENT_TYPE_LABELS } from '@/lib/sdk/compliance-scope-types' interface ScopeOverviewTabProps { scopeState: ComplianceScopeState onStartProfiling: () => void onRefreshDecision: () => void } export function ScopeOverviewTab({ scopeState, onStartProfiling, onRefreshDecision }: ScopeOverviewTabProps) { const { decision, answers } = scopeState const hasAnswers = answers && answers.length > 0 const getScoreColor = (score: number): string => { if (score >= 80) return 'from-red-500 to-red-600' if (score >= 60) return 'from-orange-500 to-orange-600' if (score >= 40) return 'from-yellow-500 to-yellow-600' return 'from-green-500 to-green-600' } const getScoreColorBg = (score: number): string => { if (score >= 80) return 'bg-red-100' if (score >= 60) return 'bg-orange-100' if (score >= 40) return 'bg-yellow-100' return 'bg-green-100' } const renderScoreGauge = (label: string, score: number | undefined) => { const value = score ?? 0 return (
{label} {value}/100
) } const renderLevelBadge = () => { if (!decision?.level) { return (
?

Noch nicht bewertet

Führen Sie das Scope-Profiling durch, um Ihre Compliance-Tiefe zu bestimmen.

) } const levelColors = DEPTH_LEVEL_COLORS[decision.level] return (
{decision.level}

{DEPTH_LEVEL_LABELS[decision.level]}

{DEPTH_LEVEL_DESCRIPTIONS[decision.level]}

) } const renderActiveHardTriggers = () => { if (!decision?.hardTriggers || decision.hardTriggers.length === 0) { return null } const activeHardTriggers = decision.hardTriggers.filter((ht) => ht.matched) if (activeHardTriggers.length === 0) { return null } return (

Aktive Hard-Trigger

{activeHardTriggers.map((trigger, idx) => (

{trigger.label}

{trigger.description}

{trigger.legalReference && (

Rechtsgrundlage: {trigger.legalReference}

)} {trigger.matchedValue && (

Erfasster Wert: {trigger.matchedValue}

)}
))}
) } const renderDocumentSummary = () => { if (!decision?.requiredDocuments) { return null } const mandatoryDocs = decision.requiredDocuments.filter((doc) => doc.isMandatory) const optionalDocs = decision.requiredDocuments.filter((doc) => !doc.isMandatory) const totalEffortDays = decision.requiredDocuments.reduce( (sum, doc) => sum + (doc.effortEstimate?.days ?? 0), 0 ) return (

Dokumenten-Übersicht

{mandatoryDocs.length}
Pflichtdokumente
{optionalDocs.length}
Optional
{totalEffortDays}
Tage Aufwand (geschätzt)
) } const renderRiskFlagsSummary = () => { if (!decision?.riskFlags || decision.riskFlags.length === 0) { return null } const critical = decision.riskFlags.filter((rf) => rf.severity === 'critical').length const high = decision.riskFlags.filter((rf) => rf.severity === 'high').length const medium = decision.riskFlags.filter((rf) => rf.severity === 'medium').length return (

Risiko-Flags

{critical > 0 && (
Kritisch {critical}
)} {high > 0 && (
Hoch {high}
)} {medium > 0 && (
Mittel {medium}
)}
) } return (
{/* Level Badge */} {renderLevelBadge()} {/* Scores Section */} {decision && (

Score-Übersicht

{renderScoreGauge('Risiko-Score', decision.scores?.riskScore)} {renderScoreGauge('Komplexitäts-Score', decision.scores?.complexityScore)} {renderScoreGauge('Assurance-Score', decision.scores?.assuranceScore)}
{renderScoreGauge('Gesamt-Score', decision.scores?.compositeScore)}
)} {/* Active Hard Triggers */} {renderActiveHardTriggers()} {/* Document Summary */} {renderDocumentSummary()} {/* Risk Flags Summary */} {renderRiskFlagsSummary()} {/* CTA Section */}

{!hasAnswers ? 'Bereit für das Scope-Profiling?' : 'Ergebnis aktualisieren'}

{!hasAnswers ? 'Beantworten Sie einige Fragen zu Ihrem Unternehmen und erhalten Sie eine präzise Compliance-Bewertung.' : 'Haben sich Ihre Unternehmensparameter geändert? Aktualisieren Sie Ihre Bewertung.'}

) }