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