fix: Quellen-Suffix-Refs ([22b]) auf Basisquelle auflösen statt Platzhalter

Claude vergibt manchmal Buchstaben-Suffixe an Quellennummern (z.B. [22b] statt [22]). Bisher wurden dafür leere Platzhalter-Quellen erstellt. Jetzt wird geprüft ob die Basisnummer existiert und die Referenz im Text korrigiert.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
claude-dev
2026-04-11 16:51:33 +00:00
Ursprung 5a56024501
Commit 6cddb05b83

Datei anzeigen

@@ -1152,15 +1152,28 @@ class AgentOrchestrator:
defined_nrs.add(nr) # Keep alphanumeric like '389a'
missing_nrs = sorted(referenced_nrs - defined_nrs)
if missing_nrs:
logger.warning(
"Incident %d: %d Quellennummern im Summary ohne Eintrag in sources: %s",
incident_id, len(missing_nrs), missing_nrs[:20]
)
# Platzhalter einfuegen damit die Nummern nicht unverlinkt bleiben
truly_missing = []
for nr in missing_nrs:
sources.append({"nr": nr, "name": "Quelle", "url": ""})
logger.info("Platzhalter fuer fehlende Quelle [%d] eingefuegt", nr)
sources.sort(key=lambda s: int(s.get("nr", 0)) if isinstance(s.get("nr"), int) or (isinstance(s.get("nr"), str) and str(s.get("nr", "")).isdigit()) else 9999)
# Buchstaben-Suffix (z.B. "22b") -> Basisnummer (22) aufloesen
if isinstance(nr, str) and _re.match(r"^\d+[a-z]$", nr):
base_nr = int(nr[:-1])
if base_nr in defined_nrs:
new_summary = new_summary.replace(f"[{nr}]", f"[{base_nr}]")
logger.info(
"Incident %d: Suffix-Ref [%s] auf Basisquelle [%d] aufgeloest",
incident_id, nr, base_nr
)
continue
truly_missing.append(nr)
if truly_missing:
logger.warning(
"Incident %d: %d Quellennummern im Summary ohne Eintrag in sources: %s",
incident_id, len(truly_missing), truly_missing[:20]
)
for nr in truly_missing:
sources.append({"nr": nr, "name": "Quelle", "url": ""})
logger.info("Platzhalter fuer fehlende Quelle [%s] eingefuegt", nr)
sources.sort(key=lambda s: int(s.get("nr", 0)) if isinstance(s.get("nr"), int) or (isinstance(s.get("nr"), str) and str(s.get("nr", "")).isdigit()) else 9999)
# Sicherstellen dass alle nr-Werte Integer sind (Claude liefert manchmal Strings)
if sources: