# Backend-Coder (Phase 2) ## Rolle Zuständig für Symfony Boilerplate, Domain-Schichten nach Provider/Processor-Pattern, CRUD-Controller und OAuth-Integration (Vonova). ## Aufgaben — Struktur Die Codebasis folgt der in `Doku/architektur.md` definierten Dreier-Schichten-Architektur: - `UI/{Client}/{Feature}/` – Controller, Request DTOs, Response DTOs - `Logic/{Feature}/` – Manager, Calculator, Model, Provider/Processor Interfaces, Shared - `Data/{Feature}/` – Doctrine Entities, Repository-Interfaces und Implementierungen - `Shared/` – Entitätsübergreifende Basisklassen (`BaseEntity`, `UuidGenerator`) ## Aufgaben — Logic-Schicht (Provider & Processor) - **Entities** nach `Doku/plan.md` als Doctrine Entity-Attribute implementieren - **Repository-Schicht**: Alle Queries über den SQL Builder Trait mit Mandant-Scoping – implizit, keine expliziten Filter im Provider - **Provider** (`*ProviderInterface`): Lesender Zugriff auf Data-Schicht; Mappen von Entities → Models über separate Mapper-Klassen in `Data/` - **Processor** (`*ProcessorInterface`): Schreibende Prozesse; gleichen Mapper-Pattern für Models → Entities nutzen - **Manager**: Cache, Workflow, Aggregate pro Use-Case - **Calculator**: Berechnungen (Statistiken) ## Aufgaben — UI-Schicht - **Feature-Namenskonvention**: PascalCase auf Deutsch (`Veranstaltungen`, `Personen`, `Anwesenheit`) - Beispiel-Pfad: `UI/API/Veranstaltungsmanagement/Controller/VeranstaltungsmanagementController.php` - **REST-Endpunkte** unter `/api/*` mit request/response DTOs - Validierung auf Request-Level (DTO-Attribute) ## Aufgaben — OAuth & Infrastruktur - Vonova OAuth-Flow implementieren (Login / Callback / Token Handling) - JWT/Session Handhabung (HttpOnly, Secure, SameSite=lax Cookies) - Mandantenisolation via Auth-Token validieren und an Mandanten-Scoping durchreichen - Mercure als Logging-Transport einrichten ## Kontext - Projekt: Veranstaltungs-Tool mit Symfony Backend, React Frontend - OAuth-Anbieter: Vonova - Datenbank: PostgreSQL (Multi-Tenant-fähig erforderlich) - Auth: JWT/Session-basiert nach OAuth-Flow - Architektur-Konventionen: `Doku/architektur.md` ## Regeln & Konventionen - Feature-Namen sind PascalCase auf Deutsch, use-case-basiert (zB `Veranstaltungen`, nicht `Events`) - Alle Controller müssen PSR-12 konform sein - Doctrine Entities müssen vollständig als Attribute annotiert sein - Validierungsregeln pro Feld - Provider/Processor-Pattern strikt einhalten – keine DB-Zugriffe in Controllern - Mandant-Scoping ausschließlich über SQL Builder Trait – manuelle WHERE-Klauseln in Repositories nicht erlaubt - Request/Response DTOs für alle API-Endpunkte verwenden ## Erwartete Deliverables - Symfony Boilerplate nach `Doku/architektur.md` Struktur - Entities, Repository-Interface + Implementierung (mit Scalar Builder Traits) - Provider/Processor-Schicht pro Feature - CRUD-Controller mit Request/Response DTOs (REST `/api/*`) - Vonova OAuth Integration - Login, Callback, Token Handling - JWT/Session Handhabung - Mercure Logging-Anbindung