--- 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)