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

export function SdkPseudonymSection() {
  return (
    <>
      <h2 id="sdk-integration">4. SDK-Integration</h2>
      <CodeBlock language="typescript" filename="Beispiel: SDK-Integration (TypeScript)">
{`import { BreakpilotSDK, NamespaceClient } from '@breakpilot/compliance-sdk'

// 1. SDK initialisieren mit API-Key
const sdk = new BreakpilotSDK({
  apiKey: process.env.BREAKPILOT_API_KEY,
  endpoint: 'https://api.breakpilot.de'
})

// 2. Namespace-Client erstellen (pro Mandant/Abteilung)
const namespace = sdk.createNamespace({
  tenantId: 'kunde-firma-abc',
  passphrase: process.env.ENCRYPTION_PASSPHRASE  // Bleibt lokal!
})

// 3. Dokument pseudonymisieren & verschluesselt hochladen
const result = await namespace.upload({
  file: documentBuffer,
  metadata: { type: 'vertrag', category: 'due-diligence' },
  pseudonymize: true,
  headerRedaction: true
})
// result.docToken = "a7f3c2d1-4e9b-4a5f-8c7d-..."

// 4. Referenzdokument hochladen (z.B. Pruefkriterien)
await namespace.uploadReference({
  file: referenceBuffer,
  title: 'Pruefkriterien Vertrag Typ A'
})

// 5. KI-Verarbeitung anstossen
const analysis = await namespace.analyze({
  docToken: result.docToken,
  prompt: 'Pruefe den Vertrag gegen die Referenzkriterien',
  useRAG: true
})

// 6. Ergebnisse entschluesseln (passiert automatisch im SDK)
console.log(analysis.findings)
console.log(analysis.score)

// 7. Re-Identifizierung (Token → Originalname)
const identityMap = await namespace.getIdentityMap()
const originalName = identityMap[result.docToken]`}
      </CodeBlock>

      <InfoBox type="success" title="Zero-Knowledge-Architektur">
        Die Passphrase verlässt niemals das System des Kunden. Das SDK verschluesselt
        und entschluesselt <strong>ausschliesslich lokal</strong>.
      </InfoBox>

      <h2 id="pseudonymisierung">5. Pseudonymisierung: Wie personenbezogene Daten entfernt werden</h2>

      <h3>5.1 Der doc_token: Ein zufaelliger Identifikator</h3>
      <p>
        Jedes Dokument erhaelt einen <strong>doc_token</strong> -- einen 128-Bit-Zufallscode im
        UUID4-Format. Dieser Token ist <strong>kryptographisch zufaellig</strong>, kann
        <strong> nicht zurueckgerechnet</strong> werden und dient als <strong>eindeutiger Schluessel</strong>
        fuer die spaetere Re-Identifizierung.
      </p>

      <h3>5.2 Header-Redaction: PII wird entfernt</h3>
      <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">Methode</th>
              <th className="px-4 py-3 text-left font-medium text-gray-500">Wie es funktioniert</th>
              <th className="px-4 py-3 text-left font-medium text-gray-500">Wann verwenden</th>
            </tr>
          </thead>
          <tbody className="divide-y divide-gray-200">
            <tr>
              <td className="px-4 py-3 font-medium">Einfache Redaction</td>
              <td className="px-4 py-3">Definierter Bereich des Dokuments wird entfernt</td>
              <td className="px-4 py-3">Standardisierte Formulare mit festem Layout</td>
            </tr>
            <tr>
              <td className="px-4 py-3 font-medium">Smarte Redaction</td>
              <td className="px-4 py-3">OpenCV/NER erkennt Textbereiche mit PII und entfernt gezielt</td>
              <td className="px-4 py-3">Freitext-Dokumente, variable Layouts</td>
            </tr>
          </tbody>
        </table>
      </div>

      <h3>5.3 Die Identitaets-Map: Nur der Kunde kennt die Zuordnung</h3>
      <CodeBlock language="text" filename="Datenmodell: Namespace-Session (vereinfacht)">
{`NamespaceSession
├── tenant_id                = "kunde-firma-abc"      ← Pflichtfeld (Isolation)
├── encrypted_identity_map   = [verschluesselte Bytes]  ← Nur mit Passphrase lesbar
├── identity_map_iv          = "a3f2c1..."
│
└── PseudonymizedDocument (pro Dokument)
    ├── doc_token             = "a7f3c2d1-..."         ← Zufaelliger Token (Primary Key)
    ├── session_id            = [Referenz]
    └── (Kein Name, keine personenbezogenen Daten)`}
      </CodeBlock>

      <InfoBox type="success" title="DSGVO Art. 4 Nr. 5 konform">
        Die Pseudonymisierung erfuellt die Definition der DSGVO: Personenbezogene Daten
        koennen <strong>ohne Hinzuziehung zusaetzlicher Informationen</strong>
        (der verschluesselten Identitaets-Map + der Passphrase) nicht mehr einer bestimmten Person zugeordnet werden.
      </InfoBox>
    </>
  )
}
