# Roadmap

| Phase | Ziel | Ergebnis | Status |
| --- | --- | --- | --- |
| 1 | Minimal Plugin | Installierbares Plugin mit Config | Abgeschlossen |
| 2 | Servervalidierung | Street/Phone werden zuverlaessig geprueft | Abgeschlossen |
| 3 | Storefront UX | Nutzer sehen Fehler fruehzeitig | Abgeschlossen |
| 4 | Tests | Sicher gegen Regressionen | Abgeschlossen |
| 5 | Rollout | Testshop -> Staging -> Produktion | Abgeschlossen |
| 6 | PLZ-Format-Hinweise | Laenderspezifische `zipcode`-Meldungen fuer US/CA/AU/CZ | Abgeschlossen |

## Arbeitsprotokoll

- 2026-06-05: `Requirements.md` als fachliche und technische Arbeitsgrundlage erstellt. Telefonnummern werden nur validiert, nicht normalisiert.
- 2026-06-05: Phase 1 umgesetzt. Minimal-Plugin auf Shopware 6.7 ausgerichtet, Konfiguration mit Strassen- und Telefonnummernoptionen vorbereitet, Snippets angelegt und Upload-ZIP `dist/SkywalkAddressValidation-0.1.0.zip` erstellt.
- 2026-06-05: Phase 1 manuell im Shopware-6-Backend getestet. Upload, Installation und Konfiguration waren erfolgreich.
- 2026-06-05: Phase 2 umgesetzt. Serverseitige Validierung ueber `framework.validation.address.create` und `framework.validation.address.update` integriert, Street-Laenge und Phone-Validierung implementiert, Telefonnummern werden nicht normalisiert. Composer-Dependency-Installation via `executeComposerCommands()` aktiviert.
- 2026-06-05: Phase 2 manuell getestet. Street-Laengenpruefung greift, Buchstaben in Telefonnummer werden abgelehnt, nationale Nummer `015259802420` wird mit Default-Region `DE` akzeptiert. Fehlermeldungen auf eigene `error.VIOLATION::...` Snippet-Keys korrigiert; `DE -> +49` bleibt bewusst unsichtbar, da keine Normalisierung erfolgt.
- 2026-06-05: Telefonnummernregel verschaerft. Telefonnummern muessen jetzt mit `+`-Laendervorwahl eingegeben werden; nationale Nummern ohne Laendervorwahl werden abgelehnt. Fehlerhinweis nutzt, wenn verfuegbar, die Vorwahl des gewaehlten Adresslandes, sonst Fallback `+49`.
- 2026-06-05: Version `0.2.2` manuell getestet. Validierung und Fehlermeldungen funktionieren wie gewuenscht. Beobachtung: Nach erfolgreichem Speichern einer Adresse tritt in Safari ein Redirect-Loop auf `/account/login?redirectTo=frontend.account.address.page...` auf, obwohl die Adresse gespeichert wird; aktuell als moeglich externes Session-/Redirect-Thema eingeordnet.
- 2026-06-05: Phase 3 umgesetzt. Storefront-Hinweise fuer Strassenlaenge und Telefonnummernformat ergaenzt, `street` bekommt `maxlength`, Telefonnummernfeld bekommt ein Pattern fuer `+`-Laendervorwahl.
- 2026-06-05: Phase 4 umgesetzt. PHPUnit-Basistests fuer `AddressValidationService` und `docs/test-plan.md` erstellt.
- 2026-06-05: Phase 5 umgesetzt. Rollout- und Rollback-Checkliste unter `docs/rollout.md` erstellt.
- 2026-06-05: Phase-3-Storefront-Hinweise waren im Test nicht sichtbar. Twig-Config-Default korrigiert: `null` aus `config()` wird fuer aktivierte Street-/Phone-Validierung wie Default `true` behandelt, explizites `false` bleibt deaktiviert.
- 2026-06-16: PLZ-Format-Hinweise umgesetzt. Shopware 6.7.7.1 nutzt fuer PLZ-Formate `CustomerZipCode` mit Country-Patterns und generischer Meldung; das Plugin ergaenzt update-sicher eine eigene feldbezogene `zipcode`-Constraint fuer konfigurierte Laender. Default-Regeln fuer US, CA, AU und CZ angelegt, JSON-Erweiterung in der Plugin-Konfiguration dokumentiert, Snippets und Unit Tests erweitert. Komfortablere Admin-Regelpflege bleibt optionaler Folgepunkt.

## Offene Folgepunkte

- Komfortablere Admin-Oberflaeche fuer PLZ-Regellisten pruefen, falls die JSON-Konfiguration im Betrieb zu unhandlich ist.
