In-App-Assistent — Chatbot mit LLM + RAG (OP-ASSIST-1) — Design
Kernaussage: Medidentas bekommt einen konversationellen Assistenten über App und Doku — ein
LLM mit RAG (Retrieval-Augmented Generation) auf die Live-Daten und die Doku. Er beantwortet die drei
True-North-Leitfragen (wo steht der Kunde? · was ist offen & fällig? · vollständig & rechtssicher
dokumentiert?) und "wie funktioniert X?", nimmt Feedback entgegen und ist vorschlagend, nicht
ausführend. Dieser Assistent löst den bisher offen gehaltenen Platzhalter "Medidentas-GPT" ein und ist
Teil des drkv-Standard-Bausteins In-App-Chatbot (CLAUDE.md → Standard-Bausteine). Status:
Design vor Umsetzung (kein Code) — OP-ASSIST-1.
Zielgruppe: IT-Dev/Architektur (Bauplan) + CISO/Security (Berechtigung, PII, Residenz). True-North- Bezug: der Assistent muss ≥ 1 Leitfrage direkter/schneller/genauer beantworten — sonst gehört eine Fähigkeit nicht hinein. Referenz-Implementierung: Taktano
docs/architektur/In-App-Assistent.md(dieselbe Architektur, andere Domäne); drkv-Vorlage:everything-as-code-template/docs/In-App-Assistent.md.
1. Drei Säulen
| # | Säule | Was | Quelle | Bezug |
|---|---|---|---|---|
| 1 | Doku-Q&A | "Wie funktioniert X?" (Onboarding, Wiedervorlage, Signatur …) | publizierte/Repo-Doku via RAG-Retrieval (berechtigungsgefiltert) | Doku-als-Meisterwerk |
| 2 | Insights | Die True-North-Fragen aus dem Mandanten/dem Betrieb + "was ist der nächste Schritt?" | Live-D1-State, abgeleitet (nie zusätzlich gespeichert) | G-2, domain/naechste-schritte.ts (D-46), GET /api/aktenreife (D-43) |
| 3 | Feedback | Bug/Wunsch/Verbesserung im Dialog melden | Nutzereingabe → git-nah (GitHub-Issue) → wieder angezeigt | Standard-Eigenschaft 4 |
Es ist ein Frontend mit Modi (kein Modus-Zwang) — der Modus ergibt sich aus der Frage.
2. Leitentscheidung: vorschlagend, nicht ausführend
Der Assistent schlägt vor — der Nutzer wendet an.
- Lesen/Insights: im Rahmen der Berechtigung (RBAC, s. §4).
- Aktionen (z. B. "Wiedervorlage anlegen", "Onboarding-Item als erledigt markieren"): der Assistent darf sie vorschlagen und die Konsequenz zeigen, aber Anwenden braucht immer eine explizite Nutzer-Bestätigung über denselben Server-Pfad wie die manuelle Bedienung — keine Doppellogik, kein Auto-Apply. Der Assistent kann nichts, was der Nutzer nicht auch von Hand dürfte.
3. Architektur
Bestehender Stack (CLAUDE.md → Architektur, A-4): Angular-Client · Cloudflare Worker (Hono) + D1 (EU) ·
Cloudflare Access. Der Assistent-Endpoint sitzt im Worker beim State — Insights werden aus D1
abgeleitet, kein zweiter Datenpfad.
4. Datenzugriff & Berechtigung (hart — G-5/G-6)
- Identität: Cloudflare Access (R7). Der Assistent sieht nur, was der angemeldete Nutzer darf.
- RBAC je Mandant (D-48,
domain/rechte.ts·sichtbareMandanten): Insights/Datentools laufen durch dieselben Chokepoints wie die manuelle Bedienung (Berater sieht nur eigene + unzugeordnete Mandanten; Fremd → 404). Der Assistent umgeht keinen Filter. - Zugriffs-Protokollierung (D-50,
domain/zugriff.ts): Lesezugriffe des Assistenten auf sensible Entitäten (Mandant, Beratungsdoku, Gesundheitsbogen R6-F18, Datei-Inhalte) werden append-only PII-arm in die R8-Hash-Kette protokolliert — wie ein Nutzer-Zugriff, kein Bypass. - Insights ohne PII-Leak: Antworten bevorzugt aggregiert/abgeleitet (Status, Fälligkeiten, Zahlen); konkrete PII nur, wenn der Nutzer sie ohnehin beim Mandanten sehen darf, und nichts davon zusätzlich gespeichert (G-2).
5. Retrieval (RAG) — robust, deploy-sicher, PII-frei
- RAG/Embedding-Index (Cloudflare Vectorize, EU-Embeddings) als Produktionspfad; Keyword- Fallback über einen gebündelten Doku-Index (deploy-sicher, kein externer Dienst nötig).
- Nur Doku indexieren — kein PII, keine Mandanten-/Bestandsdaten im Vektor-Store (Vectorize bietet Stand heute keine EU-Jurisdiktion). Frage-Embeddings über das EU-Modell. → Compliance-Zeile + Risiko- Eintrag führen (DSGVO/revDSG, analog Taktano C-19/RISK-17).
- Doku-Sichtbarkeit (intern vs. extern) respektieren; der Retrieval-Kern liefert nur berechtigte Docs.
6. Grounding gegen Halluzination
Ein Datenmodell-Steckbrief (verbindliche Enums/Status-Lebenszyklen: Lifecycle Lead→…→archiviert, Onboarding-Pflicht-Items, Signatur-Niveaus SES/AES/QES, Wiedervorlage-Status) steht immer im System- Prompt. Zwei feste Regeln: konkrete Namen/Zahlen/Status nur aus echten Werkzeug-Ergebnissen (sonst ehrlich "keine Daten"); strikt an die Wertebereiche halten.
7. Feedback — sammeln und anzeigen (Standard-Eigenschaft 4)
- Sammeln: "Feedback zu diesem Element" (Element-Anker + optional Screenshot mit PII-Verpixeln); ein
deterministischer
/feedback-Endpoint (kein Umweg übers LLM) legt ein GitHub-Issue an (Labelfeedback) und quittiert ehrlich (Issue-Nr. / echter Fehlergrund). Dormant ohne Token. Kein Klartext-PII im Issue-Body (Actor nur im Audit-Log R8). - Anzeigen (aus den Issues abgeleitet, kein zweiter Datenbestand): read-only Übersicht "wo gibt es Feedback, offen/erledigt?" in App und Doku; Overlay/Marker am verorteten Element, per Toggle schaltbar; neues Feedback live an alle (Doku per TTL/Seitenwechsel).
8. Betrieb, Compliance & Nachweis
- Observability (OP-OBS-1): LLM-/Tool-Calls über den Logger-Wrapper,
trace_id-korreliert, PII-Scrubbing. - Kosten (G-7, MED-OP-COST-1/2): LLM-/Embedding-Spend fließt als Betriebskosten in
Kosten.md. - Compliance (DE/AT/CH): EU-LLM/EU-Embeddings (DSGVO-Residenz); Vectorize-Residenz als Risiko führen;
AV-Vertrag mit dem LLM-Provider. →
betrieb/Compliance.md+betrieb/Risikoregister.md. - Self-Tests/CI: reine Kerne (Retrieval · Tools · Feedback-Mapper) als Vitest-Demos; Client↔Server-DTO-
Symmetrie prüfen; in
betrieb/Test-Uebersicht.mdnachziehen.
9. Bau-Reihenfolge (Vorschlag, OP-ASSIST-1)
- Insights read-only (reine Funktionen für die drei Leitfragen, aus Mandant/Aktenreife abgeleitet) + Vitest.
- LLM-Tool-Calling-Endpoint
/api/assistent(Säule 1 + 2), RBAC-gebunden, dormant ohne Key. - Feedback→Issue (deterministisch) + Audit + Anzeige.
- App-Panel + Element-/Screenshot-Feedback; danach Doku-Widget (nur Doku-Suche).
- RAG scharf (Vectorize-Index nur Doku + Re-Index beim Doku-Deploy) — Keyword-Fallback bleibt.
10. Bezug
OP-ASSIST-1 (Bau) · CLAUDE.md → Standard-Bausteine · R7/Cloudflare Access · D-48 (RBAC) · D-50 (Zugriffslog)
· R8/G-4 (Audit) · G-2 (derived) · G-5/G-6 (PII/Residenz) · G-7 (Kosten) · OP-OBS-1 (Observability) ·
Standard-Vorlage: everything-as-code-template/docs/In-App-Assistent.md · Referenz: Taktano gleichnamiges Doc.