feat: integrate new desktop shell and extend backend & ADRs

- Added `meldestelle-desktop` module using JVM/Compose Desktop, registered in `settings.gradle.kts`.
- Integrated new screens and desktop navigation into core: `Veranstaltungen`, `TurnierDetail`, etc.
- Expanded backend with `ExposedFunktionaerRepository` in `officials-infrastructure`.
- Completed ADRs for bounded context mapping (`ADR-0014`) and context map (`ADR-0015`).
- Updated and extended project documentation with session logs and architecture decisions.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
2026-03-24 18:22:15 +01:00
parent c624df8744
commit 354bd49de6
75 changed files with 7616 additions and 48 deletions
@@ -0,0 +1,92 @@
---
type: SessionLog
date: 2026-03-24
agent: Lead Architect
phase: PHASE 4
task: API-Design & Anti-Corruption Layer
status: ABGESCHLOSSEN
---
# 🧹 [Curator] Session Log API-Design & ACL
**Datum:** 24. März 2026
**Agent:** 🏗️ Lead Architect
**Phase:** PHASE 4 MVP-Implementierung
**Aufgabe:** API-Design: Schnittstellen zwischen den Contexts definieren (Anti-Corruption Layer)
---
## Ergebnisse
### Erstellt
- **`ADR-0016`** (`docs/01_Architecture/adr/0016-api-design-acl-de.md`)
- Architektur-Muster: Ports & Adapters (Hexagonal) für alle Contexts
- REST-API-Katalog für alle 3 P1-Contexts (`actor`, `event-management`, `registration`)
- Vollständige DTO-Definitionen (Inbound Commands + Outbound DTOs)
- ACL-Port-Interfaces: `AktorReferenzPort`, `TurnierReferenzPort`
- ACL-Adapter-Implementierung mit Übersetzungslogik (DTO → Referenz-Objekt)
- Domain Events-Katalog: 8 Events über 3 Contexts
- ZNS-Schnittstelle: `ZnsPort` mit A-Satz / B-Satz
- Offline-First Cache-Strategie für ACL-Adapter
- Implementierungs-Reihenfolge (P1-Priorität)
### Aktualisiert
- **`MASTER_ROADMAP.md`**: Task `[x]` abgehakt, ADR #10 in Tabelle eingetragen
- **`docs/01_Architecture/adr/README.md`**: ADR-0016 eingetragen
---
## Kern-Entscheidungen (ADR-0016)
| Bereich | Entscheidung |
|---------------|--------------------------------------------------|
| Muster | Ports & Adapters (Hexagonal Architecture) |
| Kommunikation | REST (synchron) + Domain Events (asynchron) |
| ACL-Regel | Domain-Objekte verlassen den Context **niemals** |
| DTOs | Flach, serialisierbar, ohne Domänen-Logik |
| Offline | Lokale SQLite-Caches in ACL-Adaptern |
| ZNS | Eigener `ZnsPort` im `actor-context` (isoliert) |
---
## REST-API Übersicht
| Context | Base-URL | Endpunkte |
|----------------------------|-------------------------|------------------------------------------|
| `actor-context` | `/api/v1/actors` | 8 (Reiter, Pferde, Funktionäre, Vereine) |
| `event-management-context` | `/api/v1/events` | 6 (Veranstaltungen, Turniere, Bewerbe) |
| `registration-context` | `/api/v1/registrations` | 6 (Nennungen, Transfer) |
---
## Domain Events Übersicht
| Context | Events |
|----------------------------|------------------------------------------------------------------|
| `actor-context` | `ReiterAktualisiert`, `PferdAktualisiert`, `ReiterGesperrt` |
| `registration-context` | `NennungEingereicht`, `NennungStorniert`, `NennungTransferiert` |
| `event-management-context` | `TurnierEroeffnet`, `NennungsschlussErreicht`, `TurnierAbgesagt` |
---
## Status PHASE 4: Lead Architect Tasks
- [x] ADRs vervollständigen (Bounded Context Mapping + Context Map) → ADR-0014, ADR-0015
- [x] API-Design & ACL definieren → ADR-0016
**Lead Architect Tasks PHASE 4: ✅ ABGESCHLOSSEN**
---
## Nächste Schritte (Backend Developer)
Gemäß Implementierungs-Reihenfolge aus ADR-0016:
1. `actor-context` REST API (`/api/v1/actors`) implementieren
2. `event-management-context` REST API (`/api/v1/events`) implementieren
3. ACL-Adapter im `registration-context` implementieren
4. `registration-context` REST API (`/api/v1/registrations`) implementieren
5. Domain Event `NennungEingereicht` als erstes Event
6. Offline-Cache (Bulk-Sync beim Turnier-Download)