fix(bericht): keine Doppelverweise und keine Platzhalter im Quellenverzeichnis
Zwei Befunde aus dem Bericht zu Lage 60 vom 02.08.2026.
1. Doppelte Verweise, ein Folgefehler des Dubletten-Zusammenfuehrens. Zeigten
zwei Nummern auf dieselbe Adresse, wurden beide Verweise auf dieselbe neue
Nummer umgeschrieben und standen dann nebeneinander: "[24][24]". Im Bericht
kam das dreimal vor, in der gespeicherten Fassung nicht. Aufeinanderfolgende
Verweise auf dieselbe Nummer werden jetzt zusammengezogen.
2. Platzhalter ohne Adresse. Das Modell hatte einen Eintrag {"nr": 12, "name":
"Quelle", "url": ""} erzeugt. Der Bericht druckte ihn als "12 Quelle" ohne
Adresse und die Statistik fuehrte ein Medium namens "Quelle". Ein Eintrag
ohne Adresse ist kein pruefbarer Beleg und kommt nicht mehr ins
Verzeichnis; der Verweis darauf wird wie ein verwaister behandelt und
entfernt.
Gegenprobe an Lage 60: aus 30 Eintraegen werden 26 (drei doppelte Adressen
zusammengefuehrt, ein Platzhalter entfernt), die Zaehlung bleibt lueckenlos,
kein doppelter Verweis mehr im Text.
Neu sind 4 Pruefungen, insgesamt laufen 220 ohne Netzzugriff und ohne Kosten.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Dieser Commit ist enthalten in:
@@ -138,11 +138,14 @@ def _dubletten_zusammenfuehren(sources: list) -> list:
|
||||
"""
|
||||
behalten: dict[str, dict] = {}
|
||||
reihenfolge: list[str] = []
|
||||
ohne_adresse = 0
|
||||
for s in sources:
|
||||
schluessel = _url_schluessel(s.get("url") or "")
|
||||
if not schluessel:
|
||||
reihenfolge.append(id(s))
|
||||
behalten[id(s)] = s
|
||||
# Eintraege ohne Adresse sind keine pruefbaren Belege. Im Bericht
|
||||
# vom 02.08.2026 stand so ein Platzhalter als "12 Quelle" ohne
|
||||
# Adresse im Verzeichnis und als "Quelle 1" in der Statistik.
|
||||
ohne_adresse += 1
|
||||
continue
|
||||
if schluessel in behalten:
|
||||
behalten[schluessel].setdefault("alias_nrs", []).append(s.get("nr"))
|
||||
@@ -151,9 +154,11 @@ def _dubletten_zusammenfuehren(sources: list) -> list:
|
||||
reihenfolge.append(schluessel)
|
||||
|
||||
ergebnis = [behalten[k] for k in reihenfolge]
|
||||
entfernt = len(sources) - len(ergebnis)
|
||||
entfernt = len(sources) - len(ergebnis) - ohne_adresse
|
||||
if entfernt:
|
||||
logger.info("Quellenverzeichnis: %d doppelte Adresse(n) zusammengefuehrt", entfernt)
|
||||
if ohne_adresse:
|
||||
logger.info("Quellenverzeichnis: %d Eintrag/Eintraege ohne Adresse entfernt", ohne_adresse)
|
||||
return ergebnis
|
||||
|
||||
|
||||
@@ -207,6 +212,10 @@ def _apply_citation_map(text: str, abbildung: dict) -> str:
|
||||
return ""
|
||||
|
||||
ergebnis = re.sub(r"\[(\d{1,5}[a-z]?)\]", ersetze, text)
|
||||
# Zeigten zwei Nummern auf dieselbe Adresse, landen ihre Verweise nach der
|
||||
# Umschreibung auf derselben Zahl und stehen dann doppelt nebeneinander:
|
||||
# "[24][24]". Im Bericht vom 02.08.2026 kam das dreimal vor.
|
||||
ergebnis = re.sub(r"(\[(\d{1,5})\])(?:\s*\[\2\])+", r"\1", ergebnis)
|
||||
if verwaist:
|
||||
logger.warning(
|
||||
"Bericht: %d Quellenverweise ohne Verzeichniseintrag entfernt (%s)",
|
||||
|
||||
In neuem Issue referenzieren
Einen Benutzer sperren