Files
haushalt/backend/plan.md
Marek Lenczewski 7b58e68ecb update
2026-03-30 23:08:24 +02:00

104 lines
5.1 KiB
Markdown

# Entity
Category(id, name, color) — Farbkodierte Kategorie für Aufgaben
TaskSchema(id, name, status, taskType, category, deadline, startDate, endDate, weekdays, monthDays, yearDays, createdAt) — Vorlage für wiederkehrende Aufgaben
Task(id, schema, name, category, categoryOverridden, date, status, createdAt) — Einzelne Aufgabe eines Schemas
# Controller
CategoryController::index() — Alle Kategorien abrufen
CategoryController::show(id) — Einzelne Kategorie abrufen
CategoryController::create() — Neue Kategorie anlegen (201)
CategoryController::update(id) — Kategorie aktualisieren
CategoryController::delete(id) — Kategorie löschen (204)
TaskController::show(id) — Einzelnen Task abrufen
TaskController::update(id) — Task aktualisieren (Name, Kategorie, Status, Datum)
TaskController::delete(id) — Task löschen (204)
TaskSchemaController::index() — Alle Schemas abrufen
TaskSchemaController::week(?start) — Wochenansicht ab Datum (Default: heute)
TaskSchemaController::allSchemas() — Alle Schemas sortiert nach Erstellung
TaskSchemaController::allTasks() — Alle Tasks über alle Schemas
TaskSchemaController::show(id) — Einzelnes Schema abrufen
TaskSchemaController::create() — Neues Schema anlegen (201)
TaskSchemaController::update(id) — Schema aktualisieren + Tasks synchronisieren
TaskSchemaController::delete(id) — Schema löschen (204)
TaskSchemaController::toggle(id) — Task-Status umschalten (aktiv↔erledigt)
# Service
CategoryManager::createCategory() — Neue Kategorie anlegen
CategoryManager::updateCategory() — Kategorie aktualisieren
CategoryManager::deleteCategory() — Kategorie löschen
TaskManager::updateTask() — Task aktualisieren (Name, Kategorie, Status, Datum)
TaskManager::deleteTask() — Task löschen
TaskSchemaManager::createSchema() — Neues Schema anlegen
TaskSchemaManager::updateSchema() — Schema aktualisieren + Tasks synchronisieren
TaskSchemaManager::toggleTaskStatus() — Task-Status umschalten (aktiv↔erledigt)
TaskSchemaManager::deleteSchema() — Schema löschen
TaskGenerator::generateForRange() — Fehlende Tasks für einen Zeitraum erzeugen
TaskGenerator::generateForTasksWithoutDate() — Tasks für Einzel-Schemas ohne Deadline erzeugen
TaskSynchronizer::syncForSchema() — Tasks nach Schema-Update synchronisieren
DeadlineCalculator::getDeadlinesForRange() — Fälligkeitsdaten anhand Wiederholungsregeln berechnen
TaskViewBuilder::buildWeekView() — Wochenansicht nach Tagen gruppiert
TaskViewBuilder::buildAllTasksView() — Alle Tasks sortiert
TaskSerializer::serializeTask() — Task-Entity zu Response-DTO
TaskSerializer::serializeTasks() — Mehrere Tasks zu Response-DTOs
TaskSerializer::serializeCategory() — Category-Entity zu Response-DTO
# DTO
## Request
CreateSchemaRequest(name, categoryId, status, taskType, deadline, startDate, endDate, weekdays, monthDays, yearDays) — Schema anlegen
UpdateSchemaRequest(name, categoryId, hasCategoryId, status, taskType, deadline, startDate, endDate, weekdays, monthDays, yearDays) — Schema ändern
UpdateTaskRequest(name, categoryId, status, date) — Task ändern
ToggleRequest(date) — Task-Status umschalten
CreateCategoryRequest(name, color) — Kategorie anlegen
UpdateCategoryRequest(name, color) — Kategorie ändern
## Response
TaskResponse(schemaId, taskId, name, status, taskType, date, deadline, isPast, category) — Task-Darstellung
CategoryResponse(id, name, color) — Kategorie-Darstellung
WeekViewResponse(tasksWithoutDeadline[], days[]) — Wochenansicht
DayResponse(date, tasks[]) — Tagesansicht mit Tasks
ToggleResponse(completed) — Toggle-Ergebnis
# Enum
TaskStatus — Aufgabenstatus (aktiv, erledigt)
TaskSchemaStatus — Schemastatus (aktiv, erledigt, inaktiv)
TaskSchemaType — Wiederholungstyp (einzel, taeglich, multi, woechentlich, monatlich, jaehrlich)
# Repository
CategoryRepository — Standard Doctrine-Repository (keine eigenen Methoden)
TaskRepository::findByTaskAndDate() — Task anhand Schema und Datum finden
TaskRepository::findInRange() — Alle Tasks in einem Zeitraum (ohne inaktive Schemas)
TaskRepository::getExistingKeys() — Set aus "schemaId-YYYY-MM-DD" Keys für existierende Tasks
TaskRepository::findByTaskFromDate() — Tasks eines Schemas ab einem Datum
TaskRepository::deleteFutureByTask() — Zukünftige Tasks eines Schemas löschen
TaskRepository::deleteFutureActive() — Zukünftige aktive Tasks eines Schemas löschen
TaskRepository::findAllSorted() — Alle Tasks mit Datum, sortiert nach Datum absteigend
TaskRepository::findWithoutDate() — Alle aktiven Tasks ohne Datum, sortiert nach Erstellung
TaskSchemaRepository::findActiveTasksInRange() — Aktive Schemas in einem Zeitraum finden
# Migration
Version20260323230657 — Erstellt Category- und Task-Tabelle (initiales Schema)
Version20260324141105 — Erstellt task_completion-Tabelle mit Unique-Constraint (task_id, date)
Version20260324154816 — Ersetzt task_completion durch task_occurrence, migriert Daten
Version20260325064344 — Ergänzt name, category_overridden, category_id auf task_occurrence
Version20260326165702 — Benennt task→task_schema und task_occurrence→task um