fix: Quellenlinks mit Buchstaben-Suffix ([389a] etc.) korrekt verlinken

Probleme:
- Frontend-Regex matchte nur reine Zahlen, nicht [389a]-Style Refs
- 17 alphanumerische Quellen im Irankonflikt blieben unverlinkt
- Orchestrator-Validierung erkannte diese Refs nicht als fehlend

Fixes:
- Frontend: Regex erweitert auf [\d+a-z?], Vergleich mit String und Number
- Orchestrator: Validierung erkennt jetzt auch alphanumerische Refs
- Analyzer-Prompts: Explizite Anweisung, nur ganze Zahlen als Nr zu verwenden
- 822a und 859a in Irankonflikt sources_json nachgetragen
- Cache-Buster aktualisiert

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
Claude Dev
2026-03-16 11:34:55 +01:00
Ursprung 599102740a
Commit bbd4821011
4 geänderte Dateien mit 23 neuen und 12 gelöschten Zeilen

Datei anzeigen

@@ -980,13 +980,24 @@ class AgentOrchestrator:
# Validierung: Fehlende Quellennummern im Summary erkennen und reparieren
if sources and new_summary:
import re as _re
referenced_nrs = set(int(m) for m in _re.findall(r'\[(\d+)\]', new_summary))
# Auch alphanumerische Refs wie [389a] erkennen
referenced_raw = set(_re.findall(r'\[(\d+[a-z]?)\]', new_summary))
referenced_nrs = set()
for r in referenced_raw:
try:
referenced_nrs.add(int(r))
except ValueError:
referenced_nrs.add(r) # Keep alphanumeric as string
defined_nrs = set()
for s in sources:
try:
defined_nrs.add(int(s.get("nr", 0)))
except (ValueError, TypeError):
pass
nr = s.get("nr", 0)
if isinstance(nr, int):
defined_nrs.add(nr)
elif isinstance(nr, str):
try:
defined_nrs.add(int(nr))
except ValueError:
defined_nrs.add(nr) # Keep alphanumeric like '389a'
missing_nrs = sorted(referenced_nrs - defined_nrs)
if missing_nrs:
logger.warning(