Skip to content

Commit d17319c

Browse files
rorarclaude
andcommitted
docs(roadmap): add address parsing — libpostal module (1.10) + AddressInput component (2.6)
1.10 Geo/Map Connector: - New Modul: libpostal (Docker Sidecar, ML-trained, 99.45% accuracy) - parseAddress() added to GeoConnector interface - localized-address-format as library for field metadata per country 2.6 Input Fields: - AddressInput Shadcn component with country-driven sub-fields - Paste handler via libpostal for freeform address splitting - Graceful degradation without Docker Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 49148e6 commit d17319c

1 file changed

Lines changed: 14 additions & 2 deletions

File tree

docs/ROADMAP.md

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -388,13 +388,19 @@ Entfernungsberechnung und Kartenintegration als Connector mit austauschbaren Mod
388388
- **Connector Interface (`GeoConnector`):**
389389
- `geocode(address)``{ lat, lon }` — Adresse in Koordinaten
390390
- `reverseGeocode(lat, lon)` → Adresse
391+
- `parseAddress(text)``{ street, houseNumber, postalCode, city, state?, country }` — Freitext-Adresse in strukturierte Komponenten
391392
- `distance(from, to, mode)``{ km, duration, mode }` — Entfernung + Fahrzeit
392393
- `route(from, to, mode)` → Routengeometrie für Kartenanzeige
393394
- **Verkehrsmittel (`mode`):** `car` | `transit` | `bike` | `walk`
394395

395-
**Phase 1 — Geocoding + Entfernungsberechnung (Luftlinie):**
396-
- **Modul: Nominatim/OSM** (kostenlos, self-hostable, DSGVO-konform) — empfohlen als Default
396+
**Phase 1 — Geocoding + Entfernungsberechnung (Luftlinie) + Address Parsing:**
397+
- **Modul: Nominatim/OSM** (kostenlos, self-hostable, DSGVO-konform) — empfohlen als Default für Geocoding
397398
- **Modul: Google Geocoding** (API-Key, genauer bei Adressen) — optional
399+
- **Modul: libpostal** (Docker Sidecar, ML-trainiert auf 1B+ OSM-Adressen, 99.45% Accuracy) — Address-String → strukturierte Komponenten
400+
- Docker: `pelias/libpostal-service` auf Port 4400, ~2GB Disk
401+
- Fully offline, kein API-Key, DSGVO-konform
402+
- Parst internationale Adressen (DE: "Musterstr. 42, 12345 Berlin", FR: "42 Rue de l'Exemple, 75001 Paris", etc.)
403+
- **Library (kein Modul): `localized-address-format`** (5KB, zero deps) — Feld-Metadaten pro Land (welche Felder, welche Reihenfolge, welche Pflicht). Für dynamische Formular-Generierung (→ 2.6 AddressInput).
398404
- Vorhandene Daten nutzen: Arbeitsagentur liefert `koordinaten` (lat/lon), EURES liefert `countryCode` + Stadt
399405
- Entfernungsfilter (Luftlinie) als Quick Win
400406

@@ -657,6 +663,12 @@ Kontextsensitiver Einrichtungsassistent für neue Benutzer, der sich an deren Zi
657663
- Passende Icons für alle Input-Felder
658664
- Date Picker: Datumseingabe als Text mit Validierung nach Lokalisation
659665
- Text Input: Enter-Taste fügt Objekte hinzu (Chip-Pattern)
666+
- **AddressInput-Komponente (Shadcn):**
667+
- Ein Eingabefeld das sich per Land-Auswahl in strukturierte Unterfelder aufteilt (Straße, Hausnummer, PLZ, Stadt, C/O, etc.)
668+
- **Feld-Layout pro Land:** Dynamisch generiert via `localized-address-format` Library (→ 1.10) — DE: Straße+Nr | PLZ+Stadt; FR: Nr+Rue | Code+Ville; US: Street | City | State+ZIP
669+
- **"Adresse einfügen" (Paste):** Freitext-Adresse wird via libpostal Modul (→ 1.10 Geo/Map Connector) geparst und in Unterfelder verteilt. User bestätigt/editiert.
670+
- **Graceful Degradation:** Wenn libpostal nicht verfügbar (Docker nicht konfiguriert), bleibt das manuelle Ausfüllen der Unterfelder. Kein Parsing-Fallback nötig — die Felder sind ja da.
671+
- **Output-Formatierung:** Strukturierte Daten → `@fragaria/address-formatter` für Anzeige (→ Application Locale Profile, Sektion 4)
660672

661673
### 2.7 Job-Tinder + Inbox UI
662674
- **Inbox als eigenständige UI-Surface:** Dedizierte Seite für promoted Jobs (nach Vacancy Pipeline → 0.5). Nicht nur Job-Tinder-Modus, sondern auch Listen-/Tabellen-Ansicht.

0 commit comments

Comments
 (0)