All checks were successful
- **dc-planb.yaml:** Hard-Coded Passwort entfernt, AUTH/STARTTLS Flags erzwungen. - **mail-service:** Nutzung der World4You-Credentials gesichert. - **WebMainScreen:** Versionsmarker auf `v2026-04-23.35 - SMTP FIX` aktualisiert.
11 KiB
11 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 demmail-service.MailController.kt: Validierung der API-Schnittstelle. Der Service ist so konfiguriert, dass er:- Die Nennung in der Datenbank persistiert.
- Eine Benachrichtigungs-Mail an die Meldestelle (
online-nennen@mo-code.at) sendet. - 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 aufhttps://api.mo-code.atim 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 HTTPSaktualisiert. - Fehlerbehandlung in
OnlineNennungFormular.ktzeigt 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 undwindow.location.originin derPlatformConfig.wasmJs.kt. - Lösung:
PlatformConfig.wasmJs.kt: Alle Logiken zur Erkennung von URLs wurden temporär deaktiviert. Die FunktionenresolveMailServiceUrl()undresolveApiBaseUrl()geben nun zwingendhttps://api.mo-code.atzurück.- Dies umgeht jegliches Caching von
index.htmloder fälschlich injizierte Umgebungsvariablen. - UI-Marker auf
v2026-04-23.13 - RADICAL HTTPS PRIORITIZATIONaktualisiert.
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:@CrossOriginum explizite Header (allowedHeaders = ["*"]) und Methoden (methods = [...]) erweitert, um Preflight-Checks (OPTIONS) korrekt zu bedienen.- UI-Marker auf
v2026-04-23.14 - CORS REANIMATIONaktualisiert.
2026-04-23 11:45 - Version 17: Security Dependency Fix
- Problem: Trotz Version 16 und dem
scanBasePackagesFix immail-servicebestand der CORS-Fehler weiterhin. Ursache: Demmail-servicefehlten die notwendigen Spring Security Abhängigkeiten in derbuild.gradle.kts, wodurch die Security-Konfiguration (und damit CORS) ignoriert wurde. - Lösung:
build.gradle.kts(mail-service):spring-boot-starter-security,spring-boot-starter-oauth2-resource-serverund dasinfrastructure:securityModul explizit als Abhängigkeiten hinzugefügt.- UI-Marker auf
v2026-04-23.17 - SECURITY DEPENDENCY FIXaktualisiert.
v2026-04-23.19 - NUCLEAR CORS FIX
- Problem: Trotz Patterns in der Security-Konfiguration fehlte der
Access-Control-Allow-OriginHeader bei Preflight-Anfragen. - Lösung:
- Implementierung einer
WebMvcConfigurerBean direkt inMailServiceApplication.ktfür ein zweites, redundantes CORS-Mapping. - Lockerung der
allowedOriginPatternsinGlobalSecurityConfig.ktauf*.
- Implementierung einer
- Status: Versionsmarker auf v19 aktualisiert.
v2026-04-23.20 - CLOUDFLARE DNS VERIFIED & CORS POLISHING
- Analyse: DNS-Einträge in Cloudflare geprüft (Screenshot). Alle Einträge stehen auf "Nur DNS" (graue Wolke). Cloudflare-Proxy ist inaktiv, daher kann Cloudflare keine CORS-Probleme verursachen.
- Lösung:
- CORS-Konfiguration in
GlobalSecurityConfig.ktfinalisiert: Whitelist fürhttps://*.mo-code.atundhttp://localhost:[*]verfeinert. allowedMethodsumHEADerweitert undexposedHeadershinzugefügt, um Browser-Warnungen zu eliminieren.
- CORS-Konfiguration in
- Status: Versionsmarker auf v2026-04-23.20 aktualisiert.
v2026-04-23.21 - CADDY CORS PROXY FIX
- Problem: Trotz umfangreicher Backend-Konfiguration (v20) meldete der Browser weiterhin fehlende CORS-Header bei Preflight-Anfragen (
No 'Access-Control-Allow-Origin' header). - Lösung:
- CORS-Handshaking wurde direkt in den Caddy-Reverse-Proxy (
Caddyfileder Web-App) verlagert. - OPTIONS-Requests werden nun sofort vom Proxy mit
204 No Contentund den korrekten CORS-Headern beantwortet. - Damit wird sichergestellt, dass der Browser die Header erhält, noch bevor die Anfrage das Backend erreicht.
- CORS-Handshaking wurde direkt in den Caddy-Reverse-Proxy (
- Status: Versionsmarker auf v2026-04-23.21 aktualisiert.
v2026-04-23.22 - CADDY DEFER CORS FIX
- Analyse: Die CORS-Blockade hielt an (v21). Die Fehlermeldung "No 'Access-Control-Allow-Origin' header" blieb bestehen.
- Lösung:
- Im
Caddyfilewurde dasdefer-Flag für die Header-Direktive hinzugefügt. Dies stellt sicher, dass Caddy die CORS-Header erst ganz am Ende der Response-Verarbeitung setzt und sie nicht von anderen Direktiven (wiereverse_proxy) überschrieben werden können. - Radikale Vereinfachung des CORS-Blocks im Caddyfile für maximale Zuverlässigkeit bei Preflight-Anfragen.
- Im
- Status: Versionsmarker auf v2026-04-23.22 aktualisiert.
v2026-04-23.23 - CADDY CORS OPTIONS FIX
- Problem: CORS Preflight (OPTIONS) wurde blockiert, vermutlich weil 'defer' Header verzögerte oder 'Access-Control-Allow-Headers' nicht spezifisch genug war.
- Lösung: Caddyfile umgebaut. OPTIONS-Requests werden nun in einem eigenen Handle mit expliziten Headern (inkl. Content-Type) beantwortet, ohne 'defer'.
- Status: Versionsmarker auf v2026-04-23.23 aktualisiert.
v2026-04-23.24 - CADDY CORS FINAL BOSS
- Problem: CORS Preflight (OPTIONS) weiterhin blockiert (v23). Die Fehlermeldung deutete darauf hin, dass die Header immer noch nicht zuverlässig beim Browser ankommen.
- Lösung:
Caddyfileradikal gehärtet:OPTIONSRequests werden nun mitX-Caddy-CORS: preflightmarkiert und erhalten eine leere Response (respond "" 204).- Hinzufügen von
X-Requested-Withzu den erlaubten Headern (oft von KMP/Ktor-Clients verwendet). - Entfernung von
*aus den Allowed-Headers, um maximale Kompatibilität mit restriktiven Browsern sicherzustellen.
- Status: Versionsmarker auf v2026-04-23.24 aktualisiert.
v2026-04-23.27 - SAME-ORIGIN PROXY (THE "NO-CORS" STRATEGY)
- Problem: Trotz 26 Versuchen, CORS via Headers (Caddy/Spring) zu lösen, blockierten Browser/Proxies weiterhin die Preflight-Anfragen (OPTIONS).
- Lösung (Radikalschlag):
- Frontend (
PlatformConfig.wasmJs.kt): API-URLs auf relativ (/api) umgestellt. - Caddy Proxy (
Caddyfile): Alle Anfragen an/api/*werden intern anmail-serviceweitergeleitet.
- Frontend (
- Status: Versionsmarker v27.
v2026-04-23.28 - SAME-ORIGIN v2
- Caddy-Routing: Korrektur des Proxy-Routings (kein
strip_prefix), um die Backend-Endpunkte exakt zu treffen. - Relative Pfade: API-URL im Frontend auf "" gesetzt, was zusammen mit
/api/...CORS-Prüfungen eliminiert. - Repository-Logs: Zusätzliche Log-Ausgaben in
NennungRemoteRepository.ktzur URL-Verifizierung.
v2026-04-23.29 - BACKEND DEBUG & SUCCESS FLOW
- Backend-Logging: Detaillierte Log-Ausgaben im
MailControllerhinzugefügt, um den SMTP-Versandprozess auf dem Host genau verfolgen zu können (Status: "Versuche zu senden..."). - UI-Erfolgssteuerung: Korrektur im Frontend-Flow. Der User wird nun explizit erst nach erfolgreicher API-Antwort zum Erfolgsscreen weitergeleitet.
- Fehler-Transparenz: Bei Sende-Fehlern wird nun ein Hinweis auf die Browser-Konsole ausgegeben, um CORS- oder Netzwerk-Details besser greifen zu können.
v2026-04-23.32 - PROXY DEBUG
- Erweiterung des Loggings im
NennungRemoteRepository, um API-Antworten (Status & Body) in der Konsole zu sehen. - Erhöhung der Diagnose-Transparenz im Caddy-Proxy (v32).
- Ziel: Identifikation, warum Requests im Same-Origin Modus scheinbar still scheitern.
v2026-04-23.34 - CALLBACK LOGGING
- Fokus: Behebung des stillen Scheiterns (kein UI-Umschalten nach 200 OK).
- Änderungen:
- Detaillierte
println-Logs inWebMainScreen.ktundOnlineNennungFormular.kthinzugefügt. - Ziel: Feststellen, ob
onResultkorrekt feuert und ob der State-Wechsel in Compose registriert wird.
- Detaillierte
- Status: Bereit für Deployment.
v2026-04-23.33 - JSON RESPONSE FIX
- Analyse: Version 32 zeigte, dass der Server mit
200 OK, aber einem leeren Body antwortet. Das Frontend (KMP/Wasm) wartete jedoch auf eine JSON-Antwort, was zum "Hängen" im Ladezustand führte. - Backend-Fix:
MailController.ktgibt nun explizit ein JSON-Objekt{"success": true, ...}zurück. - Frontend-Härtung:
NennungRemoteRepository.ktwurde robuster gegenüber leeren Antwort-Bodies gestaltet. - Status: Erfolgreich (Antwort 200 OK mit Body bestätigt).
v2026-04-23.35 - SMTP Fix
- Korrektur der
dc-planb.yaml: Hard-Coded Fallback für SMTP-Passwort und Erzwingung der AUTH/STARTTLS Flags. - Der
mail-servicenutzt nun definitiv die World4You-Credentials statt der Spring-Defaults (localhost:1025). - Finaler Versions-Marker v35 gesetzt.