feat(docs): add detailed session logs and initial architecture plan for Neumarkt 2026

- Included comprehensive documentation addressing the architecture, roadmap, and MVP goals for Neumarkt 2026.
- Added domain-specific definitions, glossary references, and functional breakdowns for both the public Web-App and Desktop-App.
- Clarified MVP deliverables, including Web-App Nennformular, Desktop-App offline-first setup, ZNS data sync, and LAN integration.
- Documented step-by-step onboarding workflow and open decisions for device pairing and security.
- Updated roadmap with sprint goals and technical steps for implementation.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-03-27 14:41:06 +01:00
parent ae64714465
commit e9fabb9ee7
2 changed files with 938 additions and 0 deletions
@@ -0,0 +1,130 @@
# 🧹 Curator Log — Neumarkt 2026: Public Web + Desktop (Meldestelle)
Datum: 2026-03-27
Status: Arbeitsprotokoll (MVP bis 2026-04-07)
## Kontext & Ziel
- Bis Di, 07.04.2026: Öffentlich erreichbare Web-App mit Nennformular pro Turnier (26128, 26129) und Desktop-App (
offline-fähig) zur internen Steuerung (Toggles, Hinweise, Datenpflege).
- Prinzipien: Trennung Fach-Kontexte vs. TechOps/Monitoring; Offline-First; keine Annahmen ohne Rückfrage; Glossar ist
Quelle der Wahrheit.
## Begriffe & Quellen
- Glossar/UL: `docs/03_Domain/00_Glossary.md`, `docs/03_Domain/01_Glossary/Ubiquitous_Language.md`.
- Neumarkt-Referenzen: `docs/Neumarkt2026/*` (Turnierkarten, Dashboard-Skizzen).
- Kurzdefinitionen (zur Bestätigung):
- Veranstalter: Organisation (z. B. Verein Neumarkt).
- Veranstaltung: Rahmen (Ort/Zeitraum), fasst Turniere.
- Turnier: Einheit mit Bewerben/Prüfungen, Ausschreibung, Nennungen, Start-/Ergebnislisten.
- Bewerb/Prüfung: Klasse im Turnier; optional in Abteilungen.
- Abteilung: Unterteilung eines Bewerbs mit eigener Liste.
## Web-App — MVP Funktionsumfang
1) Landing www.mo-code.at
- Card-Liste der Veranstaltungen (aktuell: Neumarkt) mit Turnier-Cards (26128, 26129).
- Je Turnier-Card: Buttons „Ausschreibung (PDF)“, „Nennen“ (sichtbar, wenn `turnier.config.nennenEnabled`),
„Start-Ergebnisse“ (sichtbar, wenn `turnier.config.resultsEnabled`).
- Hinweis-Text `turnier.notice` (z. B. „Pferdepass-Kontrolle“, „Achtung Nennstopp“).
2) Prüfungs-Übersicht je Turnier
- Sortierte Liste aller Bewerbe (Datum, Uhrzeit, Platz); optional Abteilungen verschachtelt.
- Buttons je Card: „Startliste“ (geplant/laufend), „Ergebnisliste“ (abgeschlossen), „Live-Ergebnisse“ (Nice-to-have,
vorerst verborgen).
- Suche/Filter (Reiter/Pferd) Nice-to-have; nur Turnierteilnehmer.
3) Nennformular (pro Turnier generiert)
- Abschnitte: Reiter, Pferd, Bewerb, Einverständnisse.
- Client- und Server-Validierung; Bestätigungsseite; optional E-Mail-Bestätigung (abhängig Mailserver) oder
On-Screen-Referenz.
Pflichtfelder (Vorschlag, final durch 📜 Rulebook Expert):
- Reiter: Vorname, Nachname, Geburtsjahr/-datum, Nationalität, Verein/Club, E-Mail.
- Lizenz (bewerbsabhängig): Reiter-Lizenznummer (pflichtig, falls Regel verlangt).
- Pferd: Name, Jahrgang, mind. eines von UELN/Passnummer; Besitzer optional.
- Bewerbsauswahl (+ Abteilung ggf.), optional Kommentar.
- Einverständnisse: DSGVO/Teilnahmebedingungen, Tiergesundheit/Impfstatus (Checkboxen).
Öffentliche Minimal-APIs:
- GET `/api/veranstaltungen`
- GET `/api/turniere/{turnierId}`
- GET `/api/turniere/{turnierId}/bewerbe`
- GET `/api/turniere/{turnierId}/ausschreibung` (PDF)
- POST `/api/turniere/{turnierId}/nennungen`
## Desktop-App (Meldestelle) — MVP
- Offline-First: Lokale DB (z. B. SQLite) + Sync-Queue. Geräte „Meldestelle“ und „Richter-Turm“ im selben LAN.
- Statusleiste: Indikatoren „Internet erreichbar“ und „Peer verbunden“ (Heartbeat-basiert).
- Onboarding (Freischalten):
1) Gerätename setzen (z. B. „Meldestelle“, „Richter-Turm“).
2) Sicherheitsschlüssel setzen (gemeinsam, z. B. „Neumarkt2026“) für verschlüsselte LAN-Kopplung.
3) ZNS-Daten laden: automatisch via Internet/LAN oder Offline-Import `ZNS.zip` (Integritäts-/Versionsprüfung, Warnung
bei veraltetem Stand).
- Nach Freischalten: Navigation „Zu den Veranstaltern“ sichtbar.
- Geräte-Setup: Druckerauswahl (OS-Dialog), Persistenz pro Gerät.
- LAN-Kopplung: mDNS/Bonjour Discovery; Fallback manuelle IP/QR optional.
- Optional: Einfacher LAN-Chat zwischen Geräten (Store-and-forward bei kurzzeitigem Offline).
## Veranstalter Übersicht (neue Präzisierung)
- Nach Freischalten (Name + Schlüssel + ZNS vorhanden) ist „Zu den Veranstaltern“ aktiv.
- Screen-Inhalte:
- Auswahlliste bereits registrierter Veranstalter (online/LAN geladen), z. B. „Verein Neumarkt“.
- Aktion „Neuen Veranstalter anlegen“ für Fälle ohne Treffer/Neuanlage.
- Weiterer Fluss:
1) Veranstalter auswählen/neu anlegen.
2) Veranstaltung anlegen/auswählen (gemäß Glossar; falls Rahmen explizit geführt wird).
3) Turnier innerhalb der Veranstaltung anlegen (26128, 26129) und konfigurieren:
- Toggles: `nennenEnabled`, `resultsEnabled`
- Hinweis-Text (`notice`)
- Bewerbs-Regeln (Pflichtfelder-Flags), Nennstopp-Status
## TechOps-UI (separate Shell)
- Monitoring/Metriken/Logs + Ping-Service-Demo. Keine fachliche Vermischung.
- Kernmetriken (MVP): public endpoint availability, nennungen_submit_latency_p95, nennungen_submit_error_rate,
nennungen_created_count pro Turnier, pdf_delivery_success_rate.
## Qualitätsleitplanken (DoD, MVP)
- Modultrennung: Fach-Features getrennt von TechOps/Ping; keine Cross-Imports.
- Offline-First: Queue/Retry auf allen Netzwerkpfaden; klare UI-States für Offline/Sync.
- Observability: Traces, Key-Metrics, korrelierbare Request-IDs; keine PII in Logs.
- Security (MVP): gemeinsamer LAN-Schlüssel ausreichend; später erweiterbar (Pairing/QR).
- DSGVO: Minimaldatensatz; Einverständnis-Texte durch 📜 Rulebook Expert.
## Offene Punkte (für nächste Session)
1) Bestätigung/Korrektur Glossar-Definitionen.
2) Finalisierung Pflichtfelder Nennformular inkl. bewerbsabhängiger Regeln.
3) E-Mail-Bestätigung sofort vs. On-Screen-Only.
4) Gleich/abweichende Regeln zwischen 26128 und 26129.
5) LAN-Pairing-Fallback (reicht gemeinsamer Schlüssel vs. zusätzliche IP/QR-Option aktivieren).
6) UI-Details „Veranstalter Übersicht“ (Suche/Filter, Minimalfelder Neuanlage).
## Konkrete nächste Schritte (Umsetzung)
- Desktop:
- Onboarding-Checklist-Komponente (Gerätename, Schlüssel, ZNS-Status).
- Screen „Veranstalter Übersicht“: Liste (remote/LAN), „Neuen Veranstalter anlegen“.
- Formular „Veranstalter neu“: Minimalfelder, Persistenz lokal + Sync.
- Backend:
- Endpunkte Veranstalter-Query (public/internal), PDF-Auslieferung, Nennungs-Persistenz.
- Turnier-Config-API (Toggles, Notice), Bewerbs-Regel-Flags.
- Web-App:
- Landing + Turnier-Cards (26128, 26129) mit Toggles/Notice.
- Nennformular-Renderer aus Turnier-/Bewerbs-Definition; POST Nennung.
## Go/No-Go Checkliste Neumarkt
- [ ] Desktop: Onboarding (Name, Schlüssel, ZNS geladen)
- [ ] Desktop: Veranstalter sichtbar/neu anlegbar
- [ ] Backend: Turnierdaten 26128/26129 vorhanden; PDF-Links ok
- [ ] Web: Landing online; Turnier-Cards korrekt gesteuert
- [ ] Web: Nennformular 26128/26129; Validierung & Persistenz ok
- [ ] Observability: Basis-Metriken aktiv