feat(api): extend Masterdata API with CRUD endpoints for Pferde and Funktionäre

- Added full CRUD support for Pferde (list, search, get by ID, create, update, delete) with filters for Jahrgang and BesitzerId.
- Introduced FunktionaerController, offering CRUD operations for Funktionäre (list, search, get by ID, create, update, delete) with filtering by Rolle.
- Enhanced HorseController and ReiterController with updated data models, additional request validation, and detailed filtering options.
- Extended backend configurations to register new controllers and route handlers.
- Updated roadmaps and progress documents to reflect completed Sprint B-1 tasks.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-04-03 10:12:27 +02:00
parent 2dd5453365
commit 2270f9602f
11 changed files with 811 additions and 83 deletions
+14 -14
View File
@@ -19,12 +19,13 @@
## 🔴 Sprint A — Offen (höchste Priorität)
- [ ] **A-1** | Tenant-Isolation vollständig ausrollen ⚠️ BLOCKER
- [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
- [ ] **Rollout auf weitere Services** (aktuell nur Entries Service migriert)
- [ ] E2E-Isolationstest re-enablen (`@Disabled` wegen Jackson/Spring-Web-Autokonfiguration)
- [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)
- [ ] **A-3** | Validierungs-Grundlage: Turnierkategorie-Limits
- [x] Entkoppelte Policy-Schnittstelle + Bewerb-Descriptor implementiert
@@ -35,16 +36,16 @@
## 🟠 Sprint B — Priorität 2 (diese Woche)
- [ ] **B-1** | CRUD-Endpunkte vervollständigen
- [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
- [ ] **`Reiter`**: POST/GET/GET{id}/PUT/DELETE (Suche `q`, Filter `lizenzKlasse`, `vereinId`)
- [ ] **`Pferde`**: POST/GET/GET{id}/PUT/DELETE (Suche `q`, Filter `jahrgang`, `besitzerId`)
- [ ] **`Vereine`**: POST/GET/GET{id}/PUT/DELETE (Suche `q`, Filter `verband`)
- [ ] **`Funktionäre`**: POST/GET/GET{id}/PUT/DELETE (Suche `q`, Filter `rolle`)
- [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
@@ -91,14 +92,13 @@
|----------------------------------------|-------------|-----------------|
| Rulebook B-2 Spezifikation | 📜 Rulebook | A-3, B-3 |
| ~~ADR-0022 (LAN-Sync)~~ | ✅ Erledigt | C-3 freigegeben |
| QA: E2E-Test-Umgebung Port-Binding Fix | 🧐 QA | A-1 @Disabled |
---
## 💡 Empfehlungen (nach Priorität)
1. **A-1 Rollout** — Tenant-Isolation auf alle verbleibenden Services ausweiten; `@Disabled` E2E-Test re-enablen sobald
Jackson-Fix vorliegt.
2. **B-1 Reiter/Pferde/Vereine/Funktionäre** — Frontend wartet auf diese Endpunkte für ViewModel-Anbindung.
3. **B-3 ÖTO-Validierung** — Erst nach Rulebook-Übergabe starten, aber Grundstruktur (Validator-Interface) schon
vorbereiten.
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.