Files
breakpilot-compliance/developer-portal/app/development/byoeh/_components/RagKeySharingSection.tsx
Sharang Parnerkar 9ec72ed681 refactor(developer-portal): split iace, docs, byoeh pages
Extract each page into colocated _components/ sections to bring
page.tsx files from 1008/891/769 LOC down to 57/23/21 LOC,
well within the 500-line hard cap.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-18 08:45:13 +02:00

101 lines
6.5 KiB
TypeScript

import { CodeBlock } from '@/components/DevPortalLayout'
export function RagKeySharingSection() {
return (
<>
<h2 id="rag-pipeline">8. RAG-Pipeline: KI-Verarbeitung mit Kundenkontext</h2>
<p>
Die KI nutzt die vom Kunden hochgeladenen Referenzdokumente als Wissensbasis.
Dieser Prozess heisst <strong>RAG (Retrieval Augmented Generation)</strong>.
</p>
<h3>8.1 Indexierung der Referenzdokumente</h3>
<CodeBlock language="text" filename="Indexierung: Vom Upload zum durchsuchbaren Referenzdokument">
{`Referenzdokument (verschluesselt auf Server)
|
v
┌────────────────────────────────────┐
│ 1. Passphrase-Verifikation │ ← SDK sendet Schluessel-Hash
└──────────┬─────────────────────────┘
v
┌────────────────────────────────────┐
│ 2. Entschluesselung │ ← Temporaer im Arbeitsspeicher
└──────────┬─────────────────────────┘
v
┌────────────────────────────────────┐
│ 3. Text-Extraktion │ ← PDF → Klartext
└──────────┬─────────────────────────┘
v
┌────────────────────────────────────┐
│ 4. Chunking │ ← ~1.000-Zeichen-Abschnitte
└──────────┬─────────────────────────┘
v
┌────────────────────────────────────┐
│ 5. Embedding │ ← Text → 1.536 Zahlen
└──────────┬─────────────────────────┘
v
┌────────────────────────────────────┐
│ 6. Re-Encryption │ ← Jeder Chunk wird erneut verschluesselt
└──────────┬─────────────────────────┘
v
┌────────────────────────────────────┐
│ 7. Qdrant-Indexierung │ ← Vektor + verschluesselter Chunk
│ tenant_id: "firma-alpha-001" │ mit Tenant-Filter gespeichert
│ training_allowed: false │
└────────────────────────────────────┘`}
</CodeBlock>
<h3>8.2 Wie die KI eine Anfrage bearbeitet (RAG-Query)</h3>
<ol>
<li><strong>Anfrage formulieren:</strong> Das SDK sendet eine Suchanfrage mit dem zu verarbeitenden Dokument.</li>
<li><strong>Semantische Suche:</strong> Die Anfrage wird in einen Vektor umgewandelt und gegen die Referenz-Vektoren in Qdrant gesucht -- <em>nur im Namespace des Kunden</em>.</li>
<li><strong>Entschluesselung:</strong> Die gefundenen Chunks werden mit der Passphrase des Kunden entschluesselt.</li>
<li><strong>KI-Antwort:</strong> Die entschluesselten Referenzpassagen werden als Kontext an die KI uebergeben.</li>
</ol>
<h2 id="key-sharing">9. Key Sharing: Zusammenarbeit ermoeglichen</h2>
<p>
Das Key-Sharing-System ermoeglicht es dem Eigentuemer, seinen Namespace sicher mit
anderen zu teilen (z.B. fuer Vier-Augen-Prinzip, Qualitaetskontrolle oder externe Audits).
</p>
<h3>9.1 Einladungs-Workflow</h3>
<CodeBlock language="text" filename="Key Sharing: Sicheres Teilen zwischen Bearbeitern">
{`Eigentuemer Server Eingeladener
│ │ │
│ 1. Einladung senden │ │
│─────────────────────────────────▶ │
│ │ 2. Einladung erstellt │
│ │ (14 Tage gueltig) │
│ │ 3. Benachrichtigung ──────▶│
│ │ 4. Einladung annehmen
│ │◀─────────────────────────────│
│ │ 5. Key-Share erstellt │
│ │ 6. Eingeladener kann ──────▶│
│ │ Daten im Namespace │
│ │ abfragen │
│ 7. Zugriff widerrufen │ │
│─────────────────────────────────▶ Share deaktiviert │`}
</CodeBlock>
<h3>9.2 Rollen beim Key-Sharing</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">Typischer Nutzer</th>
<th className="px-4 py-3 text-left font-medium text-gray-500">Rechte</th>
</tr>
</thead>
<tbody className="divide-y divide-gray-200">
<tr><td className="px-4 py-3 font-medium">Owner</td><td className="px-4 py-3">Projektverantwortlicher</td><td className="px-4 py-3">Vollzugriff, kann teilen &amp; widerrufen</td></tr>
<tr><td className="px-4 py-3 font-medium">Reviewer</td><td className="px-4 py-3">Qualitaetssicherung</td><td className="px-4 py-3">Lesen, RAG-Queries, eigene Anmerkungen</td></tr>
<tr><td className="px-4 py-3 font-medium">Auditor</td><td className="px-4 py-3">Externer Pruefer</td><td className="px-4 py-3">Nur Lesen (Aufsichtsfunktion)</td></tr>
</tbody>
</table>
</div>
</>
)
}