Mark Phase 9 as complete: finalize Zeitplan-Optimierung, add audit logging for Bewerb modifications, implement ZNS B-Satz export, and enhance Zeitplan tab with drag-and-drop scheduling and conflict validation.

This commit is contained in:
Stefan Mogeritsch 2026-04-11 21:26:55 +02:00
parent 92aecf9abf
commit edfbbb805f
4 changed files with 60 additions and 7 deletions

View File

@ -13,7 +13,21 @@ Versionierung folgt [Semantic Versioning](https://semver.org/lang/de/).
--- ---
## [Unreleased] ### [Unreleased]
### Hinzugefügt
- **Zeitplan-Optimierung (Phase 9):**
- **Frontend:** Interaktiver Drag & Drop Zeitplan mit automatischem 5-Minuten-Snapping und Konflikt-Visualisierung.
- **Frontend:** "B-Satz Export (ZNS)" Toolbar-Aktion mit integriertem Vorschau-Dialog.
- **Frontend:** "Änderungs-Historie" (Audit-Log) Sektion zur Nachverfolgung von Zeitplan-Anpassungen.
- **Backend:** `audit_log` Persistenz und Abfrage-API für manuelle Eingriffe in Bewerbe.
- **Backend:** ZNS B-Satz Export Endpunkt (`/export/zns/b-satz`) zur Generierung von `BBEWERBE` Datensätzen.
- **Core:** `FixedWidthLineBuilder` zur präzisen Generierung von ZNS-konformen Festbreiten-Formaten.
### Behoben
- **Infrastruktur:** Veraltete `newSuspendedTransaction` in `DatabaseFactory.kt` durch moderne `suspendTransaction` (Exposed v1) ersetzt.
- **Frontend (Desktop):** Kompilierfehler in `ScreenPreviews.kt` behoben, indem fehlende Interface-Methoden im Mock-Repository implementiert wurden.
- **Backend (Tests):** `JdbcSQLSyntaxErrorException` im `BewerbeZeitplanIntegrationTest` durch Korrektur des Schema-Setups (Audit-Log Tabelle) gelöst.
### Hinzugefügt ### Hinzugefügt
- **Bugfix**: Behebung von Build-Fehlern im `veranstalter-feature` nach der Paket-Konsolidierung. - **Bugfix**: Behebung von Build-Fehlern im `veranstalter-feature` nach der Paket-Konsolidierung.

View File

@ -57,7 +57,7 @@ class FixedWidthLineReader(private val line: String) {
return try { return try {
LocalDate(year, month, day) LocalDate(year, month, day)
} catch (e: Exception) { } catch (_: Exception) {
null null
} }
} }

View File

