Notrufnummern-Datenbasis, Ländererkennung, State-Management und Lokalisierung (AP1-AP7)

Implementiert den kompletten Kern-Flow der Emergency App gemäß docs/plan.md:
- Notrufnummern-Datenbasis für 199 Länder + Modelle/Repository (AP1)
- DialerService für tel:-Notrufe ohne Auto-Dial (AP2)
- Statisches UI mit Panik-Button-Fallback (AP3)
- Priorisierte Ländererkennung: SIM/Netz -> GPS/Geocoding -> Cache (AP4)
- EmergencyProvider verdrahtet Repository/LocationService mit der UI (AP5)
- Manuelle Länderauswahl als Fallback samt eigener Priorität (AP6)
- UI-Lokalisierung (de/en/fr/es), an erkanntes Land gekoppelt (AP7)

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
root
2026-07-24 11:29:38 +02:00
co-authored by Claude Sonnet 5
parent 40e95cc495
commit e3aa088bc2
54 changed files with 7550 additions and 145 deletions
+36
View File
@@ -0,0 +1,36 @@
/// Zustände der Ländererkennungs-/Notrufnummern-Ermittlung
/// (`docs/plan.md`, Abschnitt 5 + 8, AP5).
///
/// Siehe [EmergencyProvider] für die Zustandsübergänge.
enum EmergencyStatus {
/// [EmergencyProvider.init] wurde gerade gestartet, die Notrufnummern-
/// Datenbasis wird geladen.
initializing,
/// Die Datenbasis ist geladen, die Ländererkennungskette
/// (SIM → GPS → Cache) läuft gerade.
locating,
/// Ermittlung abgeschlossen. `country` ist gesetzt, wenn das ermittelte
/// Land in der Datenbasis vorhanden ist; ist es `null`, wurde zwar ein
/// Ländercode ermittelt, aber kein Eintrag dafür gefunden (Plan
/// Abschnitt 7, "Land nicht in Datenbasis") die UI zeigt dann nur den
/// globalen Panik-Button.
ready,
/// Aktuell unbenutzt (siehe Doc-Kommentar in [EmergencyProvider]): Die
/// Standortberechtigung wurde verweigert. Dieser Fall wird zur Laufzeit
/// bewusst nicht von [countryUnknown] unterschieden, ist als Status aber
/// für eine spätere, gezieltere UI-Behandlung (z. B. Banner mit
/// Berechtigungs-Hinweis) bereits vorbereitet.
permissionDenied,
/// Kein Ländercode ermittelbar (alle Quellen der Ermittlungskette lieferten
/// `null`, Plan Abschnitt 7, "Land nicht ermittelbar").
countryUnknown,
/// Laden der Notrufnummern-Datenbasis ist fehlgeschlagen (z. B. kaputtes
/// JSON-Asset). Sollte im Normalbetrieb nicht auftreten, siehe Doc-Kommentar
/// in `EmergencyNumberRepository.load()`.
error,
}