fix: Fehlende Quellenverweise in Lageberichten repariert und Validierung ergaenzt
17 fehlende Quellen (815-831) im Irankonflikt und 11 fehlende (77-87) im Ukraine-Konflikt in sources_json nachgetragen. Ursache: Claude referenziert Quellen im Summary-Text, liefert sie aber nicht immer im sources-Array mit. Neue Validierung im Orchestrator erkennt fehlende Quellennummern nach dem Merge und fuegt Platzhalter ein. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -936,9 +936,32 @@ class AgentOrchestrator:
|
|||||||
|
|
||||||
if analysis:
|
if analysis:
|
||||||
sources = analysis.get("sources", [])
|
sources = analysis.get("sources", [])
|
||||||
sources_json = json.dumps(sources, ensure_ascii=False) if sources else previous_sources_json
|
|
||||||
new_summary = analysis.get("summary", "") or previous_summary
|
new_summary = analysis.get("summary", "") or previous_summary
|
||||||
|
|
||||||
|
# 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))
|
||||||
|
defined_nrs = set()
|
||||||
|
for s in sources:
|
||||||
|
try:
|
||||||
|
defined_nrs.add(int(s.get("nr", 0)))
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
pass
|
||||||
|
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
|
||||||
|
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)
|
||||||
|
|
||||||
|
sources_json = json.dumps(sources, ensure_ascii=False) if sources else previous_sources_json
|
||||||
|
|
||||||
await db.execute(
|
await db.execute(
|
||||||
"UPDATE incidents SET summary = ?, sources_json = ?, updated_at = ? WHERE id = ?",
|
"UPDATE incidents SET summary = ?, sources_json = ?, updated_at = ? WHERE id = ?",
|
||||||
(new_summary, sources_json, now, incident_id),
|
(new_summary, sources_json, now, incident_id),
|
||||||
|
|||||||
In neuem Issue referenzieren
Einen Benutzer sperren