Refine MsTextField component: introduce compact mode, enhance visual styling and error handling, and improve placeholder and keyboard interaction logic. Add Dimens and Colors updates, implement navigation rail and header layout for the desktop shell, and update ROADMAP documentation with planned phases.

This commit is contained in:
2026-04-12 23:06:49 +02:00
parent 5eb2dd6904
commit 126522e606
17 changed files with 854 additions and 551 deletions
@@ -0,0 +1,45 @@
package at.mocode.core.sync
import kotlinx.serialization.Serializable
/**
* Ein synchronisierbares Event gemäß ADR-0022 und "Konzept: Offline-First Synchronisation".
*
* Dieses Modell dient als Basis für das Event-Sourcing-basierte Synchronisations-System
* zwischen Desktop-Zentrale, Richter-Türmen (LAN) und dem Cloud-Backend (WAN).
*/
@Serializable
data class SyncEvent(
/** Eindeutige ID der Veranstaltung (Mandant). */
val eventId: String,
/** Optionale ID des Turniers innerhalb der Veranstaltung. */
val turnierId: String? = null,
/** Monoton steigende Sequenznummer (Lamport-Uhr). */
val sequenceNumber: Long,
/** Eindeutige ID des Knotens, der das Event erzeugt hat (z.B. "desktop-01"). */
val originNodeId: String,
/** Typ des betroffenen Aggregats (z.B. "Nennung", "Ergebnis", "Pferd"). */
val aggregateType: String,
/** Eindeutige ID des Aggregats. */
val aggregateId: String,
/** Fachlicher Typ des Events (z.B. "Created", "Updated", "StatusChanged"). */
val eventType: String,
/** Serialisierte Nutzlast des Events (JSON oder Protobuf). */
val payload: String,
/** Zeitstempel der Erstellung (Epoch Millis). */
val createdAt: Long,
/** Prüfsumme zur Integritätssicherung (optional im Core). */
val checksum: String? = null,
/** Version des Payload-Schemas zur Evolution-Unterstützung. */
val schemaVersion: Int = 1
)