ai-kanban: Board-Status korrigiert, ENG-08 nachgetragen
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (pull_request) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (push) Canceled after 0s
Core-Schnittstellen-Vertragstests / contract-tests (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (pull_request) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (pull_request) Canceled after 0s
CI / Connect Security-Test-Gate (QA-01 AC4, Merge-Gate) (pull_request) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (pull_request) Canceled after 0s
CI / Web (dms-browser) (pull_request) Canceled after 0s
CI / Web (pdf-viewer) (pull_request) Canceled after 0s
CI / Web (shl) (pull_request) Canceled after 0s
Supply-Chain-Scan (Go) / govulncheck (pull_request) Canceled after 0s
Supply-Chain-Scan (npm) / npm-audit (pull_request) Canceled after 0s
Core-Pflichttest-Gate / pflichttest-gate (pull_request) Canceled after 0s
RBAC-Rollenhierarchie-Pflichtgate / rbac-policy-invariant (pull_request) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (pull_request) Canceled after 0s
37 bereits gemergte Tickets (ENG-01-07, CLS-01-05, EXT-01-05, SUM-01-04, SEM-01-06, WFS-01-03, GOV-01-07) waren faelschlich als Backlog markiert, jetzt auf Fertig. ENG-08 war trotz gemergtem Code komplett im Board gefehlt (gleiches Muster wie workflow-kanban ENG-09/ENG-11, siehe #337), jetzt nachgetragen. QA-01 bis QA-09 bleiben korrekt Backlog -- nicht umgesetzt. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
382997e0d2
commit
ae6d9b2c60
2 files changed
+119
-75
No files matched your search
+45
-37
@@ -1,172 +1,172 @@
|
||||
Code,Titel,Epic,Rolle,Komplexitaet,Aufwand_PT,Welle,Status,Technik,Beschreibung,Haengt_ab_von,Schaltet_frei,Akzeptanzkriterien,Pruefungen
|
||||
ENG-01,"Provider-Interface (OpenAI-kompatibel, austauschbar)",🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,1,Backlog,"Go-Interface, Chat-/Completion-/Embedding-Abstraktion","Einheitliche Schnittstelle für Inferenz-Aufrufe (Chat, Completion, Embedding), OpenAI-kompatibles Anfrage-/Antwortformat, austauschbar hinter einem Provider-Interface.",,ENG-02 ENG-03 ENG-04 ENG-05 ENG-06 GOV-06,"Provider-Interface deckt Chat, Completion und Embedding ab
|
||||
ENG-01,"Provider-Interface (OpenAI-kompatibel, austauschbar)",🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,1,Fertig,"Go-Interface, Chat-/Completion-/Embedding-Abstraktion","Einheitliche Schnittstelle für Inferenz-Aufrufe (Chat, Completion, Embedding), OpenAI-kompatibles Anfrage-/Antwortformat, austauschbar hinter einem Provider-Interface.",,ENG-02 ENG-03 ENG-04 ENG-05 ENG-06 GOV-06,"Provider-Interface deckt Chat, Completion und Embedding ab
|
||||
Ein neuer Provider lässt sich ohne Änderung der Aufrufer einbinden
|
||||
Fehler eines Providers werden einheitlich abgebildet","Zwei Provider-Implementierungen gegen dasselbe Interface getestet
|
||||
Timeout- und Fehlerfall am Interface geprüft
|
||||
Vertrag per Contract-Test abgesichert"
|
||||
ENG-02,"Ollama-Adapter (lokal, Standard)",🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Backlog,"Ollama-HTTP-API, lokale Modell-Bereitstellung","Adapter für lokal gehostete Ollama-Instanz als Standard-Provider, inklusive Modell-Warmup und Health-Check.",ENG-01,GOV-03 QA-02,"Ollama-Adapter erfüllt das Provider-Interface vollständig
|
||||
ENG-02,"Ollama-Adapter (lokal, Standard)",🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Fertig,"Ollama-HTTP-API, lokale Modell-Bereitstellung","Adapter für lokal gehostete Ollama-Instanz als Standard-Provider, inklusive Modell-Warmup und Health-Check.",ENG-01,GOV-03 QA-02,"Ollama-Adapter erfüllt das Provider-Interface vollständig
|
||||
Nicht erreichbare Ollama-Instanz wird erkannt und gemeldet
|
||||
Standard-Provider ist ohne weitere Konfiguration aktiv
|
||||
Modellgrößen-Empfehlung je Betriebsstufe ist dokumentiert","Anfrage gegen lokale Ollama-Instanz erfolgreich beantwortet
|
||||
Ausfall der Instanz führt zu klarer Fehlermeldung, nicht zu Absturz
|
||||
Modellwechsel ohne Dienst-Neustart geprüft
|
||||
Dokumentierte Modellgrößen-Empfehlung mit tatsächlichem Ressourcenverbrauch abgeglichen"
|
||||
ENG-03,Externer-API-Adapter (optional),🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Backlog,"OpenAI-kompatible Cloud-API, API-Schlüssel-Verwaltung","Optionaler Adapter für externe, OpenAI-kompatible Cloud-Anbieter als Alternative zum lokalen Standardbetrieb.",ENG-01,GOV-03 QA-02,"Externer Adapter erfüllt das Provider-Interface vollständig
|
||||
ENG-03,Externer-API-Adapter (optional),🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Fertig,"OpenAI-kompatible Cloud-API, API-Schlüssel-Verwaltung","Optionaler Adapter für externe, OpenAI-kompatible Cloud-Anbieter als Alternative zum lokalen Standardbetrieb.",ENG-01,GOV-03 QA-02,"Externer Adapter erfüllt das Provider-Interface vollständig
|
||||
Aktivierung ist ausdrücklich und je Tenant konfigurierbar
|
||||
Zugangsdaten liegen ausschließlich in Umgebungsvariablen","Anfrage gegen externen Anbieter erfolgreich beantwortet
|
||||
Deaktivierter externer Adapter wird nie automatisch verwendet
|
||||
Kein Dokumentinhalt verlässt das System ohne explizite Freigabe"
|
||||
ENG-04,Modellverwaltung & -auswahl je Tenant,🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Backlog,"Modellregister, Tenant-Konfiguration, PostgreSQL",Verwaltung verfügbarer Modelle je Provider und Auswahl des aktiven Modells je Tenant und Funktion.,ENG-01,QA-02,"Modelle sind je Tenant konfigurierbar hinterlegt
|
||||
ENG-04,Modellverwaltung & -auswahl je Tenant,🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Fertig,"Modellregister, Tenant-Konfiguration, PostgreSQL",Verwaltung verfügbarer Modelle je Provider und Auswahl des aktiven Modells je Tenant und Funktion.,ENG-01,QA-02,"Modelle sind je Tenant konfigurierbar hinterlegt
|
||||
Modellwechsel wirkt ohne Neustart
|
||||
Nicht verfügbares Modell wird beim Speichern abgewiesen","Modellwechsel im Test sofort wirksam
|
||||
Fehlkonfiguration wird beim Speichern verhindert
|
||||
Mandantentrennung der Modellauswahl geprüft"
|
||||
ENG-05,Inferenz-Queue,🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Backlog,"Postgres-Jobqueue, Worker, Rückstandsverarbeitung","Asynchrone Warteschlange für Inferenz-Aufrufe, damit lange KI-Anfragen keine Anfrage-Bearbeitung blockieren.",ENG-01,CLS-01 EXT-01 GOV-01 GOV-04 SEM-01 SUM-01 SUM-02 QA-08 QA-02 ENG-07,"Inferenz-Aufrufe laufen asynchron über die Queue
|
||||
ENG-05,Inferenz-Queue,🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,3,2,Fertig,"Postgres-Jobqueue, Worker, Rückstandsverarbeitung","Asynchrone Warteschlange für Inferenz-Aufrufe, damit lange KI-Anfragen keine Anfrage-Bearbeitung blockieren.",ENG-01,CLS-01 EXT-01 GOV-01 GOV-04 SEM-01 SUM-01 SUM-02 QA-08 QA-02 ENG-07,"Inferenz-Aufrufe laufen asynchron über die Queue
|
||||
Fehlgeschlagene Aufrufe werden mit Rückverfolgung wiederholt
|
||||
Warteschlangenstand ist beobachtbar","Lastspitze ohne blockierte Anfragen durchlaufen
|
||||
Wiederholung nach Fehlschlag im Test nachvollzogen
|
||||
Warteschlangenstand im Monitoring sichtbar"
|
||||
ENG-06,Prompt-Vorlagen-Verwaltung (versioniert),🧠 KI-Engine & Modell-Anbindung,Backend,Einfach,2,2,Backlog,"Versionierte Prompt-Vorlagen, PostgreSQL","Verwaltung von Prompt-Vorlagen je Funktion mit Versionierung, damit Änderungen nachvollziehbar und rückrollbar sind.",ENG-01,QA-02,"Prompt-Vorlagen sind versioniert gespeichert
|
||||
ENG-06,Prompt-Vorlagen-Verwaltung (versioniert),🧠 KI-Engine & Modell-Anbindung,Backend,Einfach,2,2,Fertig,"Versionierte Prompt-Vorlagen, PostgreSQL","Verwaltung von Prompt-Vorlagen je Funktion mit Versionierung, damit Änderungen nachvollziehbar und rückrollbar sind.",ENG-01,QA-02,"Prompt-Vorlagen sind versioniert gespeichert
|
||||
Frühere Version ist wiederherstellbar
|
||||
Aktive Version je Funktion ist eindeutig bestimmt","Rollback auf frühere Vorlage im Test erfolgreich
|
||||
Änderung einer Vorlage ohne Versionsverlust geprüft
|
||||
Aktive Version für jede Funktion eindeutig ermittelt"
|
||||
CLS-01,Dokumentklassifizierung (generisches Modell),🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,3,Backlog,"Sprachmodell, Klassifizierungsschema","Dokumentklassifizierung anhand von Inhalt und Struktur über ein generisches, konfigurierbares Klassifizierungsmodell.",ENG-05,CLS-02 CLS-03 CLS-04 CLS-05 WFS-01,"Klassifizierung liefert Kategorie mit Konfidenz
|
||||
CLS-01,Dokumentklassifizierung (generisches Modell),🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,3,Fertig,"Sprachmodell, Klassifizierungsschema","Dokumentklassifizierung anhand von Inhalt und Struktur über ein generisches, konfigurierbares Klassifizierungsmodell.",ENG-05,CLS-02 CLS-03 CLS-04 CLS-05 WFS-01,"Klassifizierung liefert Kategorie mit Konfidenz
|
||||
Ergebnis folgt einem definierten Ausgabeschema
|
||||
Unbekannte Dokumentart wird als solche gekennzeichnet","Genauigkeit an gelabeltem Testset gemessen und dokumentiert
|
||||
Verhalten bei unbekannter Dokumentart geprüft
|
||||
Ausgabeschema in allen Testfällen eingehalten"
|
||||
CLS-02,Dokumenttyp-Erkennung,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Backlog,"Sprachmodell, Dokumenttyp-Taxonomie","Erkennung des konkreten Dokumenttyps (z. B. Rechnung, Vertrag, Lieferschein) aufbauend auf der generischen Klassifizierung.",CLS-01,QA-03,"Dokumenttyp wird mit Konfidenz vorgeschlagen
|
||||
CLS-02,Dokumenttyp-Erkennung,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Fertig,"Sprachmodell, Dokumenttyp-Taxonomie","Erkennung des konkreten Dokumenttyps (z. B. Rechnung, Vertrag, Lieferschein) aufbauend auf der generischen Klassifizierung.",CLS-01,QA-03,"Dokumenttyp wird mit Konfidenz vorgeschlagen
|
||||
Taxonomie ist je Tenant erweiterbar
|
||||
Mehrdeutige Fälle werden erkennbar markiert","Trefferquote je Dokumenttyp gemessen und dokumentiert
|
||||
Erweiterung der Taxonomie ohne Codeänderung geprüft
|
||||
Mehrdeutiger Testfall korrekt markiert"
|
||||
CLS-03,Automatische Verschlagwortung,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Backlog,"Sprachmodell, Tag-Vorschlagslogik","Automatische Vorschläge für Schlagworte auf Basis von Inhalt, bestehender Tag-Taxonomie und Modul-Kontext.",CLS-01,QA-03,"Tag-Vorschläge werden mit Konfidenz angezeigt
|
||||
CLS-03,Automatische Verschlagwortung,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Fertig,"Sprachmodell, Tag-Vorschlagslogik","Automatische Vorschläge für Schlagworte auf Basis von Inhalt, bestehender Tag-Taxonomie und Modul-Kontext.",CLS-01,QA-03,"Tag-Vorschläge werden mit Konfidenz angezeigt
|
||||
Bestehende Tag-Taxonomie wird respektiert statt dupliziert
|
||||
Vorschlag erfolgt ohne automatische Übernahme","Dopplung bestehender Tags im Test ausgeschlossen
|
||||
Trefferquote an Testset gemessen und dokumentiert
|
||||
Keine automatische Übernahme ohne Bestätigung geprüft"
|
||||
CLS-04,Erkennung wichtiger Inhalte,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Backlog,"Sprachmodell, Segmentierung","Erkennung besonders relevanter Textabschnitte im Dokument (z. B. Fristen, Kernaussagen) zur Hervorhebung.",CLS-01,QA-03,"Relevante Abschnitte werden mit Position markiert
|
||||
CLS-04,Erkennung wichtiger Inhalte,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Fertig,"Sprachmodell, Segmentierung","Erkennung besonders relevanter Textabschnitte im Dokument (z. B. Fristen, Kernaussagen) zur Hervorhebung.",CLS-01,QA-03,"Relevante Abschnitte werden mit Position markiert
|
||||
Ergebnis ist auf lange Dokumente stabil
|
||||
Kein relevanter Abschnitt wird stillschweigend verworfen","Erkennung an mehrseitigem Testdokument nachvollzogen
|
||||
Stabilität bei sehr langen Dokumenten geprüft
|
||||
Nachvollziehbarkeit der Markierung im Test bestätigt"
|
||||
CLS-05,Konfidenz-Schwelle & Korrektur-Feedback-Loop,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Backlog,"Konfidenz-Schwellenwerte, Feedback-Speicherung",Konfigurierbare Konfidenz-Schwelle je Funktion und Erfassung von Nutzerkorrekturen zur laufenden Qualitätsverbesserung.,CLS-01,QA-03,"Schwelle ist je Funktion und Tenant konfigurierbar
|
||||
CLS-05,Konfidenz-Schwelle & Korrektur-Feedback-Loop,🏷️ Klassifizierung & Verschlagwortung,Backend,Mittel,3,4,Fertig,"Konfidenz-Schwellenwerte, Feedback-Speicherung",Konfigurierbare Konfidenz-Schwelle je Funktion und Erfassung von Nutzerkorrekturen zur laufenden Qualitätsverbesserung.,CLS-01,QA-03,"Schwelle ist je Funktion und Tenant konfigurierbar
|
||||
Korrektur wird strukturiert erfasst und gespeichert
|
||||
Auswertung der Korrekturen ist einsehbar","Schwellenwertänderung wirkt ohne Neustart
|
||||
Korrektur-Feedback im Test vollständig erfasst
|
||||
Auswertung liefert nachvollziehbare Kennzahlen"
|
||||
EXT-01,Strukturierte Feld-Extraktion (generisches Modell),📑 Extraktion,Backend,Komplex,4,3,Backlog,"Sprachmodell, Extraktionsschema, JSON-Schema-Validierung","Strukturierte Extraktion konkreter Werte aus Dokumenten (Datum, Betrag, Vertragspartner u. a.) über ein generisches, definiertes Ausgabeschema.",ENG-05,EXT-02 EXT-03 GOV-06,"Extraktion folgt einem definierten Ausgabeschema
|
||||
EXT-01,Strukturierte Feld-Extraktion (generisches Modell),📑 Extraktion,Backend,Komplex,4,3,Fertig,"Sprachmodell, Extraktionsschema, JSON-Schema-Validierung","Strukturierte Extraktion konkreter Werte aus Dokumenten (Datum, Betrag, Vertragspartner u. a.) über ein generisches, definiertes Ausgabeschema.",ENG-05,EXT-02 EXT-03 GOV-06,"Extraktion folgt einem definierten Ausgabeschema
|
||||
Jeder Wert trägt einen Konfidenzwert
|
||||
Fehlender Wert wird als solcher markiert, nicht erraten","Extraktionsgenauigkeit an gelabeltem Testset gemessen
|
||||
Schemaverletzung im Test zuverlässig abgewiesen
|
||||
Verhalten bei fehlendem Wert geprüft"
|
||||
EXT-02,Rechnungsdaten-Extraktion,📑 Extraktion,Backend,Mittel,3,4,Backlog,"Extraktionsschema Rechnung, Sprachmodell","Spezialisiertes Extraktionsschema für Rechnungsdaten: Rechnungsnummer, Betrag, Steuersatz, Fälligkeitsdatum, Absender.",EXT-01,EXT-04,"Rechnungsfelder werden vollständig und typisiert erkannt
|
||||
EXT-02,Rechnungsdaten-Extraktion,📑 Extraktion,Backend,Mittel,3,4,Fertig,"Extraktionsschema Rechnung, Sprachmodell","Spezialisiertes Extraktionsschema für Rechnungsdaten: Rechnungsnummer, Betrag, Steuersatz, Fälligkeitsdatum, Absender.",EXT-01,EXT-04,"Rechnungsfelder werden vollständig und typisiert erkannt
|
||||
Mehrere Steuersätze in einer Rechnung werden korrekt zugeordnet
|
||||
Fehlerhafte Rechnung wird nicht stillschweigend akzeptiert","Genauigkeit an gelabeltem Rechnungs-Testset dokumentiert
|
||||
Mehrfachsteuersatz-Fall im Test korrekt ausgewertet
|
||||
Fehlerhafte Testrechnung korrekt zurückgewiesen"
|
||||
EXT-03,Extraktions-Validierung & Confidence-Score,📑 Extraktion,Backend,Mittel,3,4,Backlog,"Validierungsregeln, Confidence-Scoring","Plausibilitätsprüfung extrahierter Werte (Formate, Wertebereiche, Konsistenz) und Zusammenführung zu einem Gesamt-Confidence-Score.",EXT-01,EXT-04 EXT-05,"Unplausibler Wert wird markiert, nicht stillschweigend übernommen
|
||||
EXT-03,Extraktions-Validierung & Confidence-Score,📑 Extraktion,Backend,Mittel,3,4,Fertig,"Validierungsregeln, Confidence-Scoring","Plausibilitätsprüfung extrahierter Werte (Formate, Wertebereiche, Konsistenz) und Zusammenführung zu einem Gesamt-Confidence-Score.",EXT-01,EXT-04 EXT-05,"Unplausibler Wert wird markiert, nicht stillschweigend übernommen
|
||||
Gesamt-Confidence-Score ist nachvollziehbar hergeleitet
|
||||
Validierungsregeln sind konfigurierbar","Unplausibler Testwert im Test erkannt
|
||||
Score-Herleitung im Test nachvollzogen
|
||||
Regeländerung ohne Codeänderung wirksam"
|
||||
EXT-04,Extraktions-Korrektur-Oberfläche,📑 Extraktion,Frontend,Mittel,3,5,Backlog,"Next.js/React/TypeScript, Formularkomponenten","Oberfläche zur Ansicht, Korrektur und Bestätigung extrahierter Werte vor Übernahme in die Metadaten des aufrufenden Moduls.",EXT-02 EXT-03 SHL-01,,"Vorschläge werden mit Konfidenz angezeigt
|
||||
EXT-04,Extraktions-Korrektur-Oberfläche,📑 Extraktion,Frontend,Mittel,3,5,Fertig,"Next.js/React/TypeScript, Formularkomponenten","Oberfläche zur Ansicht, Korrektur und Bestätigung extrahierter Werte vor Übernahme in die Metadaten des aufrufenden Moduls.",EXT-02 EXT-03 SHL-01,,"Vorschläge werden mit Konfidenz angezeigt
|
||||
Nutzer bestätigt oder korrigiert vor Übernahme
|
||||
Korrektur ist pro Feld einzeln möglich","Bestätigungsfluss im Test vollständig durchlaufen
|
||||
Korrektur eines einzelnen Felds ohne Seiteneffekt geprüft
|
||||
Abbruch ohne Übernahme im Test bestätigt"
|
||||
EXT-05,Extraktions-Ergebnis-Kopplung an Modul-Metadatenfelder,📑 Extraktion,Backend,Mittel,3,5,Backlog,"Modul-Adapter-Schnittstelle, Feld-Mapping",Kopplung bestätigter Extraktionsergebnisse an die Metadatenfelder des aufrufenden Moduls (DMS/Mail) über den Modul-Adapter.,EXT-03,QA-03,"Bestätigter Wert landet im richtigen Metadatenfeld des Moduls
|
||||
EXT-05,Extraktions-Ergebnis-Kopplung an Modul-Metadatenfelder,📑 Extraktion,Backend,Mittel,3,5,Fertig,"Modul-Adapter-Schnittstelle, Feld-Mapping",Kopplung bestätigter Extraktionsergebnisse an die Metadatenfelder des aufrufenden Moduls (DMS/Mail) über den Modul-Adapter.,EXT-03,QA-03,"Bestätigter Wert landet im richtigen Metadatenfeld des Moduls
|
||||
Feld-Mapping ist je Modul konfigurierbar
|
||||
Nicht zuordenbarer Wert wird nicht verworfen, sondern gemeldet","Übernahme in DMS-Metadatenfeld im Test nachvollzogen
|
||||
Fehlkonfiguriertes Mapping im Test erkannt
|
||||
Nicht zuordenbarer Wert im Test korrekt gemeldet"
|
||||
SUM-01,Dokument-Zusammenfassung,📝 Zusammenfassungen,Backend,Mittel,3,3,Backlog,"Sprachmodell, Zusammenfassungs-Pipeline",Automatische Kurz-Zusammenfassung eines Dokuments mit konfigurierbarer Länge und Sprache.,ENG-05,SUM-03 SUM-04,"Zusammenfassung ist inhaltlich belegbar aus dem Original
|
||||
SUM-01,Dokument-Zusammenfassung,📝 Zusammenfassungen,Backend,Mittel,3,3,Fertig,"Sprachmodell, Zusammenfassungs-Pipeline",Automatische Kurz-Zusammenfassung eines Dokuments mit konfigurierbarer Länge und Sprache.,ENG-05,SUM-03 SUM-04,"Zusammenfassung ist inhaltlich belegbar aus dem Original
|
||||
Länge ist konfigurierbar
|
||||
Sehr lange Dokumente werden ohne Absturz verarbeitet","Stichprobe manuell gegen Originaldokument geprüft
|
||||
Verhalten bei sehr langem Dokument getestet
|
||||
Konfigurierbare Länge im Test eingehalten"
|
||||
SUM-02,E-Mail-/Thread-Zusammenfassung,📝 Zusammenfassungen,Backend,Mittel,3,3,Backlog,"Sprachmodell, Thread-Aggregation",Zusammenfassung eines E-Mail-Threads über mehrere Nachrichten hinweg mit Verlaufsbezug.,ENG-05,SUM-03,"Zusammenfassung bildet den Threadverlauf korrekt ab
|
||||
SUM-02,E-Mail-/Thread-Zusammenfassung,📝 Zusammenfassungen,Backend,Mittel,3,3,Fertig,"Sprachmodell, Thread-Aggregation",Zusammenfassung eines E-Mail-Threads über mehrere Nachrichten hinweg mit Verlaufsbezug.,ENG-05,SUM-03,"Zusammenfassung bildet den Threadverlauf korrekt ab
|
||||
Zitierte Altnachrichten werden nicht doppelt zusammengefasst
|
||||
Neue Nachricht aktualisiert die Zusammenfassung","Mehrteiliger Test-Thread korrekt zusammengefasst
|
||||
Duplizierung von Zitaten im Test ausgeschlossen
|
||||
Aktualisierung nach neuer Nachricht geprüft"
|
||||
SUM-03,Zusammenfassungs-Oberfläche,📝 Zusammenfassungen,Frontend,Einfach,2,4,Backlog,Next.js/React/TypeScript,Oberfläche zur Anzeige von Dokument- und Thread-Zusammenfassungen inklusive Verweis auf die Quelle.,SUM-01 SUM-02 SHL-01,,"Zusammenfassung ist am Dokument/Thread sichtbar
|
||||
SUM-03,Zusammenfassungs-Oberfläche,📝 Zusammenfassungen,Frontend,Einfach,2,4,Fertig,Next.js/React/TypeScript,Oberfläche zur Anzeige von Dokument- und Thread-Zusammenfassungen inklusive Verweis auf die Quelle.,SUM-01 SUM-02 SHL-01,,"Zusammenfassung ist am Dokument/Thread sichtbar
|
||||
Verweis auf Original ist ein Klick entfernt
|
||||
Ladezustand ist erkennbar","Anzeige an Beispieldokument und Beispiel-Thread geprüft
|
||||
Verweis auf Original im Test funktionsfähig
|
||||
Ladezustand im Test sichtbar"
|
||||
SUM-04,Zusammenfassungs-Qualitätsbewertung,📝 Zusammenfassungen,Backend,Einfach,2,4,Backlog,"Bewertungsmetriken, Stichprobenprüfung",Qualitätsbewertung erzeugter Zusammenfassungen anhand von Stichproben und einfachen Kennzahlen.,SUM-01,QA-06,"Qualitätskennzahl ist je Zusammenfassungstyp abrufbar
|
||||
SUM-04,Zusammenfassungs-Qualitätsbewertung,📝 Zusammenfassungen,Backend,Einfach,2,4,Fertig,"Bewertungsmetriken, Stichprobenprüfung",Qualitätsbewertung erzeugter Zusammenfassungen anhand von Stichproben und einfachen Kennzahlen.,SUM-01,QA-06,"Qualitätskennzahl ist je Zusammenfassungstyp abrufbar
|
||||
Auffällig schlechte Zusammenfassung wird erkennbar markiert
|
||||
Bewertung ist nachvollziehbar dokumentiert","Kennzahl an Testset berechnet und dokumentiert
|
||||
Auffälliger Testfall im Test markiert
|
||||
Nachvollziehbarkeit der Bewertung bestätigt"
|
||||
SEM-01,Embeddings-Pipeline,🔎 Semantische Suche & Chat,Backend,Mittel,3,3,Backlog,"Embedding-Modell, Batch-Verarbeitung",Pipeline zur Erzeugung von Embeddings für Dokumente und E-Mails inklusive Chunking langer Inhalte.,ENG-05,SEM-02,"Embeddings werden für neue Inhalte automatisch erzeugt
|
||||
SEM-01,Embeddings-Pipeline,🔎 Semantische Suche & Chat,Backend,Mittel,3,3,Fertig,"Embedding-Modell, Batch-Verarbeitung",Pipeline zur Erzeugung von Embeddings für Dokumente und E-Mails inklusive Chunking langer Inhalte.,ENG-05,SEM-02,"Embeddings werden für neue Inhalte automatisch erzeugt
|
||||
Lange Inhalte werden sinnvoll in Abschnitte zerlegt
|
||||
Fehlerhafte Erzeugung wird erkannt und wiederholt","Chunking an langem Testdokument nachvollzogen
|
||||
Fehlerfall im Test erkannt und wiederholt
|
||||
Durchsatz an Testmenge dokumentiert"
|
||||
SEM-02,Vektorindex-Speicherung,🔎 Semantische Suche & Chat,Backend,Mittel,3,4,Backlog,PostgreSQL mit Vektorerweiterung,Speicherung und Indizierung der erzeugten Embeddings inklusive Mandantentrennung.,SEM-01,SEM-03,"Vektorindex ist mandantengetrennt abfragbar
|
||||
SEM-02,Vektorindex-Speicherung,🔎 Semantische Suche & Chat,Backend,Mittel,3,4,Fertig,PostgreSQL mit Vektorerweiterung,Speicherung und Indizierung der erzeugten Embeddings inklusive Mandantentrennung.,SEM-01,SEM-03,"Vektorindex ist mandantengetrennt abfragbar
|
||||
Ähnlichkeitssuche liefert stabile Ergebnisse
|
||||
Löschung eines Dokuments entfernt auch dessen Vektoren","Mandantentrennung im Test bestätigt
|
||||
Löschung im Test vollständig nachvollzogen
|
||||
Abfragezeit an Testmenge dokumentiert"
|
||||
SEM-03,Semantische-Such-API,🔎 Semantische Suche & Chat,Backend,Mittel,3,5,Backlog,"REST-API, Ähnlichkeitssuche",Schnittstelle für semantische Suche über Dokumente/E-Mails eines Tenants mit Relevanz-Ranking.,SEM-02,SEM-04 SEM-06,"Suche liefert nach Relevanz sortierte Treffer
|
||||
SEM-03,Semantische-Such-API,🔎 Semantische Suche & Chat,Backend,Mittel,3,5,Fertig,"REST-API, Ähnlichkeitssuche",Schnittstelle für semantische Suche über Dokumente/E-Mails eines Tenants mit Relevanz-Ranking.,SEM-02,SEM-04 SEM-06,"Suche liefert nach Relevanz sortierte Treffer
|
||||
Nur berechtigte Dokumente erscheinen im Ergebnis
|
||||
Leere Trefferliste wird sauber gemeldet","Relevanz-Ranking an Testkorpus stichprobenartig geprüft
|
||||
Rechteprüfung im Test bestätigt
|
||||
Leerfall im Test korrekt behandelt"
|
||||
SEM-04,Chat-mit-Dokumenten (RAG-Pipeline),🔎 Semantische Suche & Chat,Backend,Komplex,4,6,Backlog,"RAG-Pipeline: Retrieval vor Generation, Sprachmodell","Chat-Oberfläche über Dokumente eines Tenants: Retrieval relevanter Abschnitte vor der Antwort-Generierung, keine Antwort ohne Beleg.",SEM-03,SEM-05 SEM-06 QA-08,"Antwort stützt sich auf tatsächlich abgerufene Abschnitte
|
||||
SEM-04,Chat-mit-Dokumenten (RAG-Pipeline),🔎 Semantische Suche & Chat,Backend,Komplex,4,6,Fertig,"RAG-Pipeline: Retrieval vor Generation, Sprachmodell","Chat-Oberfläche über Dokumente eines Tenants: Retrieval relevanter Abschnitte vor der Antwort-Generierung, keine Antwort ohne Beleg.",SEM-03,SEM-05 SEM-06 QA-08,"Antwort stützt sich auf tatsächlich abgerufene Abschnitte
|
||||
Frage ohne belastbaren Treffer wird als solche beantwortet
|
||||
Antwortzeit bleibt für Chat-Nutzung praktikabel","Beleg-Antwort-Zuordnung an Testfragen nachvollzogen
|
||||
Fall ohne Treffer im Test korrekt behandelt
|
||||
Antwortzeit an Testkorpus gemessen"
|
||||
SEM-05,Quellenverweise & Zitat-Nachvollziehbarkeit,🔎 Semantische Suche & Chat,Backend,Mittel,3,7,Backlog,"Zitat-Verweise, Quellen-Mapping","Mitführen und Anzeigen der Quellenabschnitte je Chat-Antwort, damit jede Aussage auf ein Dokument zurückführbar ist.",SEM-04,QA-04,"Jede Antwort führt mindestens einen Quellenverweis
|
||||
SEM-05,Quellenverweise & Zitat-Nachvollziehbarkeit,🔎 Semantische Suche & Chat,Backend,Mittel,3,7,Fertig,"Zitat-Verweise, Quellen-Mapping","Mitführen und Anzeigen der Quellenabschnitte je Chat-Antwort, damit jede Aussage auf ein Dokument zurückführbar ist.",SEM-04,QA-04,"Jede Antwort führt mindestens einen Quellenverweis
|
||||
Verweis führt zum tatsächlichen Abschnitt im Dokument
|
||||
Antwort ohne Beleg wird nicht als gesichert dargestellt","Quellenverweis an Testfrage stichprobenartig nachvollzogen
|
||||
Sprung zum Originalabschnitt im Test funktionsfähig
|
||||
Unbelegte Antwort im Test korrekt gekennzeichnet"
|
||||
SEM-06,Semantische-Such-/Chat-Oberfläche,🔎 Semantische Suche & Chat,Frontend,Mittel,3,7,Backlog,Next.js/React/TypeScript,Oberfläche für semantische Suche und Dokumenten-Chat inklusive Quellenanzeige und Verlauf.,SEM-03 SEM-04 SHL-01,QA-04,"Suche und Chat sind aus einer Oberfläche erreichbar
|
||||
SEM-06,Semantische-Such-/Chat-Oberfläche,🔎 Semantische Suche & Chat,Frontend,Mittel,3,7,Fertig,Next.js/React/TypeScript,Oberfläche für semantische Suche und Dokumenten-Chat inklusive Quellenanzeige und Verlauf.,SEM-03 SEM-04 SHL-01,QA-04,"Suche und Chat sind aus einer Oberfläche erreichbar
|
||||
Quellenverweise sind in der Antwort sichtbar
|
||||
Verlauf bleibt innerhalb der Sitzung erhalten","Bedienfluss Suche und Chat im Test durchlaufen
|
||||
Quellenanzeige im Test sichtbar bestätigt
|
||||
Verlauf nach Navigation im Test erhalten"
|
||||
WFS-01,Vorschlagsmodell (Routing/Klassifizierung aus Historie),💡 Workflow-Vorschläge,Backend,Mittel,3,4,Backlog,"Historische Auswertung, Sprachmodell/Regelableitung",Ableitung von Routing- und Klassifizierungsvorschlägen aus dem historischen Bearbeitungsverlauf eines Tenants.,CLS-01,WFS-02 QA-06,"Vorschlag stützt sich auf tatsächliche Historie
|
||||
WFS-01,Vorschlagsmodell (Routing/Klassifizierung aus Historie),💡 Workflow-Vorschläge,Backend,Mittel,3,4,Fertig,"Historische Auswertung, Sprachmodell/Regelableitung",Ableitung von Routing- und Klassifizierungsvorschlägen aus dem historischen Bearbeitungsverlauf eines Tenants.,CLS-01,WFS-02 QA-06,"Vorschlag stützt sich auf tatsächliche Historie
|
||||
Vorschlag trägt einen Konfidenzwert
|
||||
Zu geringe Datenlage wird erkannt und gemeldet","Vorschlagsgüte an historischem Testbestand gemessen
|
||||
Fall geringer Datenlage im Test korrekt behandelt
|
||||
Konfidenzwert im Test nachvollzogen"
|
||||
WFS-02,Vorschlags-API (Kopplung Workflow-Board Modul-Adapter),💡 Workflow-Vorschläge,Backend,Mittel,3,5,Backlog,"REST-API, Modul-Adapter-Schnittstelle","Schnittstelle, über die das Workflow-Board Vorschläge für Routing-Entscheidungen abruft.",WFS-01,WFS-03 QA-06,"Workflow-Board kann Vorschläge über die Schnittstelle abrufen
|
||||
WFS-02,Vorschlags-API (Kopplung Workflow-Board Modul-Adapter),💡 Workflow-Vorschläge,Backend,Mittel,3,5,Fertig,"REST-API, Modul-Adapter-Schnittstelle","Schnittstelle, über die das Workflow-Board Vorschläge für Routing-Entscheidungen abruft.",WFS-01,WFS-03 QA-06,"Workflow-Board kann Vorschläge über die Schnittstelle abrufen
|
||||
Antwort enthält Vorschlag, Konfidenz und Begründung
|
||||
Nicht erreichbare AI-Instanz blockiert das Workflow-Board nicht","Abruf aus Sicht des Workflow-Boards im Test nachvollzogen
|
||||
Ausfallverhalten im Test bestätigt
|
||||
Antwortformat gegen Vertrag geprüft"
|
||||
WFS-03,Vorschlags-Feedback-Loop,💡 Workflow-Vorschläge,Backend,Mittel,3,6,Backlog,"Feedback-Speicherung, Nachtrainingslogik","Erfassung, ob ein Vorschlag übernommen oder korrigiert wurde, zur laufenden Verbesserung des Vorschlagsmodells.",WFS-02,QA-06,"Annahme und Korrektur eines Vorschlags werden erfasst
|
||||
WFS-03,Vorschlags-Feedback-Loop,💡 Workflow-Vorschläge,Backend,Mittel,3,6,Fertig,"Feedback-Speicherung, Nachtrainingslogik","Erfassung, ob ein Vorschlag übernommen oder korrigiert wurde, zur laufenden Verbesserung des Vorschlagsmodells.",WFS-02,QA-06,"Annahme und Korrektur eines Vorschlags werden erfasst
|
||||
Auswertung der Trefferquote ist einsehbar
|
||||
Feedback fließt nachvollziehbar in künftige Vorschläge ein","Erfassung von Annahme/Korrektur im Test bestätigt
|
||||
Trefferquoten-Auswertung im Test nachvollzogen
|
||||
Wirkung des Feedbacks auf Folgevorschlag geprüft"
|
||||
GOV-01,Modul-Adapter-Schnittstelle (DMS/Mail registrieren KI-fähige Objekttypen),🛡️ Datenschutz & Governance,Backend,Mittel,3,3,Backlog,"Modul-Adapter-Schnittstelle, Objekttyp-Registry","Schnittstelle, über die DMS und Mail KI-fähige Objekttypen (Dokument, E-Mail, Thread) und deren Felder registrieren, statt eigene KI-Logik zu bauen.",ENG-05,GOV-02 GOV-05 QA-07 GOV-07,"Modul kann Objekttyp mit Feldern registrieren
|
||||
GOV-01,Modul-Adapter-Schnittstelle (DMS/Mail registrieren KI-fähige Objekttypen),🛡️ Datenschutz & Governance,Backend,Mittel,3,3,Fertig,"Modul-Adapter-Schnittstelle, Objekttyp-Registry","Schnittstelle, über die DMS und Mail KI-fähige Objekttypen (Dokument, E-Mail, Thread) und deren Felder registrieren, statt eigene KI-Logik zu bauen.",ENG-05,GOV-02 GOV-05 QA-07 GOV-07,"Modul kann Objekttyp mit Feldern registrieren
|
||||
Registrierung ist ohne Codeänderung im AI-Modul möglich
|
||||
Nicht registrierter Objekttyp wird sauber abgewiesen","Registrierung aus Sicht eines Testmoduls nachvollzogen
|
||||
Fehlregistrierung im Test korrekt abgewiesen
|
||||
Zwei Module parallel registriert und geprüft"
|
||||
GOV-02,Opt-in/Opt-out je Tenant & Funktion,🛡️ Datenschutz & Governance,Backend,Mittel,3,4,Backlog,Feature-Flags je Tenant und Funktion,"Feingranulare Aktivierung/Deaktivierung einzelner KI-Funktionen je Tenant, oberhalb des globalen Core-LIC-02-Schalters.",GOV-01 LIC-02,QA-05,"Jede Funktion ist einzeln je Tenant schaltbar
|
||||
GOV-02,Opt-in/Opt-out je Tenant & Funktion,🛡️ Datenschutz & Governance,Backend,Mittel,3,4,Fertig,Feature-Flags je Tenant und Funktion,"Feingranulare Aktivierung/Deaktivierung einzelner KI-Funktionen je Tenant, oberhalb des globalen Core-LIC-02-Schalters.",GOV-01 LIC-02,QA-05,"Jede Funktion ist einzeln je Tenant schaltbar
|
||||
Deaktivierte Funktion wird nicht aufgerufen
|
||||
Änderung wirkt ohne Neustart","Deaktivierung einer Funktion im Test wirksam bestätigt
|
||||
Globaler Schalter (Core LIC-02) im Test respektiert
|
||||
Änderung ohne Neustart im Test nachvollzogen"
|
||||
GOV-03,Keine Training auf Kundendaten – Datenresidenz-Kontrolle,🛡️ Datenschutz & Governance,Backend,Mittel,3,3,Backlog,"Datenresidenz-Konfiguration, Provider-Routing","Nachvollziehbare, je Tenant konfigurierbare Steuerung, ob Inferenz lokal (Ollama) oder extern erfolgt, mit Ausschluss von Training auf Kundendaten.",ENG-02 ENG-03,QA-05,"Datenresidenz ist je Tenant einsehbar konfiguriert
|
||||
GOV-03,Keine Training auf Kundendaten – Datenresidenz-Kontrolle,🛡️ Datenschutz & Governance,Backend,Mittel,3,3,Fertig,"Datenresidenz-Konfiguration, Provider-Routing","Nachvollziehbare, je Tenant konfigurierbare Steuerung, ob Inferenz lokal (Ollama) oder extern erfolgt, mit Ausschluss von Training auf Kundendaten.",ENG-02 ENG-03,QA-05,"Datenresidenz ist je Tenant einsehbar konfiguriert
|
||||
Externe Verarbeitung erfordert ausdrückliche Freigabe
|
||||
Kein Kundendokument fließt in ein Training ein","Konfiguration lokal/extern im Test nachvollzogen
|
||||
Fehlende Freigabe verhindert externe Verarbeitung im Test
|
||||
Trainingsausschluss vertraglich und technisch geprüft"
|
||||
GOV-04,Kostenkontrolle & Quota (Kopplung Core LIC-03),🛡️ Datenschutz & Governance,Backend,Mittel,3,3,Backlog,"Kostenzähler, Quota-Schwellen, Kopplung Core LIC-03","Verbrauchszählung und Obergrenzen je Tenant für Inferenz-Nutzung, gekoppelt an die Lizenzsteuerung aus Core LIC-03.",ENG-05 LIC-03,QA-05,"Verbrauch ist je Tenant nachvollziehbar erfasst
|
||||
GOV-04,Kostenkontrolle & Quota (Kopplung Core LIC-03),🛡️ Datenschutz & Governance,Backend,Mittel,3,3,Fertig,"Kostenzähler, Quota-Schwellen, Kopplung Core LIC-03","Verbrauchszählung und Obergrenzen je Tenant für Inferenz-Nutzung, gekoppelt an die Lizenzsteuerung aus Core LIC-03.",ENG-05 LIC-03,QA-05,"Verbrauch ist je Tenant nachvollziehbar erfasst
|
||||
Überschreitung der Quota wird zuverlässig verhindert
|
||||
Näherung an die Grenze wird vorab gemeldet","Quota-Überschreitung im Test zuverlässig blockiert
|
||||
Vorabwarnung im Test ausgelöst
|
||||
Verbrauchszählung gegen tatsächliche Aufrufe abgeglichen"
|
||||
GOV-05,KI-Entscheidungs-Nachvollziehbarkeit (Kopplung Core AUD),🛡️ Datenschutz & Governance,Backend,Einfach,2,4,Backlog,"Audit-Ereignisse, Kopplung Core AUD","Protokollierung jeder KI-gestützten Entscheidung (Modell, Prompt-Version, Eingabe-Referenz, Ergebnis) über die Audit-Schnittstelle von Core.",GOV-01,QA-05,"Jede KI-Entscheidung erzeugt einen Audit-Eintrag
|
||||
GOV-05,KI-Entscheidungs-Nachvollziehbarkeit (Kopplung Core AUD),🛡️ Datenschutz & Governance,Backend,Einfach,2,4,Fertig,"Audit-Ereignisse, Kopplung Core AUD","Protokollierung jeder KI-gestützten Entscheidung (Modell, Prompt-Version, Eingabe-Referenz, Ergebnis) über die Audit-Schnittstelle von Core.",GOV-01,QA-05,"Jede KI-Entscheidung erzeugt einen Audit-Eintrag
|
||||
Eintrag verweist auf Modell- und Prompt-Version
|
||||
Eintrag ist nachträglich unveränderlich","Audit-Eintrag an Testentscheidung nachvollzogen
|
||||
Verweis auf Modell-/Promptversion im Test bestätigt
|
||||
@@ -212,7 +212,7 @@ Inferenz-Queue verarbeitet mehrere gleichzeitige Klassifizierungs-/Extraktionsan
|
||||
Verhalten bei Überlast (Queue voll) ist definiert, nicht undefiniert","Lasttest mit parallelen Chat-Anfragen, Antwortzeit gemessen und dokumentiert
|
||||
Queue-Länge unter Last beobachtet und gegen Zielwert geprüft
|
||||
Überlast-Szenario simuliert, definiertes Verhalten bestätigt"
|
||||
GOV-06,Prompt-Injection-Schutz,🛡️ Datenschutz & Governance,Backend,Mittel,3,4,Backlog,"Strukturierte Prompt-Vorlagen, Schema-Validierung, Muster-Erkennung","Härtung gegen Prompt-Injection aus Dokument-/Mailinhalten – strikte Trennung zwischen Systemanweisung und Nutzerinhalt im Prompt-Aufbau, Validierung von Extraktionsergebnissen gegen ein erwartetes Schema, Erkennung auffälliger Instruktions-Muster im Dokumentinhalt vor der Verarbeitung.",ENG-01 EXT-01,QA-05,"Dokumentinhalt wird im Prompt strukturell von der Systemanweisung getrennt (z. B. über klar markierte Abschnitte oder strukturierte Eingabe), nicht als freier Text vermischt
|
||||
GOV-06,Prompt-Injection-Schutz,🛡️ Datenschutz & Governance,Backend,Mittel,3,4,Fertig,"Strukturierte Prompt-Vorlagen, Schema-Validierung, Muster-Erkennung","Härtung gegen Prompt-Injection aus Dokument-/Mailinhalten – strikte Trennung zwischen Systemanweisung und Nutzerinhalt im Prompt-Aufbau, Validierung von Extraktionsergebnissen gegen ein erwartetes Schema, Erkennung auffälliger Instruktions-Muster im Dokumentinhalt vor der Verarbeitung.",ENG-01 EXT-01,QA-05,"Dokumentinhalt wird im Prompt strukturell von der Systemanweisung getrennt (z. B. über klar markierte Abschnitte oder strukturierte Eingabe), nicht als freier Text vermischt
|
||||
Extraktionsergebnisse werden gegen ein erwartetes Schema/Format validiert, bevor sie weiterverarbeitet werden
|
||||
Kein KI-Ergebnis löst allein eine automatische Freigabe-, Lösch- oder Statusänderungs-Aktion aus – jede sicherheitsrelevante Aktion bleibt an eine menschliche Bestätigung gekoppelt (Docspell-Prinzip, hier als Sicherheitsgrenze verankert)","Test mit Dokument, das eine eingebettete Anweisung enthält (""ignoriere vorherige Anweisung..."") – Verarbeitung folgt der eigentlichen Aufgabe, nicht der eingebetteten Anweisung
|
||||
Test: Extraktionsergebnis außerhalb des erwarteten Schemas wird abgelehnt/markiert, nicht stillschweigend übernommen
|
||||
@@ -222,13 +222,21 @@ Manueller Bildschirmleser-Durchlauf dokumentiert
|
||||
Restbefunde sind mit Frist eingeplant","Automatisierte Prüfung über alle Hauptseiten
|
||||
Vollständiger Ablauf ohne Maus durchgeführt
|
||||
Auditbericht abgelegt"
|
||||
GOV-07,Unabhängige Tenant-Validierung bei KI-Objekttyp-Registrierung durch DMS/Mail,🛡️ Datenschutz & Governance,Backend,Mittel,2,10,Backlog,"Service-Credentials (Core API-02), Tenant-Registry-Abgleich (Core TEN-01), Go","GOV-01 nimmt Registrierungen KI-fähiger Objekttypen und Felder von DMS und Mail entgegen. Analog zu Archive `RET-12` und Workflow `ENG-06` muss jede Registrierung den mitgelieferten Tenant-Kontext unabhängig gegen die Core-Registry (TEN-01) validieren, statt der Angabe des registrierenden Moduls zu vertrauen – sonst könnte eine Kompromittierung/Fehlkonfiguration in DMS/Mail dazu führen, dass KI-Funktionen (Klassifizierung, Extraktion, semantische Suche) auf falsch zugeordnete Tenant-Daten angewendet werden.",GOV-01,,"Jede Objekttyp-/Feld-Registrierung aus DMS/Mail wird gegen die Core-Registry auf Tenant-Gültigkeit geprüft, bevor sie übernommen wird
|
||||
GOV-07,Unabhängige Tenant-Validierung bei KI-Objekttyp-Registrierung durch DMS/Mail,🛡️ Datenschutz & Governance,Backend,Mittel,2,10,Fertig,"Service-Credentials (Core API-02), Tenant-Registry-Abgleich (Core TEN-01), Go","GOV-01 nimmt Registrierungen KI-fähiger Objekttypen und Felder von DMS und Mail entgegen. Analog zu Archive `RET-12` und Workflow `ENG-06` muss jede Registrierung den mitgelieferten Tenant-Kontext unabhängig gegen die Core-Registry (TEN-01) validieren, statt der Angabe des registrierenden Moduls zu vertrauen – sonst könnte eine Kompromittierung/Fehlkonfiguration in DMS/Mail dazu führen, dass KI-Funktionen (Klassifizierung, Extraktion, semantische Suche) auf falsch zugeordnete Tenant-Daten angewendet werden.",GOV-01,,"Jede Objekttyp-/Feld-Registrierung aus DMS/Mail wird gegen die Core-Registry auf Tenant-Gültigkeit geprüft, bevor sie übernommen wird
|
||||
Eine Registrierung mit einem nicht existierenden oder falschem Tenant-Kontext wird abgelehnt und protokolliert
|
||||
Bestehende, korrekte Registrierungsabläufe aus GOV-01 funktionieren unverändert","Test: Registrierung mit gültigem, existierendem Tenant-Kontext wird übernommen
|
||||
Test: Registrierung mit manipuliertem/fremdem Tenant-Kontext wird abgelehnt
|
||||
Regressionstest: normaler DMS-/Mail-Registrierungsablauf bleibt funktionsfähig"
|
||||
ENG-07,Ressourcenlimits für die Inferenz-Warteschlange,🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,2,10,Backlog,"Postgres-Jobqueue, Worker-Goroutinen, Ressourcenlimits (Zeit/Eingabegröße/Kontextlänge)","ENG-05 stellt eine asynchrone Warteschlange für Inferenz-Aufrufe bereit, damit lange KI-Anfragen keine Anfrage-Bearbeitung blockieren, ohne Obergrenzen pro Einzelanfrage festzulegen. Eine sehr lange Eingabe (z. B. ein extrem langes Dokument bei Zusammenfassung/Embedding) oder eine bewusst konstruierte Anfrage kann einen Inferenz-Worker unverhältnismäßig lange blockieren und damit andere Mandanten in der gemeinsamen Warteschlange verzögern. Harte Obergrenzen je Anfrage definieren (max. Eingabegröße/Kontextlänge, max. Verarbeitungszeit) – bei Überschreitung wird die Anfrage kontrolliert abgelehnt statt den Worker zu blockieren.",ENG-05,,"Jede Inferenz-Anfrage hat konfigurierbare Obergrenzen für Eingabegröße/Kontextlänge und maximale Verarbeitungszeit
|
||||
ENG-07,Ressourcenlimits für die Inferenz-Warteschlange,🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,2,10,Fertig,"Postgres-Jobqueue, Worker-Goroutinen, Ressourcenlimits (Zeit/Eingabegröße/Kontextlänge)","ENG-05 stellt eine asynchrone Warteschlange für Inferenz-Aufrufe bereit, damit lange KI-Anfragen keine Anfrage-Bearbeitung blockieren, ohne Obergrenzen pro Einzelanfrage festzulegen. Eine sehr lange Eingabe (z. B. ein extrem langes Dokument bei Zusammenfassung/Embedding) oder eine bewusst konstruierte Anfrage kann einen Inferenz-Worker unverhältnismäßig lange blockieren und damit andere Mandanten in der gemeinsamen Warteschlange verzögern. Harte Obergrenzen je Anfrage definieren (max. Eingabegröße/Kontextlänge, max. Verarbeitungszeit) – bei Überschreitung wird die Anfrage kontrolliert abgelehnt statt den Worker zu blockieren.",ENG-05,,"Jede Inferenz-Anfrage hat konfigurierbare Obergrenzen für Eingabegröße/Kontextlänge und maximale Verarbeitungszeit
|
||||
Eine Überschreitung führt zur kontrollierten Ablehnung der Anfrage mit klarer Fehlermeldung, nicht zur Blockade des Workers
|
||||
Andere, gleichzeitig laufende Inferenz-Anfragen (auch anderer Mandanten) bleiben von einer überschreitenden Anfrage unbeeinflusst","Test mit einer Eingabe, die absichtlich die Kontextlängen-/Größenobergrenze überschreitet: Anfrage wird kontrolliert abgelehnt
|
||||
Lasttest: eine überschreitende Anfrage blockiert nicht die Verarbeitung paralleler, regulärer Anfragen
|
||||
Regressionstest: normale, innerhalb der Grenzen liegende Anfragen funktionieren unverändert"
|
||||
ENG-08,AI-App: gebündelter Diensteinstiegspunkt (cmd/ai-app),🧠 KI-Engine & Modell-Anbindung,Backend,Mittel,2,9,Fertig,"net/http.ServeMux, pgxpool, Umgebungsvariablen fuer DSN/Listen-Adresse","Buendelt alle bestehenden AI-API-Pakete (summaryapi, semanticsearchapi, extractapi, residencyapi, routingsuggestapi) inkl. Inferenz-Queue-Worker und Quota-Enforcement zu einem einzigen startbaren Dienst cmd/ai-app, analog connect/cmd/connect-app.",ENG-05 GOV-03 GOV-04 WFS-02,,"cmd/ai-app startet einen einzigen HTTP-Dienst, der alle bestehenden AI-API-Pakete unter ihren jeweiligen Routen bereitstellt
|
||||
Inferenz-Queue-Worker und Quota-Enforcement sind beim Start korrekt verdrahtet (nicht nur die HTTP-Handler ohne funktionierenden Hintergrundprozess)
|
||||
DSN und Listen-Adresse ausschliesslich ueber Umgebungsvariablen, keine Zugangsdaten im Code
|
||||
Fehlende Pflicht-Umgebungsvariable fuehrt zu klarer Fehlermeldung beim Start, nicht zu einem stillen Absturz
|
||||
Dienst startet real auf Host 204 und beantwortet mindestens einen Endpunkt je eingebundenem API-Paket","Realer Start auf Host 204 mit Wegwerf-DB, mindestens ein Aufruf je eingebundenem API-Paket erfolgreich
|
||||
Ein echter Inferenz-Auftrag durchlaeuft die Warteschlange real bis zum Abschluss
|
||||
Fehlende Pflicht-Umgebungsvariable: Dienst beendet sich mit klarer Fehlermeldung, kein Port offen
|
||||
Bestehende Modul-Testsuite bleibt unveraendert gruen"
|
||||
|
+74
-38
@@ -1,4 +1,4 @@
|
||||
{
|
||||
{
|
||||
"erzeugtAm": "2026-08-26",
|
||||
"totalDays": 126,
|
||||
"epics": [
|
||||
@@ -304,7 +304,7 @@
|
||||
"Timeout- und Fehlerfall am Interface geprüft",
|
||||
"Vertrag per Contract-Test abgesichert"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 1,
|
||||
@@ -343,7 +343,7 @@
|
||||
"Modellwechsel ohne Dienst-Neustart geprüft",
|
||||
"Dokumentierte Modellgrößen-Empfehlung mit tatsächlichem Ressourcenverbrauch abgeglichen"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 2,
|
||||
@@ -376,7 +376,7 @@
|
||||
"Deaktivierter externer Adapter wird nie automatisch verwendet",
|
||||
"Kein Dokumentinhalt verlässt das System ohne explizite Freigabe"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 2,
|
||||
@@ -409,7 +409,7 @@
|
||||
"Fehlkonfiguration wird beim Speichern verhindert",
|
||||
"Mandantentrennung der Modellauswahl geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 2,
|
||||
@@ -441,7 +441,7 @@
|
||||
"Wiederholung nach Fehlschlag im Test nachvollzogen",
|
||||
"Warteschlangenstand im Monitoring sichtbar"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 2,
|
||||
@@ -482,7 +482,7 @@
|
||||
"Änderung einer Vorlage ohne Versionsverlust geprüft",
|
||||
"Aktive Version für jede Funktion eindeutig ermittelt"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 2,
|
||||
@@ -514,7 +514,7 @@
|
||||
"Verhalten bei unbekannter Dokumentart geprüft",
|
||||
"Ausgabeschema in allen Testfällen eingehalten"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Klassifizierung & Verschlagwortung",
|
||||
"epicEmoji": "🏷️",
|
||||
"wave": 3,
|
||||
@@ -550,7 +550,7 @@
|
||||
"Erweiterung der Taxonomie ohne Codeänderung geprüft",
|
||||
"Mehrdeutiger Testfall korrekt markiert"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Klassifizierung & Verschlagwortung",
|
||||
"epicEmoji": "🏷️",
|
||||
"wave": 4,
|
||||
@@ -582,7 +582,7 @@
|
||||
"Trefferquote an Testset gemessen und dokumentiert",
|
||||
"Keine automatische Übernahme ohne Bestätigung geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Klassifizierung & Verschlagwortung",
|
||||
"epicEmoji": "🏷️",
|
||||
"wave": 4,
|
||||
@@ -614,7 +614,7 @@
|
||||
"Stabilität bei sehr langen Dokumenten geprüft",
|
||||
"Nachvollziehbarkeit der Markierung im Test bestätigt"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Klassifizierung & Verschlagwortung",
|
||||
"epicEmoji": "🏷️",
|
||||
"wave": 4,
|
||||
@@ -646,7 +646,7 @@
|
||||
"Korrektur-Feedback im Test vollständig erfasst",
|
||||
"Auswertung liefert nachvollziehbare Kennzahlen"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Klassifizierung & Verschlagwortung",
|
||||
"epicEmoji": "🏷️",
|
||||
"wave": 4,
|
||||
@@ -678,7 +678,7 @@
|
||||
"Schemaverletzung im Test zuverlässig abgewiesen",
|
||||
"Verhalten bei fehlendem Wert geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Extraktion",
|
||||
"epicEmoji": "📑",
|
||||
"wave": 3,
|
||||
@@ -712,7 +712,7 @@
|
||||
"Mehrfachsteuersatz-Fall im Test korrekt ausgewertet",
|
||||
"Fehlerhafte Testrechnung korrekt zurückgewiesen"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Extraktion",
|
||||
"epicEmoji": "📑",
|
||||
"wave": 4,
|
||||
@@ -744,7 +744,7 @@
|
||||
"Score-Herleitung im Test nachvollzogen",
|
||||
"Regeländerung ohne Codeänderung wirksam"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Extraktion",
|
||||
"epicEmoji": "📑",
|
||||
"wave": 4,
|
||||
@@ -779,7 +779,7 @@
|
||||
"Korrektur eines einzelnen Felds ohne Seiteneffekt geprüft",
|
||||
"Abbruch ohne Übernahme im Test bestätigt"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Extraktion",
|
||||
"epicEmoji": "📑",
|
||||
"wave": 5,
|
||||
@@ -809,7 +809,7 @@
|
||||
"Fehlkonfiguriertes Mapping im Test erkannt",
|
||||
"Nicht zuordenbarer Wert im Test korrekt gemeldet"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Extraktion",
|
||||
"epicEmoji": "📑",
|
||||
"wave": 5,
|
||||
@@ -841,7 +841,7 @@
|
||||
"Verhalten bei sehr langem Dokument getestet",
|
||||
"Konfigurierbare Länge im Test eingehalten"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Zusammenfassungen",
|
||||
"epicEmoji": "📝",
|
||||
"wave": 3,
|
||||
@@ -874,7 +874,7 @@
|
||||
"Duplizierung von Zitaten im Test ausgeschlossen",
|
||||
"Aktualisierung nach neuer Nachricht geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Zusammenfassungen",
|
||||
"epicEmoji": "📝",
|
||||
"wave": 3,
|
||||
@@ -908,7 +908,7 @@
|
||||
"Verweis auf Original im Test funktionsfähig",
|
||||
"Ladezustand im Test sichtbar"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Zusammenfassungen",
|
||||
"epicEmoji": "📝",
|
||||
"wave": 4,
|
||||
@@ -938,7 +938,7 @@
|
||||
"Auffälliger Testfall im Test markiert",
|
||||
"Nachvollziehbarkeit der Bewertung bestätigt"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Zusammenfassungen",
|
||||
"epicEmoji": "📝",
|
||||
"wave": 4,
|
||||
@@ -970,7 +970,7 @@
|
||||
"Fehlerfall im Test erkannt und wiederholt",
|
||||
"Durchsatz an Testmenge dokumentiert"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Semantische Suche & Chat",
|
||||
"epicEmoji": "🔎",
|
||||
"wave": 3,
|
||||
@@ -1002,7 +1002,7 @@
|
||||
"Löschung im Test vollständig nachvollzogen",
|
||||
"Abfragezeit an Testmenge dokumentiert"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Semantische Suche & Chat",
|
||||
"epicEmoji": "🔎",
|
||||
"wave": 4,
|
||||
@@ -1034,7 +1034,7 @@
|
||||
"Rechteprüfung im Test bestätigt",
|
||||
"Leerfall im Test korrekt behandelt"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Semantische Suche & Chat",
|
||||
"epicEmoji": "🔎",
|
||||
"wave": 5,
|
||||
@@ -1067,7 +1067,7 @@
|
||||
"Fall ohne Treffer im Test korrekt behandelt",
|
||||
"Antwortzeit an Testkorpus gemessen"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Semantische Suche & Chat",
|
||||
"epicEmoji": "🔎",
|
||||
"wave": 6,
|
||||
@@ -1101,7 +1101,7 @@
|
||||
"Sprung zum Originalabschnitt im Test funktionsfähig",
|
||||
"Unbelegte Antwort im Test korrekt gekennzeichnet"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Semantische Suche & Chat",
|
||||
"epicEmoji": "🔎",
|
||||
"wave": 7,
|
||||
@@ -1135,7 +1135,7 @@
|
||||
"Quellenanzeige im Test sichtbar bestätigt",
|
||||
"Verlauf nach Navigation im Test erhalten"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Semantische Suche & Chat",
|
||||
"epicEmoji": "🔎",
|
||||
"wave": 7,
|
||||
@@ -1167,7 +1167,7 @@
|
||||
"Fall geringer Datenlage im Test korrekt behandelt",
|
||||
"Konfidenzwert im Test nachvollzogen"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Workflow-Vorschläge",
|
||||
"epicEmoji": "💡",
|
||||
"wave": 4,
|
||||
@@ -1200,7 +1200,7 @@
|
||||
"Ausfallverhalten im Test bestätigt",
|
||||
"Antwortformat gegen Vertrag geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Workflow-Vorschläge",
|
||||
"epicEmoji": "💡",
|
||||
"wave": 5,
|
||||
@@ -1233,7 +1233,7 @@
|
||||
"Trefferquoten-Auswertung im Test nachvollzogen",
|
||||
"Wirkung des Feedbacks auf Folgevorschlag geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Workflow-Vorschläge",
|
||||
"epicEmoji": "💡",
|
||||
"wave": 6,
|
||||
@@ -1265,7 +1265,7 @@
|
||||
"Fehlregistrierung im Test korrekt abgewiesen",
|
||||
"Zwei Module parallel registriert und geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Datenschutz & Governance",
|
||||
"epicEmoji": "🛡️",
|
||||
"wave": 3,
|
||||
@@ -1301,7 +1301,7 @@
|
||||
"Globaler Schalter (Core LIC-02) im Test respektiert",
|
||||
"Änderung ohne Neustart im Test nachvollzogen"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Datenschutz & Governance",
|
||||
"epicEmoji": "🛡️",
|
||||
"wave": 4,
|
||||
@@ -1334,7 +1334,7 @@
|
||||
"Fehlende Freigabe verhindert externe Verarbeitung im Test",
|
||||
"Trainingsausschluss vertraglich und technisch geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Datenschutz & Governance",
|
||||
"epicEmoji": "🛡️",
|
||||
"wave": 3,
|
||||
@@ -1367,7 +1367,7 @@
|
||||
"Vorabwarnung im Test ausgelöst",
|
||||
"Verbrauchszählung gegen tatsächliche Aufrufe abgeglichen"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Datenschutz & Governance",
|
||||
"epicEmoji": "🛡️",
|
||||
"wave": 3,
|
||||
@@ -1399,7 +1399,7 @@
|
||||
"Verweis auf Modell-/Promptversion im Test bestätigt",
|
||||
"Unveränderlichkeit des Eintrags im Test geprüft"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Datenschutz & Governance",
|
||||
"epicEmoji": "🛡️",
|
||||
"wave": 4,
|
||||
@@ -1707,7 +1707,7 @@
|
||||
"Test: Extraktionsergebnis außerhalb des erwarteten Schemas wird abgelehnt/markiert, nicht stillschweigend übernommen",
|
||||
"Test bestätigt, dass keine sicherheitsrelevante Aktion ohne menschliche Bestätigung ausgelöst wurde"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Datenschutz & Governance",
|
||||
"epicEmoji": "🛡️",
|
||||
"wave": 4,
|
||||
@@ -1773,7 +1773,7 @@
|
||||
"Test: Registrierung mit manipuliertem/fremdem Tenant-Kontext wird abgelehnt",
|
||||
"Regressionstest: normaler DMS-/Mail-Registrierungsablauf bleibt funktionsfähig"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "Datenschutz & Governance",
|
||||
"epicEmoji": "🛡️",
|
||||
"wave": 10,
|
||||
@@ -1803,12 +1803,48 @@
|
||||
"Lasttest: eine überschreitende Anfrage blockiert nicht die Verarbeitung paralleler, regulärer Anfragen",
|
||||
"Regressionstest: normale, innerhalb der Grenzen liegende Anfragen funktionieren unverändert"
|
||||
],
|
||||
"status": "Backlog",
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 10,
|
||||
"unlocks": [],
|
||||
"prompt": "# ENG-07 – Ressourcenlimits für die Inferenz-Warteschlange\n\n**Epic:** 🧠 KI-Engine & Modell-Anbindung | **Rolle:** Backend | **Komplexität:** Mittel | **Aufwand:** 2 Personentage | **Welle:** 10\n\n---\n\n## Rolle\nDu bist erfahrene Entwicklerin im Bereich Backend und baust NEXARCH AI (KI-Engine & Modell-Anbindung, Klassifizierung, Extraktion, Zusammenfassung, semantische Suche & Chat, Workflow-Vorschläge, Datenschutz & Governance), lokal/On-Premise-first via Ollama, optionaler externer Adapter, kein Training auf Kundendaten.\nServerseitige Logik, Datenzugriff und Schnittstelle. Keine Geschäftslogik in der Oberfläche.\n\n## Auftrag\nENG-05 stellt eine asynchrone Warteschlange für Inferenz-Aufrufe bereit, damit lange KI-Anfragen keine Anfrage-Bearbeitung blockieren, ohne Obergrenzen pro Einzelanfrage festzulegen. Eine sehr lange Eingabe (z. B. ein extrem langes Dokument bei Zusammenfassung/Embedding) oder eine bewusst konstruierte Anfrage kann einen Inferenz-Worker unverhältnismäßig lange blockieren und damit andere Mandanten in der gemeinsamen Warteschlange verzögern. Harte Obergrenzen je Anfrage definieren (max. Eingabegröße/Kontextlänge, max. Verarbeitungszeit) – bei Überschreitung wird die Anfrage kontrolliert abgelehnt statt den Worker zu blockieren.\n\n**Technische Grundlage:** Postgres-Jobqueue, Worker-Goroutinen, Ressourcenlimits (Zeit/Eingabegröße/Kontextlänge)\n\n## Produkt-DNA für diesen Bereich\n**Übernehmen:**\n- Unleash: konfigurierbare Grenzen (Quotas) statt unbegrenzter Ressourcennutzung, hier auf Inferenz-Anfragen übertragen.\n\n**Bewusst vermeiden:**\n- LangChain/LlamaIndex (verbreitetes Anti-Muster in einfachen Integrationen) – unbegrenzte Kontextlängen führen zu unvorhersehbaren Latenzen/Kosten.: harte, konfigurierbare Obergrenzen je Anfrage von Anfang an.\n\n## Ausgangslage\nSetzt auf folgenden bereits fertigen Kacheln auf: ENG-05.\n\n## Akzeptanzkriterien\nDie Kachel gilt erst als umgesetzt, wenn alle Punkte erfüllt sind:\n1. Jede Inferenz-Anfrage hat konfigurierbare Obergrenzen für Eingabegröße/Kontextlänge und maximale Verarbeitungszeit\n2. Eine Überschreitung führt zur kontrollierten Ablehnung der Anfrage mit klarer Fehlermeldung, nicht zur Blockade des Workers\n3. Andere, gleichzeitig laufende Inferenz-Anfragen (auch anderer Mandanten) bleiben von einer überschreitenden Anfrage unbeeinflusst\n\n## Prüfungen vor der Abnahme\nFühre jede Prüfung tatsächlich durch und halte das Ergebnis schriftlich fest. Nicht durchgeführte Prüfungen zählen als offen:\n1. Test mit einer Eingabe, die absichtlich die Kontextlängen-/Größenobergrenze überschreitet: Anfrage wird kontrolliert abgelehnt\n2. Lasttest: eine überschreitende Anfrage blockiert nicht die Verarbeitung paralleler, regulärer Anfragen\n3. Regressionstest: normale, innerhalb der Grenzen liegende Anfragen funktionieren unverändert\n\n## Bekannte Fehler vermeiden\n\nThreat-Model-Finding (AI-Board, 2026-09-12), analog zu DMS-Finding `FDN-11` und Mail-Finding `SRC-12`: unbegrenzte Einzelanfrage-Verarbeitung ist ein Denial-of-Service-Vektor gegen den gemeinsamen Inferenz-Worker-Pool, auch ohne böswillige Absicht.\n\n## Nicht Bestandteil dieser Kachel\nDiese Punkte gehören ausdrücklich in andere Kacheln. Bereite höchstens die Schnittstelle dafür vor:\n- `ENG-05` Inferenz-Queue\n\n## Arbeitsweise\n1. Lies zuerst den bestehenden Code der Vorbedingungen und halte dich an die dort etablierten Muster.\n2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.\n3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.\n4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.\n5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.\n6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.\n\n## Abschluss\n- Commit-Nachricht: `ENG-07: ressourcenlimits-f-r-die-inferenz-warteschlange`\n- Branch: `feature/eng-07-ressourcenlimits-f-r-die-inferenz-warteschlange`\n- Schrittweise committen, Branch pushen, dann anhalten. Kein Merge, kein Deploy.\n- In der Beschreibung des Pull Request die durchgeführten Prüfungen mit Ergebnis auflisten.\n"
|
||||
},
|
||||
{
|
||||
"code": "ENG-08",
|
||||
"title": "AI-App: gebündelter Diensteinstiegspunkt (cmd/ai-app)",
|
||||
"epic": "ENG",
|
||||
"featureIds": [],
|
||||
"role": "Backend",
|
||||
"complexity": "Mittel",
|
||||
"estimateDays": 2,
|
||||
"tech": "net/http.ServeMux, pgxpool, Umgebungsvariablen fuer DSN/Listen-Adresse",
|
||||
"description": "Buendelt alle bestehenden AI-API-Pakete (summaryapi, semanticsearchapi, extractapi, residencyapi, routingsuggestapi) inkl. Inferenz-Queue-Worker und Quota-Enforcement zu einem einzigen startbaren Dienst cmd/ai-app, analog connect/cmd/connect-app.",
|
||||
"dependsOn": [
|
||||
"ENG-05",
|
||||
"GOV-03",
|
||||
"GOV-04",
|
||||
"WFS-02"
|
||||
],
|
||||
"akzeptanz": [
|
||||
"cmd/ai-app startet einen einzigen HTTP-Dienst, der alle bestehenden AI-API-Pakete unter ihren jeweiligen Routen bereitstellt",
|
||||
"Inferenz-Queue-Worker und Quota-Enforcement sind beim Start korrekt verdrahtet (nicht nur die HTTP-Handler ohne funktionierenden Hintergrundprozess)",
|
||||
"DSN und Listen-Adresse ausschliesslich ueber Umgebungsvariablen, keine Zugangsdaten im Code",
|
||||
"Fehlende Pflicht-Umgebungsvariable fuehrt zu klarer Fehlermeldung beim Start, nicht zu einem stillen Absturz",
|
||||
"Dienst startet real auf Host 204 und beantwortet mindestens einen Endpunkt je eingebundenem API-Paket"
|
||||
],
|
||||
"pruefungen": [
|
||||
"Realer Start auf Host 204 mit Wegwerf-DB, mindestens ein Aufruf je eingebundenem API-Paket erfolgreich",
|
||||
"Ein echter Inferenz-Auftrag durchlaeuft die Warteschlange real bis zum Abschluss",
|
||||
"Fehlende Pflicht-Umgebungsvariable: Dienst beendet sich mit klarer Fehlermeldung, kein Port offen",
|
||||
"Bestehende Modul-Testsuite bleibt unveraendert gruen"
|
||||
],
|
||||
"status": "Fertig",
|
||||
"epicName": "KI-Engine & Modell-Anbindung",
|
||||
"epicEmoji": "🧠",
|
||||
"wave": 9,
|
||||
"unlocks": [],
|
||||
"prompt": "# ENG-08 – AI-App: gebündelter Diensteinstiegspunkt (cmd/ai-app)\n\n**Epic:** 🧠 KI-Engine & Modell-Anbindung | **Rolle:** Backend | **Komplexität:** Mittel | **Aufwand:** 2 Personentage | **Welle:** 9\n\n---\n\n## Rolle\nDu bist erfahrene Entwicklerin im Bereich Backend und baust NEXARCH AI (zentrales, modulübergreifendes Modul für KI-Funktionen).\n\n## Auftrag\nBei der Vorbereitung des 131-Rollouts wurde real festgestellt: AI hat keinen `cmd/`-Diensteinstiegspunkt, der einen Port öffnet — nur Test-Fixtures und CI-Gate-CLIs (`extractapi-a11y-fixture`, `summaryapi-a11y-fixture`, `pflichttestgate`). Die API-Handler-Pakete (`summaryapi`, `semanticsearchapi`, `extractapi`, `residencyapi`, `routingsuggestapi`) sind reine Bibliotheken ohne bündelnden Dienst. Verbinde sie zu einem einzigen startbaren `cmd/ai-app`, analog zu `connect/cmd/connect-app`.\n\n**Technische Grundlage:** `net/http.ServeMux`, `pgxpool`, Umgebungsvariablen für DSN/Listen-Adresse (analog `connect-app`).\n\n## Produkt-DNA für diesen Bereich\n> Ein Dienst pro Modul, alle HTTP-Handler-Pakete darin registriert — kein Diensteinstiegspunkt pro Feature.\n\n## Ausgangslage\nReferenzmuster: `connect/cmd/connect-app/main.go`. Alle bereits fertigen AI-API-Pakete: `summaryapi`, `semanticsearchapi`, `extractapi`, `residencyapi` (GOV-03), `routingsuggestapi` (WFS-02). Inferenz-Queue (ENG-05) und Quota-Enforcement (GOV-04) müssen beim Start korrekt verdrahtet werden (Queue-Worker + Quota-Store an den `Queue`/`Worker` gehängt, nicht nur die reinen HTTP-Handler).\n\n## Akzeptanzkriterien\n1. `cmd/ai-app` startet einen einzigen HTTP-Dienst, der alle bestehenden AI-API-Pakete unter ihren jeweiligen Routen bereitstellt\n2. Inferenz-Queue-Worker und Quota-Enforcement sind beim Start korrekt verdrahtet (nicht nur die HTTP-Handler ohne funktionierenden Hintergrundprozess)\n3. DSN und Listen-Adresse ausschließlich über Umgebungsvariablen, keine Zugangsdaten im Code\n4. Fehlende Pflicht-Umgebungsvariable führt zu klarer Fehlermeldung beim Start, nicht zu einem stillen Absturz\n5. Dienst startet real auf Host 204 und beantwortet mindestens einen Endpunkt je eingebundenem API-Paket\n\n## Prüfungen vor der Abnahme\n1. Realer Start auf Host 204 mit Wegwerf-DB, mindestens ein Aufruf je eingebundenem API-Paket erfolgreich\n2. Ein echter Inferenz-Auftrag durchläuft die Warteschlange real bis zum Abschluss (Nachweis, dass der Worker läuft, nicht nur der HTTP-Teil)\n3. Fehlende Pflicht-Umgebungsvariable: Dienst beendet sich mit klarer Fehlermeldung, kein Port offen\n4. Bestehende Modul-Testsuite bleibt unverändert grün (keine Regression durch das neue `cmd/`-Paket)\n\n## Nicht Bestandteil dieser Kachel\n- Neue Fachlogik/Endpunkte (nur Zusammenführung bestehender Pakete)\n- Rollout/Deploy auf Host 131 (separater, späterer Schritt nach Freigabe)\n- Kill-Switch (falls für AI gewünscht: eigenes Folgeticket analog ENG-10, AI ist ohnehin schon optional über Core LIC-02 aktivierbar)\n\n## Arbeitsweise\n1. Lies zuerst `connect/cmd/connect-app/main.go` als Referenzmuster.\n2. Setze die kleinste Lösung um, die alle Akzeptanzkriterien erfüllt. Kein Umbau angrenzender Bereiche.\n3. Schreibe zu jedem Akzeptanzkriterium mindestens einen automatisierten Test.\n4. Führe alle Prüfungen aus und dokumentiere Zielwert und Ergebnis.\n5. Deutschsprachige Oberflächentexte, englischsprachige Bezeichner im Code.\n6. Keine Zugangsdaten, Schlüssel oder Verbindungszeichenfolgen im Code – ausschließlich über Umgebungsvariablen.\n\n## Abschluss\n- Commit-Nachricht: `ENG-08: ai-app gebuendelter diensteinstiegspunkt`\n- Branch: `feature/eng-08-ai-app-diensteinstiegspunkt`\n- Schrittweise committen, Branch pushen, dann anhalten. Kein Merge, kein Deploy.\n- In der Beschreibung des Pull Request die durchgeführten Prüfungen mit Ergebnis auflisten.\n"
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user