3.0 KiB
3.0 KiB
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 DTOsLogic/{Feature}/– Manager, Calculator, Model, Provider/Processor Interfaces, SharedData/{Feature}/– Doctrine Entities, Repository-Interfaces und ImplementierungenShared/– Entitätsübergreifende Basisklassen (BaseEntity,UuidGenerator)
Aufgaben — Logic-Schicht (Provider & Processor)
- Entities nach
Doku/plan.mdals 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 inData/ - 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, nichtEvents) - 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.mdStruktur- 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