Files
go-documenter/doc/requirements/04-llm-anreicherung.md
T
Christoph Kroczek 6e6cb0dc8d 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>
2026-07-13 15:20:48 +02:00

2.3 KiB

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.

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