Skip to content

fix:dev: doppelte Staedte je Postleitzahl, dazu Abdeckungsmessung - #6

Merged
Skulli merged 2 commits into
mainfrom
claude/citymap-dedup-und-tests
Sep 19, 2026
Merged

Skulli merged 2 commits into
mainfrom
claude/citymap-dedup-und-tests

Conversation

@Skulli

@Skulli Skulli commented Sep 19, 2026

Copy link
Copy Markdown
Owner

Der Fehler

CityMap#update_existing verglich die neue Stadt gegen den bestehenden Wert als
Ganzes
. Ab der zweiten Stadt ist der aber selbst zusammengesetzt ("A;B") — uniq
erkennt eine erneut gemeldete Stadt darin nicht wieder.

Nachgestellt:

add("20535", city: "Hamburg")  -> "Hamburg"
add("20535", city: "Altona")   -> "Altona;Hamburg"
add("20535", city: "Hamburg")  -> "Hamburg;Altona;Hamburg"   # Duplikat

Das steckt in den ausgelieferten Daten. In lib/data/DE.yml stand:

Schönberg;Rausdorf;Köthel;Köthel;Kasseburg;Hamfelde

Die Ortsliste landet in symdok im Adressfeld (Address::ZipController ruft
ZipCodes.identify(zip, like_search: true)), dort war das sichtbar. Von 1437
Eintraegen mit mehreren Staedten war einer betroffen.

Der Fix

Beide Seiten werden zerlegt, bevor uniq greift. Die betroffene Zeile in DE.yml ist
mitkorrigiert — beim naechsten Converter-Lauf entstuende sie ohnehin richtig, bis dahin
waere sie falsch ausgeliefert worden.

Abdeckung

Dem Gem fehlte die Messung ganz. Jetzt simplecov als Dev-Abhaengigkeit, COVERAGE=1
schaltet sie ein, Schwelle 95.

vorher nachher
Zeilenabdeckung 75,60 % (31/41) 100 % (41/41)
Beispiele 13 20

CityMap war vollstaendig ungetestet — das neue Spec deckt sie ab, einschliesslich des
Falls, der den Fehler ausloest. Der in symdok genutzte Pfad (ZipCodes.identify) war
schon vorher zu 100 % abgedeckt; die Luecke lag ausschliesslich im Datenpflege-Werkzeug.

🤖 Generated with Claude Code

CityMap#update_existing verglich die neue Stadt gegen den bestehenden Wert
als Ganzes. Ab der zweiten Stadt ist der aber selbst zusammengesetzt
("A;B"), und uniq erkennt eine erneut gemeldete Stadt darin nicht wieder.

In lib/data/DE.yml stand dadurch eine Zeile mit doppeltem Eintrag:
  Schoenberg;Rausdorf;Koethel;Koethel;Kasseburg;Hamfelde
Die Ortsliste landet in symdok im Adressfeld, dort war das sichtbar.

Beide Seiten werden jetzt zerlegt, bevor uniq greift. Die betroffene Zeile
in DE.yml ist mitkorrigiert - beim naechsten Converter-Lauf entstuende sie
ohnehin richtig, bis dahin waere sie falsch ausgeliefert worden.

Dazu die Abdeckungsmessung, die dem Gem noch fehlte: simplecov als
Dev-Abhaengigkeit, COVERAGE=1 schaltet sie ein, Schwelle 95.
CityMap war bisher vollstaendig ungetestet - das neue Spec deckt sie ab,
einschliesslich des Falls, der den Fehler ausloest.

Abdeckung 75,60 % -> 100 % (41/41), 20 Beispiele, 0 Fehler.
Der in symdok genutzte Pfad (ZipCodes.identify) war schon vorher zu 100 %
abgedeckt; die Luecke lag ausschliesslich im Datenpflege-Werkzeug.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Skulli Skulli added the Fehler Falsche Zuordnung oder Fehler im Gem label Sep 19, 2026
SimpleCov startet in diesem Gem nur, wenn COVERAGE gesetzt ist. In der CI
war es das nicht - die Untergrenze aus spec_helper.rb lief damit ins Leere,
und ein Absturz der Abdeckung waere gruen durchgegangen.

Der Test-Schritt setzt die Variable jetzt in ci.yml und, wo vorhanden, in
release.yml.

Nebenbei aufgeraeumt, was actionlint an denselben Dateien anmerkte:
actions/checkout@v3 ist fuer die heutigen Runner zu alt (v7 wie in den
uebrigen Gems), und einer Datei fehlte das abschliessende Zeilenende.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Skulli
Skulli marked this pull request as ready for review September 19, 2026 09:46
@Skulli
Skulli merged commit 84ca7ad into main Sep 19, 2026
1 check passed
@Skulli
Skulli deleted the claude/citymap-dedup-und-tests branch September 19, 2026 09:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Fehler Falsche Zuordnung oder Fehler im Gem

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant