import { CodeBlock, InfoBox } from '@/components/DevPortalLayout'

export function MultiTenancyLlmAuditSection() {
  return (
    <>
      <h2 id="multi-tenancy">9. Multi-Tenancy und Zugriffskontrolle</h2>
      <p>
        Das System ist <strong>mandantenfaehig</strong> (Multi-Tenant): Mehrere Organisationen
        koennen es gleichzeitig nutzen, ohne dass sie gegenseitig auf ihre Daten zugreifen koennen.
      </p>

      <h3>9.1 Rollenbasierte Zugriffskontrolle (RBAC)</h3>
      <div className="not-prose my-4 overflow-x-auto">
        <table className="min-w-full divide-y divide-gray-200 text-sm">
          <thead className="bg-gray-50">
            <tr>
              <th className="px-4 py-3 text-left font-medium text-gray-500">Rolle</th>
              <th className="px-4 py-3 text-left font-medium text-gray-500">Darf</th>
            </tr>
          </thead>
          <tbody className="divide-y divide-gray-200">
            <tr><td className="px-4 py-3 font-medium">Mitarbeiter</td><td className="px-4 py-3">Anwendungsfaelle einreichen, eigene Bewertungen einsehen</td></tr>
            <tr><td className="px-4 py-3 font-medium">Teamleiter</td><td className="px-4 py-3">E1-Eskalationen pruefen, Team-Assessments einsehen</td></tr>
            <tr><td className="px-4 py-3 font-medium">DSB (Datenschutzbeauftragter)</td><td className="px-4 py-3">E2/E3-Eskalationen pruefen, alle Assessments einsehen, Policies aendern</td></tr>
            <tr><td className="px-4 py-3 font-medium">Rechtsabteilung</td><td className="px-4 py-3">E3-Eskalationen pruefen, Grundsatzentscheidungen</td></tr>
            <tr><td className="px-4 py-3 font-medium">Administrator</td><td className="px-4 py-3">System konfigurieren, Nutzer verwalten, LLM-Policies festlegen</td></tr>
          </tbody>
        </table>
      </div>

      <h3>9.2 PII-Erkennung und -Schutz</h3>
      <p>
        Bevor Texte an ein Sprachmodell gesendet werden, durchlaufen sie eine automatische
        <strong> PII-Erkennung</strong>. Das System erkennt ueber 20 Arten personenbezogener Daten
        (E-Mail-Adressen, Telefonnummern, Namen, IP-Adressen, etc.).
        Je nach Konfiguration werden erkannte PII-Daten <strong>geschwuerzt</strong>, <strong>maskiert</strong>
        oder nur im Audit-Log <strong>markiert</strong>.
      </p>

      <h2 id="llm-nutzung">10. Wie das System KI nutzt (und wie nicht)</h2>
      <div className="not-prose my-6 overflow-x-auto">
        <table className="min-w-full divide-y divide-gray-200 text-sm">
          <thead className="bg-gray-50">
            <tr>
              <th className="px-4 py-3 text-left font-medium text-gray-500">Aufgabe</th>
              <th className="px-4 py-3 text-left font-medium text-gray-500">Entschieden von</th>
              <th className="px-4 py-3 text-left font-medium text-gray-500">Rolle der KI</th>
            </tr>
          </thead>
          <tbody className="divide-y divide-gray-200">
            <tr><td className="px-4 py-3">Machbarkeit (YES/CONDITIONAL/NO)</td><td className="px-4 py-3 font-medium">Deterministische Regeln</td><td className="px-4 py-3 text-gray-400">Keine</td></tr>
            <tr><td className="px-4 py-3">Risikoscore berechnen</td><td className="px-4 py-3 font-medium">Regelbasierte Berechnung</td><td className="px-4 py-3 text-gray-400">Keine</td></tr>
            <tr><td className="px-4 py-3">Eskalation ausloesen</td><td className="px-4 py-3 font-medium">Schwellenwerte + Regellogik</td><td className="px-4 py-3 text-gray-400">Keine</td></tr>
            <tr className="bg-blue-50"><td className="px-4 py-3">Ergebnis erklaeren</td><td className="px-4 py-3 text-gray-400">--</td><td className="px-4 py-3 font-medium text-blue-800">LLM + RAG-Kontext</td></tr>
            <tr className="bg-blue-50"><td className="px-4 py-3">Rechtsfragen beantworten</td><td className="px-4 py-3 text-gray-400">--</td><td className="px-4 py-3 font-medium text-blue-800">LLM + RAG (Rechtskorpus)</td></tr>
            <tr className="bg-blue-50"><td className="px-4 py-3">Dokumente generieren (DSFA, TOM, VVT)</td><td className="px-4 py-3 text-gray-400">--</td><td className="px-4 py-3 font-medium text-blue-800">LLM + Vorlagen</td></tr>
          </tbody>
        </table>
      </div>

      <h3>LLM-Provider und Fallback</h3>
      <ol>
        <li><strong>Primaer: Ollama (lokal)</strong> -- Qwen 2.5 32B bzw. Mistral, laeuft direkt auf dem Server. Keine Daten verlassen das lokale Netzwerk.</li>
        <li><strong>Fallback: Anthropic Claude</strong> -- Wird nur aktiviert, wenn das lokale Modell nicht verfuegbar ist.</li>
      </ol>

      <h2 id="audit-trail">11. Audit-Trail: Alles wird protokolliert</h2>
      <p>Saemtliche Aktionen im System werden revisionssicher protokolliert:</p>
      <ul>
        <li>Jede Compliance-Bewertung mit allen Ein- und Ausgaben</li>
        <li>Jede Eskalationsentscheidung mit Begruendung</li>
        <li>Jeder LLM-Aufruf (wer hat was wann gefragt, welches Modell wurde verwendet)</li>
        <li>Jede Aenderung an Controls, Evidence und Policies</li>
        <li>Jeder Login und Daten-Export</li>
      </ul>

      <InfoBox type="info" title="Datenschutz des Audit-Trails">
        Der Use-Case-Text wird <strong>nur mit Einwilligung des Nutzers</strong> gespeichert.
        Standardmaessig wird nur ein SHA-256-Hash des Textes gespeichert.
      </InfoBox>

      <h2 id="security">12. Security Scanner: Technische Sicherheitspruefung</h2>
      <ul>
        <li><strong>Container-Scanning (Trivy):</strong> Prueft Docker-Images auf bekannte Schwachstellen (CVEs)</li>
        <li><strong>Statische Code-Analyse (Semgrep):</strong> Sucht im Quellcode nach Sicherheitsluecken</li>
        <li><strong>Secret Detection (Gitleaks):</strong> Findet versehentlich eingecheckte Passwoerter, API-Keys und Tokens</li>
        <li><strong>SBOM-Generierung:</strong> Erstellt eine vollstaendige Liste aller verwendeten Bibliotheken und deren Lizenzen</li>
      </ul>

      <h2 id="zusammenfassung">13. Zusammenfassung: Der komplette Datenfluss</h2>

      <CodeBlock language="text" filename="Der komplette Compliance-Workflow">
{`SCHRITT 1: FAKTEN SAMMELN
Nutzer fuellt Fragebogen aus: Welche Daten? Welcher Zweck? Welche Branche? Wo gehostet?

SCHRITT 2: ANWENDBARKEIT PRUEFEN
Obligations Framework: DSGVO? AI Act? NIS2?

SCHRITT 3: REGELN PRUEFEN (45+ Regeln)
  R-001 (WARN): Personenbezogene Daten +10 Risiko
  R-060 (WARN): KI-Transparenz fehlt   +15 Risiko
  → Gesamt-Risikoscore: 35/100 (LOW), Machbarkeit: CONDITIONAL

SCHRITT 4: CONTROLS ZUORDNEN
  C_EXPLICIT_CONSENT, C_TRANSPARENCY, C_DATA_MINIMIZATION

SCHRITT 5: ESKALATION (bei Bedarf)
  Score 35 → Stufe E1 → Teamleiter, SLA 24h

SCHRITT 6: ERKLAERUNG GENERIEREN
  LLM + RAG: Gesetzesartikel suchen, Erklaerungstext generieren

SCHRITT 7: DOKUMENTATION
  DSFA, TOM, VVT, Compliance-Report (PDF/ZIP/JSON)

SCHRITT 8: MONITORING
  Controls regelmaessig pruefen, Nachweise auf Ablauf ueberwachen`}
      </CodeBlock>

      <InfoBox type="success" title="Das Wichtigste in einem Satz">
        Der Compliance Hub nimmt die Beschreibung eines KI-Vorhabens entgegen, prueft es gegen
        ueber 45 deterministische Regeln und 400+ Gesetzesartikel, berechnet ein Risiko, ordnet
        Massnahmen zu, eskaliert bei Bedarf an menschliche Pruefer und dokumentiert alles
        revisionssicher -- wobei die KI nur fuer Erklaerungen und Zusammenfassungen eingesetzt wird,
        niemals fuer die eigentliche Compliance-Entscheidung.
      </InfoBox>
    </>
  )
}
