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:
@@ -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
|
||||
Reference in New Issue
Block a user