fix(tests): resolve EntriesIsolationIntegrationTest failures with test-specific DB config

- Added `TestExposedConfiguration` to connect Exposed with Spring `DataSource` in the `test` profile.
- Downgraded `springdoc` version from `3.0.0` to `2.8.9` for Spring Boot 3.x compatibility.
- Applied `@ActiveProfiles("test")` to `EntriesIsolationIntegrationTest`.
- Updated roadmap documentation to reflect bugfix and test success.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-03 10:52:37 +02:00
parent f4844eb428
commit 1f9f528554
14 changed files with 667 additions and 36 deletions
@@ -0,0 +1,63 @@
# 🧹 Curator Log — Frontend B-2/B-3: Repositories & Live-Validierung
> **Datum:** 3. April 2026
> **Agent:** 🎨 Frontend Expert
> **Sprint:** B — Bewerbe-Management & Startlisten
> **Aufgaben:** B-2 BewerbRepository + AbteilungRepository; Koin-Module; B-3 Live-Validierung
---
## ✅ Erledigte Aufgaben
### B-2 — Repositories & Koin-Module
| Datei | Aktion | Beschreibung |
|-----------------------------------------------------------------|----------|-------------------------------------------------------------------------------------------------------------------------|
| `core/network/src/commonMain/.../DomainErrors.kt` | NEU | Zentrale HTTP-Fehlertypen (AuthExpired, NotFound, Conflict, ServerError, HttpError) aus veranstalter-feature extrahiert |
| `turnier-feature/src/commonMain/.../dto/TurnierDto.kt` | NEU | DTOs für Turnier, Bewerb, Abteilung (kotlinx.serialization) |
| `turnier-feature/src/commonMain/.../mapper/TurnierMapper.kt` | NEU | DTO ↔ Domain-Mapper für alle 3 Entitäten |
| `turnier-feature/src/jvmMain/.../DefaultTurnierRepository.kt` | NEU | Ktor-Implementierung von TurnierRepository |
| `turnier-feature/src/jvmMain/.../DefaultBewerbRepository.kt` | NEU | Ktor-Implementierung von BewerbRepository (inkl. `ApiRoutes.Turniere.bewerbe()`) |
| `turnier-feature/src/jvmMain/.../DefaultAbteilungRepository.kt` | NEU | Ktor-Implementierung von AbteilungRepository (inkl. `ApiRoutes.Bewerbe.abteilungen()`) |
| `turnier-feature/src/jvmMain/.../di/TurnierFeatureModule.kt` | NEU | Koin-Modul: TurnierRepository, BewerbRepository, AbteilungRepository + alle ViewModels |
| `turnier-feature/build.gradle.kts` | GEÄNDERT | `core.network` + `ktor.client.core` als Dependency ergänzt |
| `veranstalter-feature/.../DefaultVeranstalterRepository.kt` | GEÄNDERT | Lokale Fehlertypen entfernt → Import aus `core.network.*` |
### B-3 — Live-Validierung in Edit-Dialogen
| Datei | Aktion | Beschreibung |
|------------------------------------------------------------|--------|-----------------------------------------------------------------------------------------------------------------|
| `reiter-feature/src/jvmMain/.../ReiterProfilEditDialog.kt` | NEU | Edit-Dialog mit MsValidationWrapper für OEPS-Nummer, FEI-ID, Lizenzklasse; Speichern-Button via `state.isValid` |
| `pferde-feature/src/jvmMain/.../PferdProfilEditDialog.kt` | NEU | Edit-Dialog mit MsValidationWrapper für OEPS-Nummer, FEI-ID; Speichern-Button via `state.isValid` |
---
## 📐 Architektur-Entscheidungen
- **DomainErrors zentral in `core.network`**: Verhindert Duplikation über Feature-Module hinweg.
- **`toMessages()`-Extension in Feature-Modulen**: `design-system` hat keine `core.domain`-Dependency — Extension bleibt
bewusst in den Feature-Modulen (reiter, pferde).
- **Koin `named("apiClient")`**: Konsistent mit veranstalterModule — alle Repositories nutzen denselben benannten
HttpClient.
- **IDE Semantic-Errors**: Beim Erstellen neuer Dateien zeigt der Linter Unresolved-Reference-Fehler für cross-module
Imports — diese sind Build-Artefakte und verschwinden beim tatsächlichen Gradle-Build (identisches Muster bei
DefaultVeranstalterRepository bestätigt).
---
## 🔴 Offene Punkte (nächste Session)
| Priorität | Aufgabe | Abhängigkeit |
|-----------|-----------------------------------------------------|-------------------------------|
| 🔴 P1 | B-2: StoreV2 Feature-für-Feature ablösen | — |
| 🔴 P1 | B-2: Akzeptanz-Tests mit Ktor Mock Engine | — |
| 🟠 P2 | B-3: Lizenzklasse × Bewerb-Warnung im Dialog | Bewerb-Kontext im Edit-Dialog |
| 🟠 P2 | B-3: Altersklasse Pferd × Bewerb-Warnung | Bewerb-Kontext im Edit-Dialog |
| 🟡 P3 | B-2: Dokumentation `docs/06_Frontend/Networking.md` | Nach StoreV2-Ablösung |
---
## 📁 Geänderte Dokumentation
- `docs/04_Agents/Roadmaps/Frontend_Roadmap.md` — B-2/B-3 Fortschritt aktualisiert
- `docs/04_Agents/Roadmaps/SPRINT_EXECUTION_ORDER.md` — Frontend-Zeile + Aufgabenliste aktualisiert