diff --git a/backend/services/mail/mail-service/src/main/kotlin/at/mocode/mail/service/api/MailController.kt b/backend/services/mail/mail-service/src/main/kotlin/at/mocode/mail/service/api/MailController.kt index dee774f9..ee64f84f 100644 --- a/backend/services/mail/mail-service/src/main/kotlin/at/mocode/mail/service/api/MailController.kt +++ b/backend/services/mail/mail-service/src/main/kotlin/at/mocode/mail/service/api/MailController.kt @@ -49,7 +49,7 @@ class MailController( private lateinit var baseMailAddress: String @PostMapping("/nennung") - fun receiveNennung(@Valid @RequestBody request: NennungRequest) { + fun receiveNennung(@Valid @RequestBody request: NennungRequest): Map { logger.info("Nennung via API erhalten: ${request.vorname} ${request.nachname} für Turnier ${request.turnierNr}") val entity = NennungEntity( @@ -130,6 +130,12 @@ class MailController( } catch (e: Exception) { logger.error("KRITISCH: Fehler beim Senden der Bestätigungs-Mail an ${request.email}: ${e.message}", e) } + + return mapOf( + "success" to true, + "message" to "Nennung erhalten und verarbeitet", + "id" to entity.id.toString() + ) } @GetMapping("/nennungen") diff --git a/docs/03_Journal/2026-04-23_Plan-B-Formulare.md b/docs/03_Journal/2026-04-23_Plan-B-Formulare.md index f66558c8..82e00135 100644 --- a/docs/03_Journal/2026-04-23_Plan-B-Formulare.md +++ b/docs/03_Journal/2026-04-23_Plan-B-Formulare.md @@ -122,3 +122,9 @@ Die "Hallo Du!" Test-UI wurde durch produktive, fachlich korrekte Formulare erse - 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.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.kt` gibt nun explizit ein JSON-Objekt `{"success": true, ...}` zurück. +- **Frontend-Härtung**: `NennungRemoteRepository.kt` wurde robuster gegenüber leeren Antwort-Bodies gestaltet. +- **Status**: Versionsmarker v33. diff --git a/frontend/features/nennung-feature/src/commonMain/kotlin/at/mocode/frontend/features/nennung/domain/NennungRemoteRepository.kt b/frontend/features/nennung-feature/src/commonMain/kotlin/at/mocode/frontend/features/nennung/domain/NennungRemoteRepository.kt index e8b422e0..f76280b6 100644 --- a/frontend/features/nennung-feature/src/commonMain/kotlin/at/mocode/frontend/features/nennung/domain/NennungRemoteRepository.kt +++ b/frontend/features/nennung-feature/src/commonMain/kotlin/at/mocode/frontend/features/nennung/domain/NennungRemoteRepository.kt @@ -101,8 +101,8 @@ class NennungRemoteRepository(private val client: HttpClient) { } println("Antwort erhalten: ${response.status.value}") - val responseText = try { response.body() } catch (e: Exception) { "Kein Body" } - println("Antwort Body: $responseText") + val responseText = try { response.body() } catch (e: Exception) { "" } + println("Antwort Body: '$responseText'") if (response.status.isSuccess()) { Result.success(Unit) diff --git a/frontend/shells/meldestelle-web/src/wasmJsMain/kotlin/at/mocode/frontend/shell/web/WebMainScreen.kt b/frontend/shells/meldestelle-web/src/wasmJsMain/kotlin/at/mocode/frontend/shell/web/WebMainScreen.kt index a5810027..485bc0f8 100644 --- a/frontend/shells/meldestelle-web/src/wasmJsMain/kotlin/at/mocode/frontend/shell/web/WebMainScreen.kt +++ b/frontend/shells/meldestelle-web/src/wasmJsMain/kotlin/at/mocode/frontend/shell/web/WebMainScreen.kt @@ -126,7 +126,7 @@ fun MainAppContent() { // Dezentraler Versions-Marker in der unteren rechten Ecke Box(modifier = Modifier.fillMaxSize().padding(8.dp), contentAlignment = Alignment.BottomEnd) { Text( - text = "v2026-04-23.32 - PROXY DEBUG", + text = "v2026-04-23.33 - JSON RESPONSE FIX", style = MaterialTheme.typography.labelSmall, color = Color.LightGray.copy(alpha = 0.5f) )