Adresse Weg 1: PLZ als eigenes Custom Field, custom_address bereinigen #4

Closed
opened 2026-07-25 17:28:54 +00:00 by forgejo-admin · 1 comment

Kontext

Aktuell landet die komplette Google-Adresse unstrukturiert in einem einzigen Feld (custom_address), keine separate PLZ. Nutzer möchte Straße/Hausnummer/PLZ/Ort sauberer getrennt sehen.

Recherche

parse_address() existiert bereits in leadscraper/lead_scraper/website_scan.py (beim Portieren aus dem alten Mautic-Projekt mitgenommen), wird aber aktuell nirgends aufgerufen. Zerlegt eine Adresszeile per Regex (\b(\d{4,5})\s+(.+)$) in address1/zipcode/city/country.

Umsetzung

  • Neues Custom Field custom_zipcode (Data) auf CRM Lead, Fixture-Eintrag in leadscraper/fixtures/custom_field.json ergänzen.
  • build_lead_fields() in crm_lead_sync.py: parse_address(row.get("adresse", "")) aufrufen, address1custom_address (statt der rohen Google-Adresszeile), zipcodecustom_zipcode.
  • Google liefert i. d. R. keine getrennte Hausnummer — address1 bleibt "Straße Hausnummer" zusammen (Google-Format), nur PLZ/Ort werden sauber getrennt. Weitere Trennung von Straße/Hausnummer wäre ein noch kleinerer Folgeschritt, aber ohne verlässliche Regel schwer robust zu parsen — zunächst zurückgestellt.

Verifikation

  • Neuer Lead: custom_zipcode korrekt befüllt, custom_address enthält nur noch Straße+Hausnummer (keine PLZ/Ort mehr doppelt)
  • Adressen ohne erkennbare PLZ (z. B. ungewöhnliches Format) brechen nichts, custom_zipcode bleibt leer statt Fehler

Fachlicher Ursprung: #1. Baut auf demselben Datenfluss wie #3 (Territory) auf, unabhängig davon umsetzbar.

## Kontext Aktuell landet die komplette Google-Adresse unstrukturiert in einem einzigen Feld (`custom_address`), keine separate PLZ. Nutzer möchte Straße/Hausnummer/PLZ/Ort sauberer getrennt sehen. ## Recherche `parse_address()` existiert bereits in `leadscraper/lead_scraper/website_scan.py` (beim Portieren aus dem alten Mautic-Projekt mitgenommen), wird aber aktuell **nirgends aufgerufen**. Zerlegt eine Adresszeile per Regex (`\b(\d{4,5})\s+(.+)$`) in `address1`/`zipcode`/`city`/`country`. ## Umsetzung - Neues Custom Field `custom_zipcode` (Data) auf `CRM Lead`, Fixture-Eintrag in `leadscraper/fixtures/custom_field.json` ergänzen. - `build_lead_fields()` in `crm_lead_sync.py`: `parse_address(row.get("adresse", ""))` aufrufen, `address1` → `custom_address` (statt der rohen Google-Adresszeile), `zipcode` → `custom_zipcode`. - Google liefert i. d. R. keine getrennte Hausnummer — `address1` bleibt "Straße Hausnummer" zusammen (Google-Format), nur PLZ/Ort werden sauber getrennt. Weitere Trennung von Straße/Hausnummer wäre ein noch kleinerer Folgeschritt, aber ohne verlässliche Regel schwer robust zu parsen — zunächst zurückgestellt. ## Verifikation - [ ] Neuer Lead: `custom_zipcode` korrekt befüllt, `custom_address` enthält nur noch Straße+Hausnummer (keine PLZ/Ort mehr doppelt) - [ ] Adressen ohne erkennbare PLZ (z. B. ungewöhnliches Format) brechen nichts, `custom_zipcode` bleibt leer statt Fehler Fachlicher Ursprung: #1. Baut auf demselben Datenfluss wie #3 (Territory) auf, unabhängig davon umsetzbar.
Author
Owner

Gelöst in #8 — allerdings mit einer anderen Architektur als hier ursprünglich skizziert: statt eines separaten custom_zipcode-Custom-Fields wurde direkt ein echtes Address-Dokument eingeführt (per Dynamic Link an den CRM Lead), das die PLZ und alle weiteren Adressbestandteile strukturiert hält. Details siehe PR #8 sowie docs/install.md Abschnitt 7b und Projekt.md.

Gelöst in #8 — allerdings mit einer anderen Architektur als hier ursprünglich skizziert: statt eines separaten `custom_zipcode`-Custom-Fields wurde direkt ein echtes `Address`-Dokument eingeführt (per Dynamic Link an den `CRM Lead`), das die PLZ und alle weiteren Adressbestandteile strukturiert hält. Details siehe PR #8 sowie `docs/install.md` Abschnitt 7b und `Projekt.md`.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Frappe-Projekte/LeadScraper-Google#4
No description provided.