diff --git a/docs/01_Architecture/MASTER_ROADMAP.md b/docs/01_Architecture/MASTER_ROADMAP.md index 38a86148..31c17e2d 100644 --- a/docs/01_Architecture/MASTER_ROADMAP.md +++ b/docs/01_Architecture/MASTER_ROADMAP.md @@ -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). diff --git a/docs/04_Agents/Roadmaps/Backend_Roadmap.md b/docs/04_Agents/Roadmaps/Backend_Roadmap.md index 4f90a8f3..d778affe 100644 --- a/docs/04_Agents/Roadmaps/Backend_Roadmap.md +++ b/docs/04_Agents/Roadmaps/Backend_Roadmap.md @@ -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 V1–V3 (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 (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) +## 🔴 Sprint C — Offen (höchste Priorität) - [ ] **C-1** | Nennungs-Service (Grundstruktur) - [ ] Tabelle `nennungen` anlegen (FK → `abteilung_id`, Status-Automat) diff --git a/docs/04_Agents/Roadmaps/SPRINT_EXECUTION_ORDER.md b/docs/04_Agents/Roadmaps/SPRINT_EXECUTION_ORDER.md index 33e6e5a2..c4241478 100644 --- a/docs/04_Agents/Roadmaps/SPRINT_EXECUTION_ORDER.md +++ b/docs/04_Agents/Roadmaps/SPRINT_EXECUTION_ORDER.md @@ -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 ---