feat: Externe Dokument-Referenzen erkennen, herunterladen & mitbewerten

Nach der Transkription eines Dokuments werden referenzierte externe
Dokumente (AGB, Verhaltenskodex) erkannt, sicher heruntergeladen und ihr
Text dem Hauptdokument fuer die "Summen"-Bewertung angehaengt (Option D).
Die Referenzen werden zusaetzlich als eigene, herunterladbare Zeilen
gespeichert.

- DB: dc_project_documents um parent_document_id, is_reference, source_url
  erweitert (DC_REFERENCES_ALTER.sql)
- ORDS: Dokumentenliste um die Felder erweitert; neue Endpunkte
  POST /documents/:id/references und DELETE /projects/:id/references;
  q-Quote-Parserfehler im ai-costs-Handler ('[]') behoben
- Backend: ReferenceDownloadService (SSRF-sicher via DNS-/Public-IP-
  Validierung, Redirect-Pruefung, Groessen-/Timeout-Limits, jsoup fuer HTML),
  EvaluationService.extractReferenceUrls (LLM-basierte URL-Erkennung),
  Orchestrierung (Discovery in Phase A, Referenz-Skip + combinedText in Phase B)
- Config: dc.references.* in application.properties

Verifiziert an Projekt 144: AGB-PDF/-HTML heruntergeladen, verknuepft,
"Summen"-Bewertung zitiert AGB-Klauseln aus dem Referenzdokument.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 12:45:55 +02:00
parent d00525c15f
commit c75f460ec5
91 changed files with 3949 additions and 255 deletions

View File

@@ -64,6 +64,14 @@ dc.ai.catalog.temperature=0.1
dc.ai.ocr.timeout=120s
dc.ai.ocr.max-retries=2
# =============================================================================
# Mistral OCR REST Client
# =============================================================================
quarkus.rest-client.mistral-ocr.url=https://api.mistral.ai
quarkus.rest-client.mistral-ocr.scope=jakarta.inject.Singleton
quarkus.rest-client.mistral-ocr.connect-timeout=10000
quarkus.rest-client.mistral-ocr.read-timeout=120000
# =============================================================================
# ORDS REST Client
# =============================================================================
@@ -71,11 +79,25 @@ dc.ai.ocr.max-retries=2
quarkus.rest-client.ords-api.url=http://ords:8080/ords/ai_dev
quarkus.rest-client.ords-api.scope=jakarta.inject.Singleton
quarkus.rest-client.ords-api.connect-timeout=10000
quarkus.rest-client.ords-api.read-timeout=60000
quarkus.rest-client.ords-api.read-timeout=600000
# ORDS-Authentifizierung (OAuth2 Bearer Token leer = kein Auth in Dev)
dc.ords.bearer-token=
# =============================================================================
# Externe Referenz-Dokumente (Links im Dokument → herunterladen & mitbewerten)
# =============================================================================
# Feature an/aus
dc.references.enabled=true
# Max. Anzahl heruntergeladener Referenzen pro Hauptdokument
dc.references.max-per-document=5
# Max. Dateigröße pro Referenz (Bytes); größere Downloads werden verworfen
dc.references.max-size-bytes=15000000
# Verbindungs-/Lese-Timeout pro Download
dc.references.timeout=30s
# Erlaubte Content-Types (alles andere wird verworfen)
dc.references.allowed-content-types=application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document,application/msword,application/vnd.oasis.opendocument.text,text/plain,text/markdown,text/html
# =============================================================================
# Logging
# =============================================================================