Zum Hauptinhalt springen

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äuleWasQuelleBezug
1Doku-Q&A"Wie funktioniert X?" (Onboarding, Wiedervorlage, Signatur …)publizierte/Repo-Doku via RAG-Retrieval (berechtigungsgefiltert)Doku-als-Meisterwerk
2InsightsDie 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)
3FeedbackBug/Wunsch/Verbesserung im Dialog meldenNutzereingabe → git-nah (GitHub-Issue) → wieder angezeigtStandard-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 (Label feedback) 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.md nachziehen.

9. Bau-Reihenfolge (Vorschlag, OP-ASSIST-1)

  1. Insights read-only (reine Funktionen für die drei Leitfragen, aus Mandant/Aktenreife abgeleitet) + Vitest.
  2. LLM-Tool-Calling-Endpoint /api/assistent (Säule 1 + 2), RBAC-gebunden, dormant ohne Key.
  3. Feedback→Issue (deterministisch) + Audit + Anzeige.
  4. App-Panel + Element-/Screenshot-Feedback; danach Doku-Widget (nur Doku-Suche).
  5. 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.