meldestelle/docs/03_Journal/2026-04-23_Plan-B-Formulare.md
StefanMoCoAt 3244efd5e0
All checks were successful
Build and Publish Docker Images / build-and-push (., backend/services/mail/Dockerfile, mail-service, mail-service) (push) Successful in 6m0s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Successful in 3m55s
### fix: behebe CORS-Probleme und Stabilitätsfehler
- **MailController:** Erweitere `@CrossOrigin`-Headers und Methoden für Preflight-Checks.
- **GlobalSecurityConfig:** Reaktiviere CORS und füge explizite `CorsConfigurationSource` hinzu.
- **Tests:** Fix für `NoSuchBeanDefinitionException` bei Integrationstests.
- **UI:** Aktualisiere Versionsmarker auf `v2026-04-23.15 - CORS STABILITY`.
2026-04-23 10:53:55 +02:00

4.7 KiB

Journal-Eintrag: Plan-B Online-Nenn-Formulare

Datum: 23. April 2026 Agenten: 🎨 [Frontend Expert], 🖌️ [UI/UX Designer], 👷 [Backend Developer], 🧹 [Curator]

🎯 Zielsetzung

Erstellung von zwei hoch-optimierten Web-Formularen für die Turniere in Neumarkt (25. & 26. April 2026) im Rahmen des "Plan-B" (Offline-Meldestelle mit E-Mail-Sync).

🛠️ Durchgeführte Änderungen

🎨 Frontend & UI/UX

  • OnlineNennungFormular.kt: Komplette Neugestaltung des Formulars.
    • Integration der spezifischen Bewerbe für CSN-C Neumarkt (25.04.) und CDN-C Neumarkt (26.04.).
    • Implementierung der Validierungslogik für den "Jetzt nennen" Button (Bernstein-Orange).
    • Hinzufügen von Feldern für Reiter-Name, Kontakt (E-Mail/Tel), Pferdename und Anmerkungen.
    • Information Density: Alle Bewerbe direkt auswählbar.
    • Mobile-First Optimierung: Responsives Layout mittels BoxWithConstraints. Vertikaler Stack für Formularfelder auf Mobile, optimierte Paddings, Schriftgrößen und Touch-Targets.
  • WebMainScreen.kt: Aktualisierung der Landing-Page mit den realen Turnierdaten für Neumarkt.
    • Mobile-First Optimierung: Turnier-Karten passen sich an schmale Bildschirme an (Buttons nebeneinander, Icons für bessere UX).

👷 Backend & Integration

  • NennungRemoteRepository.kt: Verknüpfung des neuen Payloads mit dem mail-service.
  • MailController.kt: Validierung der API-Schnittstelle. Der Service ist so konfiguriert, dass er:
    1. Die Nennung in der Datenbank persistiert.
    2. Eine Benachrichtigungs-Mail an die Meldestelle (online-nennen@mo-code.at) sendet.
    3. Eine automatische Bestätigung an den Reiter schickt.

🏁 Ergebnis

Die "Hallo Du!" Test-UI wurde durch produktive, fachlich korrekte Formulare ersetzt. Sobald ein Reiter auf "Jetzt nennen" klickt, wird der E-Mail-Workflow ausgelöst.

Status: Bereit für den Live-Einsatz am Wochenende. 🚀

2026-04-23 09:35 - Version 12: Hard-coded HTTPS & Injektions-Fix

  • Problem: 'Mixed Content' Fehler blockierte API-Aufrufe, da die Wasm-App trotz HTTPS-Origin versuchte, 'http://10.0.0.50' (Lokale IP) via HTTP zu kontaktieren.
  • Lösung:
    • PlatformConfig.wasmJs.kt: Implementierung eines sicheren HTTPS-Fallbacks auf https://api.mo-code.at im Code, falls die Docker-Injektion (z.B. durch Browser-Cache) fehlschlägt.
    • dc-planb.yaml: Statische Konfiguration der HTTPS-URLs ohne Umgebungsvariablen-Platzhalter, um Fehlkonfigurationen am Host auszuschließen.
    • UI-Marker auf v2026-04-23.12 - HARD-CODED HTTPS aktualisiert.
    • Fehlerbehandlung in OnlineNennungFormular.kt zeigt nun explizit Netzwerkfehler an, falls diese auftreten.

2026-04-23 10:15 - Version 13: Radikale HTTPS-Priorisierung

  • Problem: Trotz harten Fallbacks im Code versuchte der Browser weiterhin http://10.0.0.50 (Mixed Content) aufzurufen. Ursache war die Priorisierung von dynamischen Variablen und window.location.origin in der PlatformConfig.wasmJs.kt.
  • Lösung:
    • PlatformConfig.wasmJs.kt: Alle Logiken zur Erkennung von URLs wurden temporär deaktiviert. Die Funktionen resolveMailServiceUrl() und resolveApiBaseUrl() geben nun zwingend https://api.mo-code.at zurück.
    • Dies umgeht jegliches Caching von index.html oder fälschlich injizierte Umgebungsvariablen.
    • UI-Marker auf v2026-04-23.13 - RADICAL HTTPS PRIORITIZATION aktualisiert.

2026-04-23 10:45 - Version 14: CORS Reanimation

  • Problem: Trotz HTTPS-Fix blockierte die CORS-Policy im Backend die Anfragen von https://app.mo-code.at.
  • Lösung:
    • GlobalSecurityConfig.kt: CORS explizit wieder aktiviert (.cors { }), da Microservices im Plan-B direkt (ohne Gateway) angesprochen werden könnten.
    • MailController.kt: @CrossOrigin um explizite Header (allowedHeaders = ["*"]) und Methoden (methods = [...]) erweitert, um Preflight-Checks (OPTIONS) korrekt zu bedienen.
    • UI-Marker auf v2026-04-23.14 - CORS REANIMATION aktualisiert.

2026-04-23 11:00 - Version 15: CORS Stability & Test Fix

  • Problem: Aktivierung von .cors { } in GlobalSecurityConfig.kt verursachte NoSuchBeanDefinitionException in Spring-Integration-Tests, da keine CorsConfigurationSource Bean definiert war.
  • Lösung:
    • GlobalSecurityConfig.kt: Explizite CorsConfigurationSource Bean implementiert, die sowohl lokale Entwicklungsumgebungen (localhost) als auch produktive URLs (*.mo-code.at) whitelisted.
    • Integration von it.configurationSource(corsConfigurationSource()) in die filterChain zur Behebung der Testfehler.
    • UI-Marker auf v2026-04-23.15 - CORS STABILITY aktualisiert.
    • Verifiziert durch erfolgreichen Durchlauf des EntriesIsolationIntegrationTest.