1. Faktencheck immer vollständig
PDF-Export hatte im scope=report einen [:20]-Cap, der vollständige
Faktencheck wurde nur bei scope=full gerendert. Jetzt ungekürzt
überall, sortiert chronologisch absteigend (DB-Sortierung).
2. Status-Labels aus Frontend übernommen
FC_STATUS_LABELS hatte nur 4 Werte; in der DB existieren aber 7+
(confirmed/unconfirmed/contradicted/developing/established/
unverified/disputed). Folge: "contradicted" und drei weitere
wurden auf englisch ausgegeben. Jetzt 1:1 vom Monitor-UI:
contradicted → "Widerlegt"
developing → "Unklar"
established → "Gesichert"
unverified → "Ungeprüft"
3. Adhoc-Export: Neueste Entwicklungen statt Executive Summary
Bei Live-Monitoring-Lagen ist die generische Executive Summary
weniger aussagekräftig als die kompakten "Neueste Entwicklungen"-
Bullets. Endpoint nutzt jetzt:
- adhoc + latest_developments vorhanden → latest_developments
(Markdown -> HTML konvertiert)
- adhoc + leer → cached/generierte Executive Summary (Fallback)
- research → unverändert Executive Summary
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
WeasyPrint 68.1 schreibt weder XMP noch Create-/ModDate ins PDF. Das Post-
Processing via pikepdf ergaenzt beide:
- Info-Dict: /CreationDate + /ModDate im PDF-Standardformat
(D:YYYYMMDDHHmmSS+HHmm) aus Incident.created_at / updated_at
- XMP-Block mit Dublin Core (dc:title, dc:creator, dc:description,
dc:subject, dc:language), PDF (pdf:Keywords) und XMP (CreatorTool,
CreateDate, ModifyDate, MetadataDate) Namespaces
Damit werden die Exporte sowohl von klassischen Tools (Explorer, Finder)
als auch von DMS-Systemen (SharePoint, Bridge, Acrobat) vollstaendig
indexiert. Fallback: Bei Fehler im Post-Processing wird das Original-PDF
zurueckgegeben, Export schlaegt nie fehl.
- category_labels ist in der DB ein JSON-Dict (primary/secondary/tertiary/
mentioned), nicht ein Komma-String. Der bisherige split(",") fuehrte dazu,
dass ein nacktes { als Keyword durchrutschte. WeasyPrint bricht den
PDF-Keywords-Stream an dieser Stelle ab, weil { in PDF-Syntax eine
Sonderbedeutung hat — Ergebnis war "OSINT, Live-Monitoring, AegisSight, {".
- Neuer Parser: erst JSON (Dict oder Liste), Fallback auf Komma-String.
- _sanitize_keyword(): filtert {, }, [, ], Backslash und normalisiert
Whitespace in allen Keywords (Defense in Depth).
- Alle sichtbaren "Executive Summary"-Bezeichnungen durch "Zusammenfassung" ersetzt
(PDF/DOCX-Überschrift, Dateiname, Fallback-Texte)
- Deckblatt-Farben von #888/#aaa auf Navy #0a1832 geändert für
bessere Lesbarkeit beim Druck (PDF-Template + DOCX)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Frontend + Backend erkennen jetzt sowohl ## ZUSAMMENFASSUNG als
auch ## ÜBERBLICK als Zusammenfassungs-Sektion
- Inkrementelles Prompt weist Modell an, ÜBERBLICK in
ZUSAMMENFASSUNG umzubenennen und als Bullet-Points zu formatieren
- Bestehende Lagen zeigen Zusammenfassung sofort in der Kachel
Bei Incidents vom Typ research wird in PDF und DOCX nun korrekt
"Analyse" statt "Lagebild" als Ueberschrift verwendet.
Fallback-Texte auf neutrale Formulierung geaendert.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Lagebild auf ~4000 Zeichen gekürzt (scope=report), Hinweis auf Vollständigen Bericht
- Faktencheck: Top 20 im Lagebericht (alle im Vollständigen)
- Quellenstatistik: Top 20 im Lagebericht
- Quellenverzeichnis: Top 30 im Lagebericht, URLs kleiner (7pt) mit word-break
- Quellenreferenzen [1234] aus Text entfernt
- Sektionsreihenfolge: Exec Summary -> Faktencheck -> Quellenstatistik -> Lagebild
- Lagebericht jetzt ~8-10 Seiten statt 196