- Ersetze Catch-All-Ansatz durch Betreff-basiertes Routing. - Reduziere Infrastruktur-Aufwände durch generische Zieladresse.
3.3 KiB
ADR 0028: Plan-B - Fallback auf E-Mail-basierte Online-Nennung (MVP)
Status: Angenommen Datum: 2026-04-22 Entscheider: Lead Architect, Product Owner
Kontext
Ursprünglich war geplant, dass die Desktop-App vollständig integriert mit dem ZNS die Konfiguration von Turnieren ermöglicht. Daraus sollten automatisch Web-Formulare für die Online-Nennung generiert werden. Die Entwicklung dieser komplexen End-to-End-Strecke inklusive ZNS-Synchronisation und Formular-Generierung ist zeitlich in Verzug geraten. Das Kernziel – die rechtzeitige Bereitstellung einer funktionierenden Online-Nennung für Teilnehmer – ist gefährdet.
Gleichzeitig haben Tests ergeben, dass der aktuelle Mailserver (World4You) das sogenannte "Plus-Addressing" (z.B. online-nennen+26128@...) nativ nicht unterstützt (Fehler: 550 Unknown User), weshalb ein robusterer Mechanismus für das Mail-Routing pro Turnier gefunden werden muss.
Entscheidung
Wir setzen das Prinzip der Graceful Degradation an und wechseln für das Online-Nenn-System auf einen pragmatischen MVP (Plan-B):
- Entkopplung: Die Web-App wird vorerst nicht dynamisch aus der Desktop-App/ZNS-Datenstruktur generiert.
- Statische Frontend-Formulare: Wir erstellen einfache, statische (oder semi-statische) Nenn-Formulare im Web (WasmJs) mit grundlegender clientseitiger Validierung (Pflichtfelder).
- E-Mail als Integrationsschicht: Das Backend dient lediglich als "Form-to-Email-Gateway". Wenn ein Teilnehmer das Formular absendet (
POSTRequest mit JSON-Payload), generiert das Backend eine strukturierte E-Mail. - Betreff-basiertes Routing statt Catch-All/Plus-Addressing: Um jegliche Infrastruktur-Änderungen beim Hoster zu vermeiden, senden wir alle Nennungen an die generische Adresse
online-nennen@mo-code.at. Die Trennung pro Turnier erfolgt zwingend über den Betreff der E-Mail (z.B.[NENNUNG] Turnier-ID: 26128). Im Posteingang können dann einfache Filter/Regeln eingerichtet werden.
Konsequenzen
Positiv
- Time-to-Market: Die Kernanforderung (Nennungen empfangen) kann extrem schnell umgesetzt und deployt werden.
- Stabilität: Das System ist hochgradig ausfallsicher. Es gibt keine komplexe DB-Synchronisation, die im Live-Betrieb abbrechen könnte.
- Kein Blocker für Desktop-App: Das Team kann ungestört weiter an der komplexen Desktop-ZNS-Integration arbeiten, während das Nenn-Problem für die User gelöst ist.
- Keine Infrastruktur-Aufwände: Weder Catch-All noch Alias-Verwaltung beim Hoster nötig. Ein einziges Standard-Postfach reicht.
Negativ
- Manueller Aufwand im Backoffice: Nennungen kommen vorerst als E-Mails (Text/HTML) an und müssen (bis zu einer späteren Automatisierung) manuell oder per Skript aus dem Postfach ins eigentliche System übertragen werden.
- Kein automatisiertes Setup: Formulare müssen bei Bedarf per Hand im Frontend-Code oder einer einfachen Konfigurationsdatei angepasst werden.
Nächste Schritte
enableWasm=trueingradle.propertiesaktivieren (erledigt).- Web-App (Frontend) mit einem minimalen "Hallo Du!"-Formular implementieren, das die Turnier-ID als Parameter hält.
- Backend-Endpoint (
POSTto Mail) implementieren und SMTP anbinden. Die Turnier-ID muss zwingend in den Mail-Betreff geschrieben werden. - End-to-End-Test auf dem Staging/Prod-Server (Gitea Pipeline).