diff --git a/CHANGELOG.md b/CHANGELOG.md index 353b0301..4c39e734 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 - **Bugfix**: Behebung von Build-Fehlern im `veranstalter-feature` nach der Paket-Konsolidierung. diff --git a/core/core-utils/src/commonMain/kotlin/at/mocode/core/utils/parser/FixedWidthParser.kt b/core/core-utils/src/commonMain/kotlin/at/mocode/core/utils/parser/FixedWidthParser.kt index 693d93c4..42a52d50 100644 --- a/core/core-utils/src/commonMain/kotlin/at/mocode/core/utils/parser/FixedWidthParser.kt +++ b/core/core-utils/src/commonMain/kotlin/at/mocode/core/utils/parser/FixedWidthParser.kt @@ -57,7 +57,7 @@ class FixedWidthLineReader(private val line: String) { return try { LocalDate(year, month, day) - } catch (e: Exception) { + } catch (_: Exception) { null } } diff --git a/docs/01_Architecture/MASTER_ROADMAP.md b/docs/01_Architecture/MASTER_ROADMAP.md index 211f6eb0..f3343eb5 100644 --- a/docs/01_Architecture/MASTER_ROADMAP.md +++ b/docs/01_Architecture/MASTER_ROADMAP.md @@ -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] **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.* @@ -237,17 +237,18 @@ und über definierte Schnittstellen kommunizieren. * [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] **Cleanup:** `FRONTEND_CLEANUP_TODO.md` für Migration von `v2` Screens weitestgehend abgeschlossen. ✓ -* [ ] **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). +* [x] **Zeitplan:** Dynamische Verschiebung von Bewerben (Drag & Drop im Kalender). ✓ +* [x] **Protokoll:** Implementierung eines Event-Logs für manuelle Eingriffe in Startlisten (Audit-Log). ✓ +* [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.* * [ ] **`series-context`:** Pluggable Berechnungsmodell, konfigurierbare Paar-Bindung. * [ ] **Web-Portal:** Shared Module aus Desktop-App extrahieren → Web-Portal aufbauen. * [ ] **Mobile:** KMP-Sharing auf Android/iOS ausweiten. +* [ ] **UX-Refinement:** Optimierung der Zeitplan-Ansicht (Multi-Platz-Support). --- diff --git a/docs/04_Agents/Logs/2026-04-11_Abschluss_Phase_9_Curator_Log.md b/docs/04_Agents/Logs/2026-04-11_Abschluss_Phase_9_Curator_Log.md new file mode 100644 index 00000000..25643284 --- /dev/null +++ b/docs/04_Agents/Logs/2026-04-11_Abschluss_Phase_9_Curator_Log.md @@ -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*