Cluster: Cross-Tenant Person-Matching
Massive Lücke in Flutter — Ionic v4.0.5 hat das stark überarbeitet.
Findings
B10-007: Email-Vergleich case-sensitive (KRITISCH BUG)
- Ionic v4.0.5 nutzt
.ilike('email', email.trim()) (case-insensitive + getrimmt)
- Flutter nutzt
.eq('email', player.email!) → 'Max@example.com' und 'max@example.com' werden als unterschiedliche Personen behandelt → Duplikate werden NICHT erkannt
- Effort: 0.5h
- Datei:
lib/data/repositories/player_repository.dart:909-938
B3-010: Cross-Tenant Person-Matching (Typeahead) komplett fehlt (KRITISCH)
- Ionic
onNameInput() ruft db.getPossiblePersonsByName(first, last) auf, zeigt Live-Vorschläge aus linked tenants als RankedMatch[]
dismissNameSuggestions(), applyMatchedPerson()
- Flutter hat nur lokalen Duplikat-Check innerhalb des Tenants
- Effort: 16h
B3-011: Email-Blur Cross-Tenant-Match Lookup fehlt (KRITISCH)
- Ionic
onEmailBlur() prüft via db.getPossiblePersonsByEmail(email), ob diese E-Mail in einer anderen Instanz existiert
- Verhindert Duplikate über Tenants hinweg
- Flutter: komplett fehlend
- Effort: 6h
B3-025 / B3-026: Repository-Methoden + Person-Matcher Utility fehlen
getPossiblePersonsByName + getPossiblePersonsByEmail im Repository
- Levenshtein, normalizeName (Umlaut-Transliteration), RankedMatch, Threshold-Filter Utility
- Effort: 8h + 4h
B10-008/009/010: Handover-Bugs
- Empty-Email Person wird über appId fälschlich als Duplikat erkannt
- appId/hasTeacher/teacher/playsSince/img/self_register werden nicht kopiert
- Role.RESPONSIBLE wird bei Hauptgruppen-Mapping nicht gesetzt
- Effort: 3h
Sprint
Sprint 4 (Cross-Tenant Person-Matching) — Gesamt-Effort ~37.5h.
Cluster: Cross-Tenant Person-Matching
Massive Lücke in Flutter — Ionic v4.0.5 hat das stark überarbeitet.
Findings
B10-007: Email-Vergleich case-sensitive (KRITISCH BUG)
.ilike('email', email.trim())(case-insensitive + getrimmt).eq('email', player.email!)→ 'Max@example.com' und 'max@example.com' werden als unterschiedliche Personen behandelt → Duplikate werden NICHT erkanntlib/data/repositories/player_repository.dart:909-938B3-010: Cross-Tenant Person-Matching (Typeahead) komplett fehlt (KRITISCH)
onNameInput()ruftdb.getPossiblePersonsByName(first, last)auf, zeigt Live-Vorschläge aus linked tenants alsRankedMatch[]dismissNameSuggestions(),applyMatchedPerson()B3-011: Email-Blur Cross-Tenant-Match Lookup fehlt (KRITISCH)
onEmailBlur()prüft viadb.getPossiblePersonsByEmail(email), ob diese E-Mail in einer anderen Instanz existiertB3-025 / B3-026: Repository-Methoden + Person-Matcher Utility fehlen
getPossiblePersonsByName+getPossiblePersonsByEmailim RepositoryB10-008/009/010: Handover-Bugs
Sprint
Sprint 4 (Cross-Tenant Person-Matching) — Gesamt-Effort ~37.5h.