M0: arc42-Konzeptdokument, Gherkin-Anforderungen und OpenAPI-Vertrag
- doc/architecture.md: arc42-Detaildokument mit Mermaid-Diagrammen (Bausteinsicht, Klassendiagramm, Statusmodell, 5 Sequenzdiagramme), Speicherkonzept, DEC-01..19-Entscheidungen mit Trade-offs - doc/requirements/: 7 Features als Gherkin-Szenarien (TDD-Grundlage) mit Traceability-Tabellen Szenario <-> Stdlib-Testname - doc/openapi.yaml: API-Vertrag fuer alle 9 Endpunkte (Quelle der Wahrheit) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# Feature: Optionale LLM-Anreicherung
|
||||
|
||||
Als Nutzer möchte ich, dass Dokumente semantisch angereichert werden (Titel, Zusammenfassung,
|
||||
Tags, Dokumentdatum, Sprache), ohne dass ein nicht erreichbares LLM die Verarbeitung blockiert.
|
||||
|
||||
```gherkin
|
||||
Funktionalität: Optionale LLM-Anreicherung
|
||||
|
||||
Szenario: Erfolgreiche Anreicherung
|
||||
Angenommen ein Dokument mit extrahiertem Text und ein erreichbares LLM
|
||||
Wenn die Enrich-Stage läuft
|
||||
Dann wird ein Event "DocumentEnriched" mit title, summary, tags, doc_date und language aufgezeichnet
|
||||
Und das verwendete Modell und die Prompt-Version sind im Event dokumentiert
|
||||
|
||||
Szenario: LLM nicht erreichbar führt zu Wiederholung mit Backoff
|
||||
Angenommen das LLM ist nicht erreichbar
|
||||
Wenn die Enrich-Stage fehlschlägt
|
||||
Dann wird ein Event "ProcessingFailed" mit retryable=true aufgezeichnet
|
||||
Und der nächste Versuch wird mit exponentiellem Backoff eingeplant
|
||||
|
||||
Szenario: Nach erschöpften Versuchen läuft die Pipeline weiter
|
||||
Angenommen das LLM bleibt über die maximale Versuchszahl hinaus nicht erreichbar
|
||||
Wenn der letzte Versuch fehlschlägt
|
||||
Dann wird ein Event "EnrichmentSkipped" aufgezeichnet
|
||||
Und das Dokument wird trotzdem indexiert und abgelegt
|
||||
|
||||
Szenario: Unbrauchbare LLM-Antwort ist wiederholbar
|
||||
Angenommen das LLM liefert kein valides JSON
|
||||
Wenn die Enrich-Stage die Antwort nicht parsen kann
|
||||
Dann wird der Fehler als retryable behandelt
|
||||
|
||||
Szenario: Übersprungene Anreicherung ist nachholbar
|
||||
Angenommen ein abgelegtes Dokument mit "EnrichmentSkipped"
|
||||
Wenn POST /v1/documents/{id}/reprocess mit from_stage "enrich" aufgerufen wird
|
||||
Dann wird nur die Anreicherung erneut ausgeführt
|
||||
Und bereits abgeschlossene Schritte laufen nicht erneut
|
||||
```
|
||||
|
||||
## Traceability
|
||||
|
||||
| Szenario | Go-Test (Pakete `internal/llm`, `internal/pipeline`) |
|
||||
|---|---|
|
||||
| Erfolgreiche Anreicherung | `TestEnrichStage_SuccessEmitsDocumentEnriched` |
|
||||
| LLM nicht erreichbar führt zu Wiederholung mit Backoff | `TestEnrichStage_UnreachableLLMIsRetryableWithBackoff` |
|
||||
| Nach erschöpften Versuchen läuft die Pipeline weiter | `TestPipeline_EnrichExhaustedSkipsAndContinues` |
|
||||
| Unbrauchbare LLM-Antwort ist wiederholbar | `TestEnricher_MalformedJSONIsRetryable` |
|
||||
| Übersprungene Anreicherung ist nachholbar | `TestReprocess_FromEnrichOnlyRunsEnrich` |
|
||||
Reference in New Issue
Block a user