# 👷 [Backend Developer] — Zwischenstand & Roadmap > **Stand:** 3. April 2026 > **Rolle:** Spring Boot / Ktor, Kotlin, SQL, API-Design, Datenbankschema, Services --- ## ✅ Erledigte Sprints ### Sprint A (Teilweise) — Abgeschlossene Punkte - [x] **A-2** | Datenbankschema: Domänen-Hierarchie umgesetzt - [x] Tabellen `veranstaltungen`, `turniere`, `bewerbe`, `abteilungen` mit FK-Ketten - [x] `teilnehmer_konten` (Veranstaltungsebene), `turnier_kassa` (Turnierebene) - [x] Flyway-Migrationen V1–V3 (inkl. Turnier-Status `DRAFT`/`PUBLISHED`) - [x] `DomainHierarchyMigrationTest` grün --- ## 🔴 Sprint A — Offen (höchste Priorität) - [x] **A-1** | Tenant-Isolation vollständig ausrollen ⚠️ BLOCKER - [x] ADR-0021 übernommen; `TenantWebFilter`, `TenantRegistry` (JDBC) implementiert - [x] Entries Service: `JdbcTenantRegistry`, `TenantMigrationsRunner`, MDC-Logging - [x] Flyway pro Tenant-Schema; Unit-Tests (`JdbcTenantRegistryTest`) grün - [x] **Rollout auf weitere Services** — masterdata/events/zns-import nutzen kein eigenes Tenant-Schema ( Single-Tenant-Architektur per ADR-0021 korrekt; nur Entries-Service ist Multi-Tenant) - [x] E2E-Isolationstest re-enabled (`@Disabled` entfernt; `EntriesIsolationIntegrationTest` aktiv) - [x] E2E-Test-Bugfix: `springdoc` von `3.0.0` → `2.8.9` (ClassNotFoundException behoben); `@ActiveProfiles("test")` + `TestExposedConfiguration` ergänzt (Exposed DB-Connect im Test-Profil); alle Tests grün ✅ - [ ] **A-3** | Validierungs-Grundlage: Turnierkategorie-Limits - [x] Entkoppelte Policy-Schnittstelle + Bewerb-Descriptor implementiert - [x] Konkrete ÖTO-Regeln/Limits umgesetzt (eigene Policy-Implementierung) - [ ] Sonderregeln aus 📜 Rulebook B-2 Spezifikation einarbeiten (wartet auf Übergabe) --- ## 🟠 Sprint B — Priorität 2 (diese Woche) - [x] **B-1** | CRUD-Endpunkte vervollständigen - [x] `Veranstaltung`: GET, PUT - [x] `Turniere`: POST, GET, GET{id}, PUT, DELETE, PATCH /status - [x] `Bewerbe`: POST, GET, GET{id}, PUT, DELETE - [x] `Abteilungen`: POST, GET, GET{id}, PUT, DELETE - [x] Konsistentes Error-Format (`problem+json`); Service-Guardrails für `PUBLISHED`-Lock - [x] **`Reiter`**: GET (Liste/Suche/Einzeln/Satznummer), POST, PUT, DELETE — Filter: `lizenzKlasse`, `vereinId` - [x] **`Pferde`**: GET (Liste/Suche/Einzeln/Lebensnummer), POST, PUT, DELETE — Filter: `jahrgang`, `besitzerId` - [x] **`Vereine`**: GET (Liste/Suche/Einzeln/Nummer), POST, PUT, DELETE — Filter: `verband` (Bundesland) - [x] **`Funktionäre`**: GET (Liste/Suche/Einzeln/Richternummer), POST, PUT, DELETE — Filter: `rolle` - [ ] OpenAPI-Dokumentation (Springdoc) veröffentlichen - [ ] E2E-Tests: CRUD-Flows Turnier → Bewerb → Abteilung inkl. FK-Constraints - [ ] **B-2** | Kassa-Service implementieren - [ ] `TeilnehmerKonto`-Service: Saldo aus mehreren Turnieren aggregieren - [ ] `Zahlvorgang`-Service: Zahlung auf Veranstaltungs-Ebene buchen - [ ] Rechnungs-Generierung: Separate Rechnung je Turnier aus einem Zahlvorgang - [ ] Endpunkte: `GET /veranstaltungen/{id}/kassa/saldo`, `POST /veranstaltungen/{id}/zahlvorgaenge` - [ ] **B-3** | ÖTO-Validierung serverseitig absichern - [ ] Spezifikation von 📜 Rulebook B-2 umsetzen (wartet auf Übergabe) - [ ] OEPS-Nummern-Format, FEI-ID-Format validieren - [ ] Lizenzklassen-Validierung (R1–R4, LZF) - [ ] Altersklassen-Kompatibilität Pferd × Bewerb - [ ] Abteilungs-Zwangsteilung CSN-C-NEU (≤95cm: ohne/mit Lizenz; ≥100cm: R1/R2+) --- ## 🟡 Sprint C — Priorität 3 (nächste Woche) - [ ] **C-1** | Nennungs-Service (Grundstruktur) - [ ] Tabelle `nennungen` anlegen (FK → `abteilung_id`, Status-Automat) - [ ] `NennungsService`: Erstellen, Prüfen, Bestätigen, Ablehnen - [ ] Nennungs-Workflow-Endpunkte - [ ] **C-2** | Stammdaten-Seeder - [ ] Initiale Testdaten (Reiter, Pferde, Vereine) für Entwicklungsumgebung - [ ] Seed-Skript in `config/scripts/` ablegen - [ ] **C-3** | LAN-Sync-Endpunkte (ADR-0022 ✅ freigegeben) - [ ] `SyncEvent`-Datenmodell in `core`-Modul definieren (KMP-shared, Phase 1) - [ ] SQLDelight-Tabellen `sync_events`, `sync_snapshots` anlegen - [ ] `LamportClock`-Implementierung (thread-safe, persistent) - [ ] WebSocket-Server auf Meldestelle-Desk (Ktor): HELLO/HELLO_ACK/SYNC_DELTA/SYNC_PUSH - [ ] mDNS-Discovery-Service integrieren (gemäß ADR-0020) - [ ] Domänen-Mastership-Validierung im Event-Handler - [ ] Reconnect-Logik mit Delta-Sync (`lastKnownSeq`) --- ## 📌 Abhängigkeiten | Warte auf | Von wem | Betrifft | |----------------------------------------|-------------|-----------------| | Rulebook B-2 Spezifikation | 📜 Rulebook | A-3, B-3 | | ~~ADR-0022 (LAN-Sync)~~ | ✅ Erledigt | C-3 freigegeben | --- ## 💡 Empfehlungen (nach Priorität) 1. **A-3 / B-3 Sonderregeln & ÖTO-Validierung** — Warten auf Rulebook B-2 Übergabe; Validator-Interface-Grundstruktur kann schon vorbereitet werden. 2. **B-1 OpenAPI** — Springdoc-Dokumentation für alle neuen Endpunkte (Reiter/Pferde/Vereine/Funktionäre) veröffentlichen. 3. **B-2 Kassa-Service** — Nächster großer Block nach Abschluss der CRUD-Endpunkte.