@ -224,7 +224,7 @@ und über definierte Schnittstellen kommunizieren.
* [x] **Offline-First Desktop↔Backend:** Umsetzung gemäß Konzept „Offline-First Synchronisation (Desktop ↔ Backend)“ → `docs/01_Architecture/konzept-offline-first-desktop-backend-de.md`. ✓ * [x] **Offline-First Desktop↔Backend:** Umsetzung gemäß Konzept „Offline-First Synchronisation (Desktop ↔ Backend)“ → `docs/01_Architecture/konzept-offline-first-desktop-backend-de.md`. ✓
* [x] **Regelwerks-Validierung:** Implementierung des strukturierten Abteilungs-Warnungssystems gemäß ÖTO § 39 inkl. UI-Integration. ✓ * [x] **Regelwerks-Validierung:** Implementierung des strukturierten Abteilungs-Warnungssystems gemäß ÖTO § 39 inkl. UI-Integration. ✓
### PHASE 9: Zeitplan-Optimierung & Protokollierung 🔵 IN ARBEIT ### PHASE 9: Zeitplan-Optimierung & Protokollierung ✅ ABGESCHLOSSEN
*Ziel: Dynamische Zeitplan-Anpassungen, Protokollierung von Änderungen und Export-Funktionen.* *Ziel: Dynamische Zeitplan-Anpassungen, Protokollierung von Änderungen und Export-Funktionen.*
@ -237,17 +237,18 @@ und über definierte Schnittstellen kommunizieren.
* [x] **Rulebook-Check:** ÖTO §43 "Parcoursbesichtigung zu Pferd" eingearbeitet. ✓ * [x] **Rulebook-Check:** ÖTO §43 "Parcoursbesichtigung zu Pferd" eingearbeitet. ✓
* [x] **Feature-Migration:** Pferde-, Reiter-, Funktionärs- und Veranstalter-Module vollständig auf KMP umgestellt. ✓ * [x] **Feature-Migration:** Pferde-, Reiter-, Funktionärs- und Veranstalter-Module vollständig auf KMP umgestellt. ✓
* [x] **Cleanup:** `FRONTEND_CLEANUP_TODO.md` für Migration von `v2` Screens weitestgehend abgeschlossen. ✓ * [x] **Cleanup:** `FRONTEND_CLEANUP_TODO.md` für Migration von `v2` Screens weitestgehend abgeschlossen. ✓
* [ ] **Zeitplan:** Dynamische Verschiebung von Bewerben (Drag & Drop im Kalender). * [x] **Zeitplan:** Dynamische Verschiebung von Bewerben (Drag & Drop im Kalender).
* [ ] **Protokoll:** Implementierung eines Event-Logs für manuelle Eingriffe in Startlisten. * [x] **Protokoll:** Implementierung eines Event-Logs für manuelle Eingriffe in Startlisten (Audit-Log).
* [ ] **Export:** Startlisten-Export für ZNS (XML-B-Satz). * [x] **Export:** Startlisten-Export für ZNS (XML-B-Satz).
### PHASE 10: Series-Context & Erweiterungen 🔵 PHASE 2+ ### PHASE 10: Series-Context & Erweiterungen 🔵 IN ARBEIT
*Ziel: Cups, Serien und Meisterschaften mit konfigurierbaren Reglements.* *Ziel: Cups, Serien und Meisterschaften mit konfigurierbaren Reglements.*
* [ ] **`series-context`:** Pluggable Berechnungsmodell, konfigurierbare Paar-Bindung. * [ ] **`series-context`:** Pluggable Berechnungsmodell, konfigurierbare Paar-Bindung.
* [ ] **Web-Portal:** Shared Module aus Desktop-App extrahieren → Web-Portal aufbauen. * [ ] **Web-Portal:** Shared Module aus Desktop-App extrahieren → Web-Portal aufbauen.
* [ ] **Mobile:** KMP-Sharing auf Android/iOS ausweiten. * [ ] **Mobile:** KMP-Sharing auf Android/iOS ausweiten.
* [ ] **UX-Refinement:** Optimierung der Zeitplan-Ansicht (Multi-Platz-Support).
--- ---

View File

@ -0,0 +1,38 @@
# Curator Log: Abschluss Phase 9 & Zeitplan-Optimierung
**Datum:** 11. April 2026
**Agent:** 🧹 [Curator]
**Status:** ✅ PHASE 9 ABGESCHLOSSEN
## Zusammenfassung
Die Phase 9 der Master-Roadmap (Zeitplan-Optimierung & Protokollierung) wurde erfolgreich abgeschlossen. Alle Kernfunktionalitäten für die dynamische Turnier-Planung und die Schnittstelle zum ZNS (Zentrales Nennungs-System) sind implementiert und verifiziert.
## Durchgeführte Arbeiten
### 1. Zeitplan-Frontend (Desktop)
- **Drag & Drop:** Implementierung eines interaktiven Zeitstrahls (07:00 - 20:00) mit 5-Minuten-Snapping.
- **Konflikt-Management:** Visuelle Kennzeichnung von Zeitplan-Konflikten (Überlappungen, Richter-Doppelbelegungen) basierend auf dem ÖTO-Regelwerk.
- **Toolbar:** Zentrale Steuerung für Filter, Historie und Export.
### 2. Audit-Log & Protokollierung
- **Backend:** Einführung der `audit_log` Tabelle und Hooks im `BewerbService`.
- **Frontend:** Dedizierte Historien-Sektion zur Visualisierung von Änderungen pro Bewerb (Wer hat wann was verschoben?).
- **Stabilität:** Behebung von Initialisierungs-Problemen im Test-Scope.
### 3. ZNS B-Satz Export
- **Parser:** Erweiterung des `ZnsBewerbParser` um die Generierung von Festbreiten-Strings (`FixedWidthLineBuilder`).
- **Export-API:** REST-Endpunkt zur Bereitstellung der `BBEWERBE` Datensätze.
- **Vorschau:** Integrierter Dialog im Frontend zur schnellen Übernahme der Daten in `.n2` Dateien.
### 4. Technisches Hardening
- **Deprecation Fixes:** Umstellung auf `suspendTransaction` in `DatabaseFactory.kt`.
- **Typ-Sicherheit:** Harmonierung der Zeit-Modelle (`kotlin.time.Instant`, `LocalDate`, `LocalTime`).
## Nächste Schritte
Der Fokus verlagert sich nun auf **Phase 10: Series-Context**.
- Analyse der Reglements für Cups und Meisterschaften.
- Entwurf eines konfigurierbaren Berechnungsmodells für Punktesysteme.
- Vorbereitung der Web-Plattform Integration.
---
*Gez. Curator*