- Master-Geräte können erwartete Clients inkl. Name & Rolle definieren.
- Neue Rollen (`RICHTER`, `ZEITNEHMER` etc.) integriert.
- Backend- und Frontend-Validierung erweitert, UI-Komponente für Client-Verwaltung.
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
- Einbindung eines komplett überarbeiteten Onboarding-Screens mit validierten Eingaben für Gerätename, Sicherheitsschlüssel und Backup-Pfad.
- `SettingsManager` eingeführt zur Speicherung der Onboarding-Daten in `settings.json`.
- Navigation verbessert: Onboarding-Workflow startet, wenn Konfiguration fehlt; neues "Setup"-Icon in der Navigationsleiste hinzugefügt.
- Backend: Geräte-API und `DeviceSecurityFilter` für Authentifizierung per Sicherheitsschlüssel implementiert.
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
- Enabled web-to-backend nominations with `MailController` and REST endpoint (`/api/mail/nennung`).
- Added `NennungRemoteRepository` for frontend API integration using Ktor.
- Linked `WebMainScreen` to backend API for nomination handling and confirmation display.
- Implemented automated confirmation emails for received nominations.
- Updated `MASTER_ROADMAP` to reflect progress on Phase 13 milestones.
- Improved Nennung UI, backend persistence, and QA tracking for Neumarkt tournament.
- Added `Bounded Context Awareness` section to the Architect playbook, emphasizing adherence to SCS boundaries.
- Refined agent definitions and responsibilities, highlighting domain-driven principles and offline-first focus.
- Introduced strategic project goals in AGENTS.md, clarifying the operational scope of Meldestelle-Biest.
- Enhanced workflow and session protocols for better alignment with the MASTER_ROADMAP and DDD principles.
- Updated role descriptions to emphasize tools, technologies, and accountability.
- Created `MailServiceApplication` with Spring Boot setup.
- Added `MailPollingService` for IMAP polling, `TurnierNr` extraction, and auto-reply functionality.
- Implemented structured email sending for online nominations via `OnlineNennungFormular`.
- Updated frontend with `Erfolgsscreen` for nomination confirmation and fallback handling.
- Added build configurations for Mail-Service and frontend nomination module.
- Documented phase-based roadmap for Online-Nennung and Mail-Service rollout.
- Added `Tagesabschluss` entity and repository to handle daily cash closing logic.
- Introduced cancellation logic for `Buchung`, enabling creation of offsetting entries.
- Extended schema definitions with `TagesabschlussTable` and nullable `storniertBuchungId` in `BuchungTable`.
- Updated services to support `Tagesabschluss` creation and `Buchung` cancellation.
- Implemented tests for `TagesabschlussService` and cancellation functionality.
- Updated documentation to reflect completed roadmap items related to cash management.
- Replaced hardcoded schema names with constants (`TEST_SCHEMA`, `CONTROL_SCHEMA`) across multiple tests.
- Resolved IDE warnings by removing unused variables (`result`), suppressing `SqlResolve`, and using ASCII-compliant strings.
- Corrected typos in test data (`testdb` -> `test_db`, `Produktions` -> `Production`).
- Improved readability and maintainability in migration and tenant registry tests by introducing companion object constants.
- Improved schema isolation logic with constants for tenant schemas and search path management in PostgreSQL.
- Added `withTenant` utility in `TenantContextHolder` to simplify tenant context usage.
- Removed unused imports, variables, and helper functions (`random()` and redundant `NennungRepository` references).
- Included missing `multitenancy.*` configuration keys in `additional-spring-configuration-metadata.json` to address IDE warnings.
- Fixed schema isolation handling in Exposed by switching table creation to JDBC and explicitly setting `search_path` in PostgreSQL.
- Removed redundant `runBlocking` calls, unused variables, and IDE warnings in the test.
- Added `JwtDecoder` mock in `@TestConfiguration` to prevent application context loading errors.
- Verified that writes in one tenant schema are no longer visible in another.
chore(config): add `application-test.yaml` for better test environment setup
- Configured H2 as an in-memory database for tests.
- Disabled Flyway and Consul to avoid unnecessary dependencies during testing.
- Removed `AbteilungViewModel`, `BewerbAnlegenViewModel`, `BewerbViewModel`, and `CreateBewerbWizardScreen`.
- Cleaned up related imports and unused domain models.
- Added conceptual documentation detailing the status automaton for handling entry states and its integration with dynamic time schedule adjustments (`status-automat-nennungen-de.md`).
- Updated master roadmap with the completion of the status automaton concept.
- Extended changelog to reflect the addition of the specified architecture document.
- **Domain Enhancements:**
- Introduced `PausenKonfiguration` and `BesichtigungsBlock` entities to handle automatic breaks and inspection scheduling.
- Added `BesichtigungsTypE` enum for inspection types (`ZU_FUSS`, `ZU_PFERD`).
- Updated `Bewerb` and `Abteilung` models to include pause and inspection type fields.
- **Service Updates:**
- Enhanced `StartlistenService` to calculate start times, accounting for breaks and inspection buffers.
- Extended `BewerbService` to support patchable time scheduling via new `updateZeitplan` API.
- **Persistence Changes:**
- Updated tables (`BewerbTable`, `AbteilungTable`) to persist break configurations and inspection types.
- Implemented repository mappings to include these new fields.
- **Testing:**
- Introduced `BewerbeZeitplanIntegrationTest` to validate new scheduling behaviors, including automatic pauses and inspection handling.
- **Documentation:**
- Added rulebook and conceptual documents for inspection and scheduling logic in `docs/01_Architecture/`.
- **Entries-Service Updates:**
- Implemented automatic booking of fees (entry fees and late fees) during entry submission using `TeilnehmerKontoService`.
- Enhanced `Bewerb` entity with financial fields (`nenngeldCent`, `nachnenngebuehrCent`).
- Added Flyway migration to update `bewerbe` table with new financial fields.
- Updated `EntriesServiceApplication` to include billing package scanning for integration.
- **Billing-Service Enhancements:**
- Adjusted `TeilnehmerKontoService` to support fetching accounts by event and person.
- Improved database configuration to handle missing JDBC URLs during tests.
- **Tests:**
- Added integration tests to validate fee booking logic for entries, including late fee scenarios.
- Introduced H2 database setup for test isolation.
- **Misc:**
- Updated tenant-aware transactions to support H2 and PostgreSQL dialects.
- Adjusted log and error handling for robust integration between services.
- **REST API:** Added `BillingController` with endpoints for managing participant accounts and transactions, including history retrieval.
- **Database Configuration:** Introduced `BillingDatabaseConfiguration` to initialize database schema using Exposed.
- **Testing:** Added integration tests for `TeilnehmerKontoService` using H2 in-memory database.
- **Billing Domain:**
- Added Kotlin Multiplatform project with domain models (`TeilnehmerKonto`, `Buchung`, `BuchungsTyp`) to represent billing entities.
- Defined serialization strategies using `InstantSerializer`.
- **Service Implementation:**
- Introduced `BillingServiceApplication` as the main entry point for the billing service.
- Developed `TeilnehmerKontoService` for account management and transactions.
- **Persistence Layer:**
- Implemented Exposed repositories (`ExposedTeilnehmerKontoRepository`, `ExposedBillingRepositories`) for database interaction.
- Added table definitions (`TeilnehmerKontoTable`, `BuchungTable`) with indexes for efficient querying.
- **Build Configuration:**
- Setup Gradle build files for billing domain and service modules with dependencies for Kotlin, Serialization, Spring Boot, and Exposed.
- **Test Additions:**
- Extended ZNS importer tests with new scenarios for qualification parsing
- **Domain Updates:**
- Introduced `AbteilungsWarnung` entity for structured warning handling compliant with ÖTO § 39.
- Added validation rules for mandatory and optional division thresholds and structural completeness.
- Implemented `CompetitionWarningService` and `AbteilungsRegelService` for domain-centric validations.
- Updated domain models (`Bewerb`, `Abteilung`) to reflect structured warning logic.
- **Services:**
- Expanded `BewerbService` to include warning validation through `CompetitionWarningService`.
- **Frontend Enhancements:**
- Updated `TurnierBewerbeTab` to display warnings using tooltips with clear descriptions and structured formatting.
- Modified `BewerbUiModel` to handle warnings and integrate them into the UI.
- **Persistence:**
- Implemented `CompetitionRepositoryImpl` to map database rows to the new domain models and validation logic.
- **Testing:**
- Added comprehensive unit tests for `validateStrukturellesTeilung` and division-specific warnings.
- Enhanced existing tests to validate the new warning structure and code-based assertions.
- **Docs:**
- Updated roadmap to reflect the completion of structural warnings implementation.
- **Core Updates:**
- Expanded `SyncEvent` model with additional fields (`eventId`, `sequenceNumber`, `originNodeId`, `createdAt`, `checksum`, `schemaVersion`) for improved event tracking and validation.
- Updated event classes (`PingEvent`, `PongEvent`, `DataChangedEvent`, `DataRequestEvent`) to align with the extended `SyncEvent`.
- **Frontend Enhancements:**
- Enhanced `BewerbViewModel` to handle sync events (`PingEvent`, `DataChangedEvent`) and observe connected peers using `SyncManager`.
- Added support for
- **Core Updates:**
- Implemented `P2pSyncService` interface with platform-specific WebSocket implementations (`JvmP2pSyncService` and no-op for JS).
- Developed `SyncEvent` sealed class hierarchy to handle peer synchronization events (e.g., `PingEvent`, `PongEvent`, `DataChangedEvent`, etc.).
- **Frontend Integration:**
- Introduced `SyncManager` to manage peer discovery and synchronization, coupled with `NetworkDiscoveryService`.
- Updated dependency injection to include `syncModule` for platform-specific sync service initialization.
- Enhanced `BewerbViewModel` to support new sync capabilities, including observing sync events and UI updates for connected peers.
- **Backend Enhancements:**
- Added ZNS-specific fields (`zns_nummer`, `zns_abteilung`) to Bewerb table for idempotent imports.
- Introduced import ZNS logic to handle duplicates and align with SyncManager updates.
- **UI Improvements:**
- Enhanced `TurnierBewerbeTab` with updated dialogs (ZNS imports, sync status) and dynamic previews.
- Improved network syncing feedback and error handling in frontend components.
- **DB Changes:**
- Added migration for new column fields in the Bewerb table with relevant indexing for ZNS import optimizations.
- **Network Discovery Service:**
- Added platform-specific `DiscoveryModule` with JmDNS-based `JmDnsDiscoveryService` for JVM and no-op implementation for JS.
- Implemented service and device discovery using mDNS to enable peer-to-peer synchronization within LAN.
- Registered the module in Koin for dependency injection and integrated it with `networkModule`.
- **Frontend Integration:**
- Enhanced `BewerbViewModel` with intents and actions for starting, stopping, and refreshing network scans.
- Introduced polling for discovered services during an active scan.
- **UI Additions:**
- Added a `NetworkDiscoveryPanel` in `TurnierBewerbeTab` to display discovered services and indicate scan state.
- Updated action buttons to include toggle functionality for network scans.