Update roadmaps to reflect completion of billing, entries integration, and ZNS importer tasks.

This commit is contained in:
Stefan Mogeritsch 2026-04-10 13:05:28 +02:00
parent 02c6da146e
commit a7e1872d10
3 changed files with 48 additions and 96 deletions

View File

@ -228,6 +228,9 @@ und über definierte Schnittstellen kommunizieren.
*Ziel: Dynamische Zeitplan-Anpassungen, Protokollierung von Änderungen und Export-Funktionen.*
* [x] **Billing-Service:** Initialisierung, Teilnehmer-Konten & Buchungs-Logik (v1). ✓
* [x] **Entries-Integration:** Automatische Buchung von Nenngeldern bei Nennungs-Abgabe. ✓
* [x] **ZNS-Importer:** Hardening & Integrationstests für Funktionärs-Updates. ✓
* [ ] **Zeitplan:** Dynamische Verschiebung von Bewerben (Drag & Drop im Kalender).
* [ ] **Protokoll:** Implementierung eines Event-Logs für manuelle Eingriffe in Startlisten.
* [ ] **Export:** Startlisten-Export für ZNS (XML-B-Satz).

View File

@ -1,72 +1,27 @@
# 👷 [Backend Developer] — Zwischenstand & Roadmap
> **Stand:** 3. April 2026
> **Stand:** 10. April 2026
> **Rolle:** Spring Boot / Ktor, Kotlin, SQL, API-Design, Datenbankschema, Services
---
## ✅ Erledigte Sprints
### Sprint A (Teilweise) — Abgeschlossene Punkte
### Sprint A — Abgeschlossene Punkte
- [x] **A-1** | Tenant-Isolation vollständig ausrollen
- [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 V1V3 (inkl. Turnier-Status `DRAFT`/`PUBLISHED`)
- [x] `DomainHierarchyMigrationTest` grün
- [x] **A-3** | Validierungs-Grundlage: Turnierkategorie-Limits
### Sprint B — Abgeschlossene Punkte
- [x] **B-1** | CRUD-Endpunkte (Reiter, Pferde, Vereine, Funktionäre)
- [x] **B-2** | Kassa-Service (Teilnehmer-Konten & Buchungen v1)
- [x] **B-3** | ÖTO-Validierung (OEPS/FEI-ID, Lizenzen)
---
## 🔴 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 (R1R4, 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)
## 🔴 Sprint C — Offen (höchste Priorität)
- [ ] **C-1** | Nennungs-Service (Grundstruktur)
- [ ] Tabelle `nennungen` anlegen (FK → `abteilung_id`, Status-Automat)

View File

@ -1,6 +1,6 @@
# 🗂️ Sprint Execution Order — Meldestelle-Biest
> **Stand:** 3. April 2026 | **Phase:** 8 — Bewerbe-Management & Startlisten
> **Stand:** 10. April 2026 | **Phase:** 9 — Zeitplan & Protokollierung
> **Erstellt von:** 🏗️ Lead Architect
> **Strategisches Ziel:** Desktop-MVP mit Event-First-Workflow, Offline-First, ÖTO-Konformität
@ -10,14 +10,14 @@
| Agent | Sprint A | Sprint B | Sprint C | Nächste Aktion |
|---------------|------------------|------------------------------------------|-------------------|-------------------------------------------------------|
| 🏗️ Architect | ✅ Abgeschlossen | 🔴 B-1 offen | ⬜ Nicht gestartet | ADR-0022 LAN-Sync schreiben |
| 👷 Backend | ⚠️ A-1/A-3 offen | 🔴 B-1 teilweise | ⬜ Nicht gestartet | A-1 Rollout + Reiter/Pferde-APIs |
| 🎨 Frontend | ✅ Abgeschlossen | 🟡 B-2 teilweise/B-3 teilweise/B-4 offen | ⬜ Nicht gestartet | B-2 StoreV2-Ablösung + B-3 Bewerb-Kontext-Validierung |
| 📜 Rulebook | ✅ Abgeschlossen | 🔴 B-2 offen | ⬜ Nicht gestartet | B-2 Spec an Backend übergeben |
| 🏗️ Architect | ✅ Abgeschlossen | ✅ Abgeschlossen | ⬜ Nicht gestartet | Zeitplan-Optimierung Konzept |
| 👷 Backend | ✅ Abgeschlossen | ✅ B-1/B-2 fertig | ⬜ Nicht gestartet | C-1 Nennungs-Service Erweiterung |
| 🎨 Frontend | ✅ Abgeschlossen | 🟡 B-2/B-3 teilweise / B-4 offen | ⬜ Nicht gestartet | B-4 Kassa-Screen & StoreV2-Ablösung |
| 📜 Rulebook | ✅ Abgeschlossen | ✅ B-2 abgeschlossen | ⬜ Nicht gestartet | C-1 AltersklasseRechner |
| 🐧 DevOps | ✅ Abgeschlossen | ✅ Abgeschlossen | ✅ C-1/C-2 fertig | C-3 Produktions-Deployment |
| 🧐 QA | ✅ Abgeschlossen | 🔴 B-1..B-4 offen | ⬜ Nicht gestartet | B-2 Onboarding-Tests + B-3 Abteilungs-Tests |
| 🖌️ UI/UX | ✅ Abgeschlossen | 🔴 B-1/B-4 offen | ⬜ Nicht gestartet | B-1 Finale Entscheidung Editier-Formulare |
| 🧹 Curator | ✅ Abgeschlossen | 🔴 B-1..B-3 offen | ⬜ Nicht gestartet | B-1 Roadmaps pflegen ← *diese Session* |
| 🧐 QA | ✅ Abgeschlossen | ✅ B-1/B-3 fertig | ⬜ Nicht gestartet | B-2 Onboarding-Tests |
| 🖌️ UI/UX | ✅ Abgeschlossen | 🔴 B-1/B-4 offen | ⬜ Nicht gestartet | B-4 Wireframes für Kassa-Screen |
| 🧹 Curator | ✅ Abgeschlossen | ✅ B-1/B-2 fertig | ⬜ Nicht gestartet | Session-Dokumentation & Changelog |
---
@ -27,65 +27,59 @@ Diese Aufgaben blockieren andere Agenten und müssen zuerst erledigt werden:
| Priorität | Agent | Aufgabe | Blockiert |
|-----------|---------------|-----------------------------------------------|---------------------------------------------------|
| 🔴 P1 | 👷 Backend | A-1: Tenant-Isolation Rollout (alle Services) | 🧐 QA: C-1 Isolations-Tests |
| 🔴 P1 | 👷 Backend | B-1: Reiter/Pferde/Vereine/Funktionäre APIs | 🎨 Frontend: B-2 Repository-Verdrahtung |
| 🔴 P1 | 📜 Rulebook | B-2: Lizenz-/Altersmatrix Spec an Backend | 👷 Backend: A-3, B-3 ÖTO-Validierung |
| 🔴 P1 | 🏗️ Architect | B-1: ADR-0022 LAN-Sync | 🎨 Frontend: C-3; 👷 Backend: C-3; 🐧 DevOps: D-2 |
| 🔴 P1 | 🖌️ UI/UX | B-1: Finale Entscheidung Editier-Formulare | 🎨 Frontend: B-3 Live-Validierung |
| 🔴 P1 | 🖌️ UI/UX | B-4: Wireframes für Kassa-Screen | 🎨 Frontend: B-4 Kassa-Screen |
| 🔴 P1 | 🏗️ Architect | C-1: Zeitplan-Optimierung Konzept | 👷 Backend: C-2; 🎨 Frontend: C-2 |
| 🔴 P1 | 🎨 Frontend | B-2: StoreV2-Ablösung | 🧐 QA: B-4 ViewModel-Tests |
---
## 🟠 DIESE WOCHE — Sprint B parallel ausführen
## 🟠 DIESE WOCHE — Sprint B/C parallel ausführen
### 🏗️ Architect
1. **B-1** ADR-0022 LAN-Sync-Protokoll (Event-Sourcing vs. CRDT vs. Timestamp)
1. ✅ **B-1** ADR-0022 LAN-Sync-Protokoll (Event-Sourcing vs. CRDT vs. Timestamp)
2. 🔴 **C-1** Konzept für Zeitplan-Optimierung (Drag & Drop Logik)
### 👷 Backend Developer
1. **A-1** Tenant-Isolation Rollout auf alle Services + E2E-Test re-enablen
2. **B-1** Reiter/Pferde/Vereine/Funktionäre CRUD-APIs implementieren
3. **A-3** Sonderregeln einarbeiten (nach Rulebook B-2 Übergabe)
1. ✅ **A-1** Tenant-Isolation Rollout auf alle Services
2. ✅ **B-1** Reiter/Pferde/Vereine/Funktionäre CRUD-APIs
3. ✅ **B-2** Kassa-Service (Initialisierung & Billing-Logik)
4. 🔴 **C-1** Nennungs-Service Erweiterung (Status-Automat)
### 🎨 Frontend Expert
1. ✅ **B-2** `BewerbRepository` + `AbteilungRepository` + `DefaultTurnierRepository` angelegt
2. ✅ **B-2** `turnierFeatureModule` (Koin): alle 3 Repositories + ViewModels gebunden;
Turnier/Bewerb/Abteilung-Endpunkte verdrahtet
3. ✅ **B-3** `ReiterProfilEditDialog` + `PferdProfilEditDialog` mit `MsValidationWrapper` (OEPS, FEI-ID, Lizenz)
4. 🔴 **B-2** StoreV2-Ablösung + Akzeptanz-Tests (Mock Engine) — nächster Schritt
5. 🔴 **B-3** Lizenzklasse × Bewerb + Altersklasse Pferd × Bewerb (benötigt Bewerb-Kontext)
1. ✅ **B-2** Repositories angelegt & Endpunkte verdrahtet
2. ✅ **B-3** Live-Validierung für Reiter/Pferde Profile
3. 🔴 **B-2** StoreV2-Ablösung (Laufend)
4. 🔴 **B-4** Kassa-Screen Implementierung (wartet auf UI/UX)
### 📜 Rulebook Expert
1. **B-2** Lizenz-/Altersmatrix als Regulation-as-Data an Backend übergeben
2. **B-2** Lizenz×Bewerb-Tabellen Fachfreigabe einholen → DRAFT → STABLE
1. **B-2** Lizenz-/Altersmatrix als Regulation-as-Data übergeben
2. 🔴 **C-1** AltersklasseRechner Spezifikation
### 🐧 DevOps Engineer
1. ✅ **C-1** Desktop-Packaging (`.msi` / `.deb` / `.dmg`) konfiguriert
- `nativeDistributions` vollständig (Linux/Windows/macOS), JRE-Module, JVM-Args
- ⚠️ Icons (`icon.png`/`icon.ico`/`icon.icns`) noch ausstehend → 🖌️ UI/UX
2. ✅ **C-2** Semantic Versioning + Git-Tagging eingeführt
- `version.properties` als Single Source of Truth
- `.gitea/workflows/release.yml`: Auto-Tag + `.deb`/`.msi` Packaging
- `CHANGELOG.md` angelegt
3. 🔴 **C-3** Produktions-Deployment vorbereiten (nächste Session)
1. ✅ **C-1** Desktop-Packaging konfiguriert
2. ✅ **C-2** Semantic Versioning eingeführt
3. 🔴 **C-3** Produktions-Deployment vorbereiten
### 🧐 QA Specialist
1. **B-2** Onboarding-Wizard Edge-Case Tests (rememberSaveable Rücknavigation)
2. **B-3** Abteilungs-Logik Tests (CSN-C-NEU Pflicht-Teilung)
1. ✅ **B-1** ZNS-Importer Hardening (Integrationstests)
2. ✅ **B-3** Abteilungs-Logik Tests
3. 🔴 **B-2** Onboarding-Wizard Edge-Case Tests
### 🖌️ UI/UX Designer
1. **B-1** Finale Entscheidung Editier-Formulare (Review mit Frontend)
2. **B-4** Empty States für alle Listenansichten definieren
1. **B-1** Entscheidung Editier-Formulare
2. 🔴 **B-4** Wireframes für Kassa-Screen (Veranstaltungs-Kassa)
### 🧹 Curator
1. **B-1** Roadmaps-Verzeichnis aktualisieren ← *diese Session*
2. **B-2** `docs/05_Backend/` nach Backend-API-Abschluss aktualisieren
1. **B-1** Roadmaps aktualisiert (diese Session)
2. 🔴 **B-2** Changelog & SessionLog pflegen
---