This commit is contained in:
Marek Lenczewski
2026-03-31 08:48:24 +02:00
parent f9a9004fcd
commit 576bfed36d
26 changed files with 203 additions and 253 deletions

View File

@@ -41,8 +41,7 @@ Controller → Service (Manager) → Repository → Entity
- Manager-Services: Geschäftslogik (CRUD, Validierung, Toggle)
- DTOs: typisierter Input (Request) und Output (Response)
- Validierung: nur auf Request-DTOs (`#[Assert\...]`), nicht auf Entities
- Exceptions: `ValidationException` (eigener Listener), `HttpException` (Symfony built-in)
- Entities: nur Doctrine-Mapping + Getter/Setter
- Entities: Doctrine-Mapping + Getter/Setter + berechnete Felder via Serializer-Groups
## Verzeichnisstruktur (Backend)
@@ -56,8 +55,7 @@ backend/src/
Request/ — CreateSchemaRequest, UpdateSchemaRequest, UpdateTaskRequest,
ToggleRequest, CreateCategoryRequest, UpdateCategoryRequest,
SchemaValidationTrait
Response/ — TaskResponse, CategoryResponse, WeekViewResponse,
DayResponse, ToggleResponse
Response/ — WeekViewResponse, DayResponse, ToggleResponse
Entity/
Category.php, Task.php, TaskSchema.php
Enum/
@@ -72,7 +70,6 @@ backend/src/
TaskSynchronizer.php — Sync nach Schema-Update (löschen/erstellen/reset)
DeadlineCalculator.php — Berechnet Fälligkeitsdaten für ein Schema
TaskViewBuilder.php — Baut Wochenansicht + Alle-Aufgaben-View
TaskSerializer.php — Task/Category → Response-DTOs
```
## API-Routen
@@ -148,7 +145,7 @@ frontend/src/
- **Sprache Code**: Englisch (Klassen, Methoden, Variablen, CSS-Klassen)
- **Sprache UI**: Deutsch (Labels, Fehlermeldungen, Platzhalter)
- **Enum-Werte**: Deutsch in DB (`aktiv`, `erledigt`, `einzel` etc.), Englisch als PHP-Case-Namen (`Active`, `Completed`, `Single`)
- **API-Serialisierung**: Symfony Serializer-Groups für Schema/Category Entities (`schema:read`, `schema:write`, `category:read`, `category:write`), TaskSerializer-Service für Tasks
- **API-Serialisierung**: Symfony Serializer-Groups auf allen Entities (`schema:read`, `task:read`, `category:read`)
- **Validierung**: Auf Request-DTOs, nicht auf Entities
- **Error-Handling**: `HttpException` → Symfony built-in
- **Frontend**: Vue 3 Composition API mit `<script setup>`, fetch-basierter API-Client