Files
Dokumenten-Check/Scripts/DC_REFERENCES_ALTER.sql
Philipp Ostmeyer c75f460ec5 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>
2026-06-22 12:45:55 +02:00

82 lines
2.2 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =============================================================================
-- DC_REFERENCES_ALTER.sql
-- Ergänzt dc_project_documents um Felder für heruntergeladene externe Referenzen.
-- parent_document_id → Self-FK auf das Originaldokument (NULL bei Originalen)
-- is_reference → 0 = Originaldokument, 1 = heruntergeladene Referenz
-- source_url → Ursprungs-URL der heruntergeladenen Referenz
-- Idempotent: Fehler "Spalte/Constraint existiert bereits" wird ignoriert.
-- =============================================================================
BEGIN
EXECUTE IMMEDIATE '
ALTER TABLE dc_project_documents ADD (
parent_document_id NUMBER,
is_reference NUMBER DEFAULT 0,
source_url VARCHAR2(2000 CHAR)
)
';
DBMS_OUTPUT.PUT_LINE('Spalten parent_document_id/is_reference/source_url angelegt.');
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -1430 THEN
DBMS_OUTPUT.PUT_LINE('Spalten existieren bereits kein Änderungsbedarf.');
ELSE
RAISE;
END IF;
END;
/
-- Bestehende Zeilen initialisieren
UPDATE dc_project_documents
SET is_reference = 0
WHERE is_reference IS NULL;
COMMIT;
-- Self-FK (idempotent)
BEGIN
EXECUTE IMMEDIATE '
ALTER TABLE dc_project_documents
ADD CONSTRAINT dc_project_documents_parent_fk
FOREIGN KEY (parent_document_id) REFERENCES dc_project_documents (id)
';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE IN (-2264, -2261, -2275) THEN NULL; -- Constraint existiert bereits
ELSE RAISE;
END IF;
END;
/
-- Check-Constraint is_reference (idempotent)
BEGIN
EXECUTE IMMEDIATE '
ALTER TABLE dc_project_documents
ADD CONSTRAINT dc_project_documents_is_ref_ck
CHECK (is_reference IN (0, 1))
';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE IN (-2264, -2261) THEN NULL; -- Constraint existiert bereits
ELSE RAISE;
END IF;
END;
/
-- Index auf parent_document_id (idempotent)
BEGIN
EXECUTE IMMEDIATE '
CREATE INDEX dc_project_documents_parent_i ON dc_project_documents (parent_document_id)
';
EXCEPTION
WHEN OTHERS THEN
IF SQLCODE = -955 THEN NULL; -- Index existiert bereits
ELSE RAISE;
END IF;
END;
/
COMMIT;
EXIT;