meldestelle/docs/03_Domain/03_Analysis/Non_Functional_Requirements_Draft.md
Stefan Mogeritsch 09b0b1a462 infra: clean up Keycloak configuration, enforce consistency in .env, and improve health checks
Streamlined Keycloak configurations with defaults for development and production in `.env`. Added health checks and improved environment variable documentation with comments to differentiate local and server deployments. Ensured compatibility with pre-built registry images.
2026-03-06 11:23:24 +01:00

4.1 KiB

type status owner
ADR DRAFT Lead Architect

Non-Functional Requirements (NFRs) - Phase 1

  • Status: Draft
  • Fokus: Offline-First Architektur, Robustheit, Datenintegrität

1. Offline-Fähigkeit & Resilienz (Availability)

Das System muss in einer Umgebung funktionieren, in der Netzwerkverbindungen unzuverlässig oder nicht vorhanden sind (Reitställe, ländliche Gebiete).

  • NFR-01: Local-First Prinzip

    • Alle Kernfunktionen (Nennung, Startlistenerstellung, Ergebniserfassung, Drucken) müssen zu 100% ohne Netzwerkverbindung ausführbar sein.
    • Die lokale Datenbank (SQLite/SQLDelight) ist die primäre Datenquelle für das UI.
    • Der Server dient lediglich als Synchronisations-Hub und Backup, nicht als Laufzeit-Abhängigkeit.
  • NFR-02: Synchronisation & Konfliktlösung

    • Sobald eine Verbindung besteht, müssen Daten im Hintergrund synchronisiert werden.
    • Konfliktstrategie: Bei konkurrierenden Änderungen (z.B. zwei Richter ändern dasselbe Ergebnis) muss das System:
      1. Technische Konflikte automatisch lösen (z.B. "Last Write Wins" basierend auf präzisen Zeitstempeln).
      2. Fachliche Konflikte protokollieren und zur manuellen Klärung markieren.
  • NFR-03: Wiederherstellung (Disaster Recovery)

    • Nach einem Absturz oder Stromausfall muss das System innerhalb von < 30 Sekunden wieder betriebsbereit sein.
    • Kein Datenverlust von bereits bestätigten Eingaben (ACID-Transaktionen lokal).

2. Performance & Latenz (Usability)

Im Turnierbetrieb herrscht Zeitdruck. Wartezeiten summieren sich und führen zu Stress bei den Anwendern.

  • NFR-04: Optimistic UI Updates

    • Benutzeraktionen (z.B. Speichern einer Note) müssen im UI sofort (< 50ms) bestätigt werden, ohne auf Netzwerk-Roundtrips oder Datenbank-Commits zu warten (Asynchrone Verarbeitung).
  • NFR-05: Such-Performance

    • Die Suche nach Pferden (in > 50.000 Stammdaten) oder Reitern muss < 200ms dauern (Full-Text-Search Indexierung lokal).
    • Dies gilt auch auf leistungsschwächerer Hardware (ältere Laptops, Tablets).
  • NFR-06: Massendaten-Verarbeitung

    • Der Import der zns.zip (Stammdaten) darf den UI-Thread nicht blockieren und sollte < 5 Minuten dauern.

3. Datenintegrität & Audit (Compliance)

Ergebnisse entscheiden über Qualifikationen und Preisgelder. Manipulationen oder versehentliche Änderungen müssen nachvollziehbar sein.

  • NFR-07: Audit Trail

    • Jede Änderung an einem Ergebnis (Score, Zeit, Platzierung) muss unveränderbar protokolliert werden.
    • Inhalt: Timestamp, User-ID, Old-Value, New-Value, Reason (optional).
    • Der Audit-Log muss mit synchronisiert werden.
  • NFR-08: Validierungs-Hierarchie

    • Das System muss zwischen "Hard Constraints" (Datenbank-Integrität, z.B. Foreign Keys) und "Soft Constraints" (Fachliche Regeln, z.B. fehlende Startkarte) unterscheiden.
    • Soft Constraints dürfen den Prozess nicht blockieren, müssen aber persistente Warnungen erzeugen ("Override"-Flag).

4. Sicherheit (Security)

  • NFR-09: Lokale Datensicherheit

    • Da Laptops/Tablets gestohlen werden können: Sensible Daten (Personendaten, Adressen) sollten "At Rest" verschlüsselt sein (z.B. SQLCipher), sofern die Performance (NFR-05) nicht kritisch beeinträchtigt wird.
    • Minimalanforderung: Keine Speicherung von Passwörtern im Klartext.
  • NFR-10: Rollenbasierter Zugriff (RBAC)

    • Unterscheidung der Berechtigungen im UI:
      • Richter: Darf nur Ergebnisse für zugewiesene Bewerbe eingeben.
      • Meldestelle: Vollzugriff.
      • Zuschauer (Kiosk-Mode): Nur Lesezugriff auf Starter-/Ergebnislisten.

5. Hardware & Umgebung

  • NFR-11: Eingabe-Effizienz

    • Die Ergebniserfassung muss "Keyboard-First" bedienbar sein (Nummernblock-Optimierung). Maus/Touch ist für Massenerfassung zu langsam.
  • NFR-12: Druck-Unterstützung

    • Unterstützung von lokalen Druckern (USB/Netzwerk) ohne komplexe Treiber-Installation, da Listen (Starterlisten, Ergebnisse) physisch ausgehängt werden müssen (Pflicht laut Reglement).