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:
File diff suppressed because one or more lines are too long
@@ -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
|
||||
# =============================================================================
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,25 +1,50 @@
|
||||
de/frigosped/dc/model/GeneratedCatalogStructure$GeneratedCategory.class
|
||||
de/frigosped/dc/model/MistralOcrRequest$Document.class
|
||||
de/frigosped/dc/resource/ExportResource.class
|
||||
de/frigosped/dc/model/OrdsQuestionCreateRequest.class
|
||||
de/frigosped/dc/model/DocumentProgressRequest.class
|
||||
de/frigosped/dc/model/MistralOcrRequest.class
|
||||
de/frigosped/dc/model/CompleteProjectRequest.class
|
||||
de/frigosped/dc/model/OrdsCategoryCreateRequest.class
|
||||
de/frigosped/dc/ai/AiModelProducer.class
|
||||
de/frigosped/dc/model/OrdsCatalogCreateRequest.class
|
||||
de/frigosped/dc/model/OrdsCatalogStatusUpdateRequest.class
|
||||
de/frigosped/dc/service/EvaluationService.class
|
||||
de/frigosped/dc/service/MarkdownExportService.class
|
||||
de/frigosped/dc/model/OrdsDocumentList.class
|
||||
de/frigosped/dc/service/DocumentProcessingService.class
|
||||
de/frigosped/dc/model/CatalogGenerateResponse.class
|
||||
de/frigosped/dc/resource/CheckResource.class
|
||||
de/frigosped/dc/service/MarkdownExportService$Seg.class
|
||||
de/frigosped/dc/model/AiCostRequest.class
|
||||
de/frigosped/dc/model/OrdsCatalogStatusResponse.class
|
||||
de/frigosped/dc/client/OrdsClient.class
|
||||
de/frigosped/dc/service/CheckOrchestrationService.class
|
||||
de/frigosped/dc/model/GeneratedCatalogStructure.class
|
||||
de/frigosped/dc/client/OrdsLoggingFilter.class
|
||||
de/frigosped/dc/model/ResultRequest.class
|
||||
de/frigosped/dc/service/ReferenceDownloadService.class
|
||||
de/frigosped/dc/service/MarkdownReportBuilder.class
|
||||
de/frigosped/dc/model/OrdsQuestion.class
|
||||
de/frigosped/dc/client/MistralOcrClient.class
|
||||
de/frigosped/dc/model/OrdsQuestionList.class
|
||||
de/frigosped/dc/model/OrdsQuestionCreateRequest.class
|
||||
de/frigosped/dc/model/ProgressRequest.class
|
||||
de/frigosped/dc/model/OrdsDocument.class
|
||||
de/frigosped/dc/model/OrdsCatalogStatusUpdateRequest.class
|
||||
de/frigosped/dc/model/MistralOcrResponse.class
|
||||
de/frigosped/dc/service/EvaluationService.class
|
||||
de/frigosped/dc/model/OrdsProject.class
|
||||
de/frigosped/dc/service/MarkdownExportService.class
|
||||
de/frigosped/dc/model/CatalogGenerateResponse.class
|
||||
de/frigosped/dc/model/TextsRequest.class
|
||||
de/frigosped/dc/model/EvaluationResult.class
|
||||
de/frigosped/dc/model/AiCostRequest.class
|
||||
de/frigosped/dc/model/OrdsDocumentTexts.class
|
||||
de/frigosped/dc/model/MistralOcrResponse$UsageInfo.class
|
||||
de/frigosped/dc/resource/CatalogResource.class
|
||||
de/frigosped/dc/model/ExportRequest.class
|
||||
de/frigosped/dc/service/CatalogGenerationService.class
|
||||
de/frigosped/dc/service/CheckOrchestrationService.class
|
||||
de/frigosped/dc/model/DocumentPdfEntry.class
|
||||
de/frigosped/dc/service/MarkdownExportService$SegType.class
|
||||
de/frigosped/dc/model/GeneratedCatalogStructure.class
|
||||
de/frigosped/dc/client/OrdsLoggingFilter.class
|
||||
de/frigosped/dc/service/MarkdownExportService$PdfWriter.class
|
||||
de/frigosped/dc/security/ApiKeyFilter.class
|
||||
de/frigosped/dc/service/ReferenceDownloadService$DownloadedReference.class
|
||||
de/frigosped/dc/model/GeneratedCatalogStructure$GeneratedQuestion.class
|
||||
de/frigosped/dc/service/AiCostTrackerService.class
|
||||
de/frigosped/dc/model/MistralOcrResponse$Page.class
|
||||
de/frigosped/dc/model/ReferenceCreateRequest.class
|
||||
|
||||
@@ -1,32 +1,41 @@
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/ai/AiModelProducer.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/client/OrdsClient.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/client/OrdsLoggingFilter.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/AiCostRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/CatalogGenerateResponse.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/EvaluationResult.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ExportRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/GeneratedCatalogStructure.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCatalogCreateRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCatalogStatusResponse.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCatalogStatusUpdateRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCategoryCreateRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocument.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocumentList.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocumentTexts.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsProject.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestion.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestionCreateRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestionList.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ProgressRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ResultRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/TextsRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/resource/CatalogResource.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/resource/CheckResource.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/resource/ExportResource.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/security/ApiKeyFilter.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/AiCostTrackerService.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/CatalogGenerationService.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/CheckOrchestrationService.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/DocumentProcessingService.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/EvaluationService.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/MarkdownExportService.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/ai/AiModelProducer.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/client/MistralOcrClient.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/client/OrdsClient.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/client/OrdsLoggingFilter.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/AiCostRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/CatalogGenerateResponse.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/CompleteProjectRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/DocumentPdfEntry.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/DocumentProgressRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/EvaluationResult.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ExportRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/GeneratedCatalogStructure.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/MistralOcrRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/MistralOcrResponse.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCatalogCreateRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCatalogStatusResponse.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCatalogStatusUpdateRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsCategoryCreateRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocument.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocumentList.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocumentTexts.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsProject.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestion.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestionCreateRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestionList.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ProgressRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ReferenceCreateRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ResultRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/TextsRequest.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/resource/CatalogResource.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/resource/CheckResource.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/resource/ExportResource.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/security/ApiKeyFilter.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/AiCostTrackerService.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/CatalogGenerationService.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/CheckOrchestrationService.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/DocumentProcessingService.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/EvaluationService.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/MarkdownExportService.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/MarkdownReportBuilder.java
|
||||
/home/philipp/git/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/ReferenceDownloadService.java
|
||||
|
||||
@@ -1,12 +0,0 @@
|
||||
de/frigosped/dc/model/OrdsQuestion.class
|
||||
de/frigosped/dc/model/OrdsQuestionList.class
|
||||
de/frigosped/dc/model/ProgressRequest.class
|
||||
de/frigosped/dc/client/OrdsClient.class
|
||||
de/frigosped/dc/ai/AiModelProducer.class
|
||||
de/frigosped/dc/model/OrdsDocument.class
|
||||
de/frigosped/dc/model/OrdsProject.class
|
||||
de/frigosped/dc/model/OrdsDocumentList.class
|
||||
de/frigosped/dc/model/TextsRequest.class
|
||||
de/frigosped/dc/model/ResultRequest.class
|
||||
de/frigosped/dc/model/EvaluationResult.class
|
||||
de/frigosped/dc/resource/CheckResource.class
|
||||
@@ -1,15 +0,0 @@
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/ai/AiModelProducer.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/client/OrdsClient.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/EvaluationResult.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocument.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsDocumentList.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsProject.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestion.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/OrdsQuestionList.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ProgressRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/ResultRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/model/TextsRequest.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/resource/CheckResource.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/CheckOrchestrationService.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/DocumentProcessingService.java
|
||||
/mnt/c/source/Frigosped/Dokumenten-Check/dc-backend/src/main/java/de/frigosped/dc/service/EvaluationService.java
|
||||
Reference in New Issue
Block a user