Some checks failed
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Failing after 3m16s
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Failing after 3m8s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Failing after 1m11s
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Successful in 2m1s
119 lines
9.1 KiB
Markdown
119 lines
9.1 KiB
Markdown
Wir hatte heute Vormittag eine sehr Produktive Session.
|
||
Den gesamten Chat-Verlauf kannst du unter:
|
||
- "docs/temp/Caht-Verlauf_2026-03-27.md"
|
||
nachlesen.
|
||
Unser Zwischen-Ergebniss findest du unter:
|
||
- "docs/04_Agents/Sessions/2026-03-27_Neumarkt_Public_Web_und_Desktop_Curator_Log.md"
|
||
|
||
Analysiere dies und bereite dich darauf vor, dass wir hoffentlich lückenlos weiter arbeiten können.
|
||
|
||
Alle Dokumentationen, Reports usw. findest du in den docs.
|
||
|
||
Gib mir bescheid wenn du bereit bist.
|
||
|
||
|
||
---
|
||
|
||
🧹 [Curator]
|
||
|
||
### Zusammenfassung der heutigen Session
|
||
Ich habe den Chat-Verlauf (`docs/temp/Caht-Verlauf_2026-03-27.md`) und das Curator-Log (`docs/04_Agents/Sessions/2026-03-27_Neumarkt_Public_Web_und_Desktop_Curator_Log.md`) analysiert. Der aktuelle Stand ist konsistent dokumentiert: klare Trennung von fachlichen Kontexten und `TechOps`/`Ping-Service`, definierter MVP-Fokus bis Neumarkt sowie präzise nächste Schritte und offene Punkte.
|
||
|
||
#### Kernaussagen aus dem Chat-Verlauf
|
||
- Strikte Trennung: Fach-UI vs. TechOps-UI, `Ping-Service` bleibt fachneutral und dient nur als technische Schablone.
|
||
- KMP/Compose-Frontend-Aufteilung mit eigenständiger `techops-desktop`-Shell und entkoppelten `features/*`-Modulen.
|
||
- Backend-Trennung nach Domänen (`services/meldung`, `services/auth`) und Technik (`services/ping`), Observability zentral.
|
||
- MVP für Neumarkt: minimal tragfähige Features für Erfassung/Verwaltung/Sync/Auth im Fach-UI, Ping/Metriken im TechOps-UI.
|
||
- Roadmap skizziert (3 Sprints), mit zuerst Struktur/Leitplanken, dann MVP-Funktionalität und Observability.
|
||
|
||
#### Kernaussagen aus dem Curator-Log (Neumarkt Public Web + Desktop)
|
||
- Zieltermin: 2026-04-07. Web-App öffentlich (Landing, Turnier-Cards 26128/26129, Nennformular), Desktop-App offline-first für interne Steuerung.
|
||
- Desktop Onboarding: Gerätename, gemeinsamer Sicherheitsschlüssel, ZNS-Daten laden (online/LAN oder Offline-Import `ZNS.zip`).
|
||
- „Veranstalter – Übersicht“ als nächster zentraler Screen; Turnier-Config mit `nennenEnabled`, `resultsEnabled`, `notice` und bewerbsabhängigen Pflichtfeldern.
|
||
- TechOps-UI separat mit Kernmetriken (`nennungen_submit_latency_p95`, `nennungen_submit_error_rate`, etc.).
|
||
- Offene Punkte klar gelistet (Glossar-Bestätigung, Pflichtfelder Nennformular, E-Mail-Bestätigung, Unterschiede 26128/26129, LAN-Pairing-Fallback, UI-Details Veranstalter-Übersicht).
|
||
- Konkrete nächste Schritte für Desktop, Backend und Web sind definiert; Go/No-Go-Checkliste vorhanden.
|
||
|
||
### Validierte Leitplanken (aus beiden Dokumenten)
|
||
- Modul- und Kontexttrennung ist „nicht verhandelbar“: keine Cross-Imports zwischen `features/ping-feature` und Fach-Features.
|
||
- Offline-First: Sync-Schicht eigenständig, Queue/Retry auf allen Netzwerkpfaden, klare UI-States.
|
||
- Observability: OTel/Traces, Schlüsselmetriken, korrelierbare Request-IDs, keine PII in Logs.
|
||
- Security (MVP): gemeinsamer LAN-Schlüssel; Erweiterbarkeit eingeplant.
|
||
|
||
### Abgleich MVP-Umfang
|
||
- Web: Landing, Turnier-Cards (26128/26129) mit konfigurierbaren Toggles/`notice`, Nennformular POST inkl. Validierung, PDFs ausliefern.
|
||
- Desktop: Onboarding-Checklist, Statusleiste (Internet/Peer), Veranstalter-Übersicht (Liste + „Neu anlegen“), lokale Persistenz + Sync.
|
||
- TechOps: Separates Shell mit `Ping`-Dashboard und Basis-Metriken.
|
||
|
||
### Offene Punkte, die in der nächsten Session zu klären sind
|
||
1) Glossar-Definitionen bestätigen (Veranstalter/Veranstaltung/Turnier/Bewerb/Abteilung), Quelle: `docs/03_Domain/*`.
|
||
2) Pflichtfelder für Nennformular finalisieren, inkl. bewerbsabhängiger Regeln und DSGVO-Texte (Input durch `📜 Rulebook Expert`).
|
||
3) E-Mail-Bestätigung vs. On-Screen-Bestätigung vorerst; Abhängigkeit Mailserver klären.
|
||
4) Unterschiede der Regeln zwischen Turnieren `26128` und `26129` definieren.
|
||
5) LAN-Pairing-Fallback: Reicht gemeinsamer Schlüssel oder IP/QR-Option aktivieren?
|
||
6) UI-Details „Veranstalter – Übersicht“ (Suche/Filter, Minimalfelder bei Neuanlage).
|
||
|
||
### Vorschlag für den direkten nächsten Schritt (fokussiert auf 1 Aufgabe)
|
||
- Aufgabe: Desktop „Onboarding-Checklist-Komponente“ fertig definieren und in UI verankern.
|
||
- Akzeptanzkriterien:
|
||
- `Gerätename` erfassen und lokal persistieren.
|
||
- `Sicherheitsschlüssel` setzen/prüfen; UI-Status „gekoppelt“ sobald LAN-Heartbeat aktiv.
|
||
- `ZNS.zip` Import-Flow mit Integritäts-/Versionsprüfung; eindeutige Fehlermeldungen und Warnung bei veraltetem Stand.
|
||
- Statusleiste zeigt `Internet erreichbar` und `Peer verbunden` deterministisch (mit Retry/Backoff).
|
||
- Telemetrie: Events `onboarding_completed`, `zns_import_success|failure`, `lan_peer_heartbeat`.
|
||
|
||
### Bereit für die Fortsetzung
|
||
Ich bin bereit, nahtlos weiterzuarbeiten. Wenn du möchtest, starten wir mit der Klärung der offenen Punkte 1) und 2) oder gehen direkt in die Umsetzung der Onboarding-Checklist (inkl. UI-Skizze und API-Verträgen).
|
||
|
||
Sag mir bitte, welchen Punkt wir als Nächstes priorisieren sollen oder ob es Ergänzungen/Korrekturen zur obigen Zusammenfassung gibt.
|
||
|
||
---
|
||
|
||
Okay, ich habe die Desktop-App installiert, starte diese
|
||
- Gerätename: "Meldestelle" -> Pflicht
|
||
- Sicherheitsschlüssle: "Neumarkt2026" -> Pflicht
|
||
- ZNS-Daten: synchron -> Optional, oder nur anzeige
|
||
Wenn beide Pflichtfelder ausgefüllt sind wird der
|
||
- Button "Weiter zu den Veranstaltungen" aktiv, ein klick darauf führt mich zu
|
||
# "Verwaltung - Veranstaltungen"
|
||
Diese könnte so "docs/06_Frontend/Screenshots/Verwaltung-Veranstaltungen_entwurf-01.png" aussehen.
|
||
Der Button links oben
|
||
- "+ Neue Veranstaltung" leitet mich weiter zur
|
||
# "Veranstalter - Auswahl"
|
||
Diese könnte so "docs/06_Frontend/Screenshots/Veranstalter-Auswahl_entwurf-01.png" aussehen.
|
||
Wenn ich mit einem klick auf einen Veranstalter eine auswähl treffe, dies könnte so
|
||
"docs/06_Frontend/Screenshots/Veranstalter-Auswahl_markiert_entwurf-01.png" aussehen, dann wird der
|
||
- Button "Weiter zum Veranstalter" aktiv.
|
||
Dieser leitet mich zu "Veranstalter Übersicht", dies könnte so "docs/06_Frontend/Screenshots/Veranstalter-Übersicht_entwurf-01.png" aussehen.
|
||
- Button-"+ Neuer Veranstalter" klicke komme ich auf eine Seite in der Ich einen neuen Veranstalter anlegen kann. Dies lönnte in etwa so aussehen "docs/06_Frontend/Screenshots/Neuen-Veranstalter-anlegen_entwurf-01.png" hier brauchen wir eine Suchmaske um einen Verein aus den OEPS-Daten auszuwählen, diese Daten bekommen wir über die ZNS.zip, der ZNS-Importer bereitet diese Daten sauber für unsere Datenbank auf. Hier sollten wir auch das Logo des Vereins hizufügen können.
|
||
|
||
Wir gehen davon aus, dass ich auf der
|
||
# "Veranstalter Auswahl" einen Veranstalter ausgewählt habe, ich klicke auf den
|
||
- Button "Weiter zum Veranstalter" (dieser Button aktiviert sich sobald ich einen Veranstalter ausgewählt habe) -> ich komme auf
|
||
# "Veranstalter Übersicht" diese soll in etws so "docs/06_Frontend/Screenshots/Veranstalter-Übersicht_entwurf-01.png" aussehen.
|
||
Rechts oben in der Card des Veranstalters
|
||
- Button "Profil bearbeiten" -> leitet mich weiter zur "Profil - Veranstalter", dies könnte so "docs/06_Frontend/Screenshots/Profil-Veranstalter_entwurf-01.png" aussehen.
|
||
- Button "+ Neue Veranstaltung" hier sollte ich auf eine Seite kommen in der ich eine Art der "Reitsportlichen - Veranstaltung" auswhälen könnte. In unserem Fall gibt es derzeit nur "Turnier" zur Auswahl. Mit der Auswahl "Turnier" aktiviert sich ein
|
||
- Button "Turnier anlegen" hier beginnt unser Wizzard zum anlegen eines Turniers. Ich werde weitergeleitet zu
|
||
|
||
# "Turnier - Stammdaten" könnte so "docs/06_Frontend/Screenshots/Turnier-Stammdaten_01_entwurf-01.png", "docs/06_Frontend/Screenshots/Turnier-Stammdaten_02_entwurf01.png" aussehen.
|
||
Das aller wichtigste ist die Turnier-Nr.: Eingabefeld numerisch 5 stellig validieren und noch einmal bestätigen lassen, zuückfragen ob die Turnier-Nr. korrekt ist, denn diese ist die offizelle Genehmigungs-Nummer vom ÖPS/Verband. Mit dieser Nummer wollen wir die Datenbank initialisieren
|
||
|
||
Erst wenn die Turnier-Nr. erfolgreich angegeben wurde und damit die Turnier-Datenbank initialisiert ist, ist diese Nummer nicht mehr zu ändern.
|
||
|
||
Jetzt werden die restlichen Konfigurationen freigeschalten.
|
||
|
||
Hier gehen wir chronologisch vor.
|
||
|
||
- "Type" - ÖTO(national) FEI(international) // Wir haben derzeit nur national
|
||
- "ZNS-Daten" - btn-"aktualisieren" btn-"USB-Import" // kleine Anzeige ob ZNS-Daten geladen sind, "aktualisieren" um vom Backend die Daten zu sychronisieren, "USB-Import" offline Möglichkeit die Daten zu Importieren.
|
||
- "Sprache" - Deutsch Englisch // wir haben derzeit alles nur auf deutsch
|
||
- "Sparte" - Dressur Springen // wir bieten jetzt nur Dressur und Springen an, diese können einzeln oder aber auch kombiniert werden.
|
||
- "Klasse" C B A // wir machen jetzt nur die Turnier-Klasse "C"
|
||
- "Kategorie" // hier wollen wir die eine Auswahlmöglichkeit bieten welche vorgefiltert wurde aus Sparte und Klasse, in Neumarkt haben die Turniere 26129-"CDN-C-NEU CDNP-C-NEU" 26128-"CSN-C-NEU CSNP-C-NEU"
|
||
- "Datum" // darauf achten, dass das bis-Datum nicht vor dem von-Datum sein kann
|
||
- "Titel" // optional, wenn kein Titel agegeben wird, ist der Titel wie in der Ausschreibung "CDN-C-NEU CDNP-C-NEU NEUMARKT/M., OÖ"
|
||
- "Sub-Titel" // ebenfalls optional
|
||
- btn-"+ Sponsoren hinzufügen"
|
||
|