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:
51
Scripts/DC_STRIP_TRANSLATED_FENCE.sql
Normal file
51
Scripts/DC_STRIP_TRANSLATED_FENCE.sql
Normal file
@@ -0,0 +1,51 @@
|
||||
-- =============================================================================
|
||||
-- Bereinigt umschließende Markdown-Code-Fences (```markdown ... ```) aus der
|
||||
-- Spalte TRANSLATED_TEXT in DC_PROJECT_DOCUMENTS.
|
||||
--
|
||||
-- Hintergrund: Das Übersetzungs-Modell hat den Text mal mit, mal ohne Fence
|
||||
-- gespeichert. Der Backend-Code strippt den Fence ab jetzt beim Schreiben;
|
||||
-- dieses Skript bereinigt die bereits vorhandenen Altdatensätze.
|
||||
--
|
||||
-- Idempotent: Datensätze ohne führenden ``` bleiben unverändert.
|
||||
-- =============================================================================
|
||||
|
||||
SET SERVEROUTPUT ON
|
||||
|
||||
DECLARE
|
||||
v_count PLS_INTEGER := 0;
|
||||
v_text CLOB;
|
||||
v_nl PLS_INTEGER;
|
||||
BEGIN
|
||||
FOR rec IN (
|
||||
SELECT id, translated_text
|
||||
FROM dc_project_documents
|
||||
WHERE translated_text IS NOT NULL
|
||||
AND LTRIM(translated_text) LIKE '```%'
|
||||
) LOOP
|
||||
v_text := LTRIM(rec.translated_text);
|
||||
|
||||
-- Erste Zeile (z. B. ```markdown) entfernen
|
||||
v_nl := INSTR(v_text, CHR(10));
|
||||
IF v_nl > 0 THEN
|
||||
v_text := SUBSTR(v_text, v_nl + 1);
|
||||
END IF;
|
||||
|
||||
-- Schließendes ``` am Ende entfernen
|
||||
v_text := RTRIM(v_text);
|
||||
IF SUBSTR(v_text, -3) = '```' THEN
|
||||
v_text := SUBSTR(v_text, 1, LENGTH(v_text) - 3);
|
||||
END IF;
|
||||
|
||||
v_text := TRIM(v_text);
|
||||
|
||||
UPDATE dc_project_documents
|
||||
SET translated_text = v_text
|
||||
WHERE id = rec.id;
|
||||
|
||||
v_count := v_count + 1;
|
||||
END LOOP;
|
||||
|
||||
COMMIT;
|
||||
DBMS_OUTPUT.PUT_LINE('Bereinigte Datensätze: ' || v_count);
|
||||
END;
|
||||
/
|
||||
Reference in New Issue
Block a user