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>
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
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 & 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>
|
||||
</>
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user