Implementierungsplan für Survey Management
Markdown herunterladenImplementierungsplan: Feature 1 – Survey Management (Admin)
Kontext
Dieses Dokument beschreibt den Implementierungsplan für das Feature “Survey Management” im Online-Survey-Backend.
Projektkontext: Spring Boot 3.x, Java 17, Spring Data JPA, H2 (Dev), jqwik (Property-Based Testing)
Referenzdokumente:
- Feature-Spezifikation:
/docs/features/feature-1-survey-management.md - Semantisches Datenmodell:
/docs/semantic_data_model.md - Architektur-Dokumentation:
/docs/architecture.md
Entscheidungen
- Schichtenreihenfolge: Bottom-up: zuerst Persistenzmodell, dann Datenzugriff, Business-Logik und API; jeder Schritt wird verifiziert, bevor der nächste beginnt
- Testdesign: Automatisierte Tests entstehen zusammen mit der jeweiligen Schicht; Property-Based Tests ergänzen anschließend die kritischen Validierungsinvarianten
- Datenzugriff: Spring Data Naming Conventions werden bevorzugt; explizite Abfragen sind zulässig, wenn sich ein Use Case damit nicht sinnvoll ausdrücken lässt
- Fehlerbehandlung: Einheitliche HTTP-Fehlerantworten über einen zentralen Exception-Handler
Schritt 1: Persistenzmodell gemäß Datenmodell
Ziel: Das Persistenzmodell für Surveys, Fragen und Antwortoptionen gemäß dem semantischen Datenmodell anlegen.
Scope:
- Abbildung der Entitäten und Aufzählungstypen aus dem Datenmodell
- Validierungsregeln und Kaskadierverhalten gemäß Feature-Spezifikation
- Schema-Erzeugung für die Dev-Datenbank
Nicht im Scope: Repositories, Business-Logik, API
Akzeptanzkriterien:
- Persistenzmodell entspricht dem semantischen Datenmodell
- Anwendung startet fehlerfrei, Schema wird korrekt erzeugt
Verifikation:
- Bestehenden Maven-Testlauf mit
mvn testausführen - Anwendung im Dev-Profil starten und die Schema-Erzeugung auf Fehler prüfen
Schritt 2: Datenzugriffsschicht
Ziel: Den Datenzugriff für Surveys, Fragen und Antwortoptionen bereitstellen.
Scope:
- Repository-Schnittstellen für die Persistenzobjekte aus Schritt 1
- Abfragen, die für die Feature-Use-Cases benötigt werden (z. B. Fragen einer Survey in Reihenfolge)
- Integrationstests für die benötigten Abfragen und Kaskadierregeln
Nicht im Scope: Business-Logik, API
Akzeptanzkriterien:
- Datenzugriff folgt den bestehenden Projektkonventionen
- Benötigte Abfragen und Kaskadierregeln funktionieren für die relevanten Erfolgs- und Fehlerfälle
Verifikation:
- Maven-Testlauf mit
mvn testausführen - Prüfen, dass die neuen Datenzugriffstests unabhängig voneinander erfolgreich laufen
Schritt 3: Business-Logik und API-Verträge
Ziel: Die Business-Regeln der Survey-Verwaltung und die zugehörigen Request/Response-Verträge umsetzen.
Scope:
- Anlegen und Lesen von Surveys
- Hinzufügen und Löschen von Fragen inklusive Validierungsregeln aus der Feature-Spezifikation
- Löschen von Surveys inklusive abhängiger Daten
- Abbildung zwischen Persistenzmodell und API-Verträgen
- Fachliche Fehlerfälle (nicht gefunden, Validierung, Konflikte)
- Unit-Tests für die Business-Logik mit Erfolgs- und Fehlerfällen
Nicht im Scope: REST-Controller, API-Integrationstests, Property-Based Tests
Akzeptanzkriterien:
- Alle Business-Regeln aus der Feature-Spezifikation sind umgesetzt
- Validierungs- und Konfliktfälle liefern klare Fehlermeldungen
- Unit-Tests decken die relevanten Erfolgs- und Fehlerfälle ab
Verifikation:
- Maven-Testlauf mit
mvn testausführen - Prüfen, dass für jede Business-Regel mindestens ein positiver oder negativer Testfall existiert
Schritt 4: REST-API
Ziel: Die Survey-Verwaltung über REST-Endpunkte bereitstellen.
Scope:
- Endpunkte für die Use Cases aus Schritt 3
- Einheitliche Fehlerbehandlung und Request-Validierung
- Ausrichtung an den bestehenden REST-Konventionen des Projekts
- API-Integrationstests für die zentralen Erfolgs- und Fehlerfälle
Nicht im Scope: Property-Based Tests, End-to-End-/UI-Tests, Lasttests
Akzeptanzkriterien:
- Endpunkte decken die Feature-Use-Cases ab
- Fehlerantworten haben ein einheitliches Format
- API-Integrationstests prüfen die zentralen Erfolgs- und Fehlerfälle
Verifikation:
- Maven-Testlauf mit
mvn testausführen - Anwendung im Dev-Profil starten und die zentralen Use Cases manuell gegen die REST-API prüfen
Schritt 5: Absicherung durch Property-Based Tests
Ziel: Die kritischen Validierungsinvarianten mit generierten Eingaben automatisiert absichern.
Scope:
- Property-Based Tests für die zentralen Validierungsinvarianten
- Eigene Generatoren für gültige und ungültige Survey- und Question-Daten, soweit erforderlich
- Ausführung als Bestandteil des bestehenden Maven-Testlaufs
Nicht im Scope: Weitere API-Endpunkte, End-to-End-/UI-Tests, Lasttests
Akzeptanzkriterien:
- Kritische Invarianten aus der Feature-Spezifikation sind durch Properties abgedeckt
- Property-Based Tests prüfen Invarianten, nicht nur einzelne Beispiele
- Der vollständige Testlauf ist deterministisch reproduzierbar oder meldet den verwendeten Seed für eine Wiederholung
Verifikation:
- Vollständigen Maven-Testlauf mit
mvn testausführen - Einen fehlgeschlagenen Property-Test anhand seines Seeds lokal wiederholen können
Hinweise zur Verwendung
- Sequenzielle Ausführung: Die Schritte bauen aufeinander auf. Schritt N setzt die Fertigstellung von Schritt N-1 voraus.
- Bootstrap zuerst: Vor dem ersten Schritt den Bootstrap-Prompt ausführen, damit der Agent den Projektkontext versteht.
- Review-Gates: Nach jedem Schritt das Ergebnis und die dokumentierte Verifikation prüfen, bevor der nächste startet. Bei klar zusammenhängenden Teilergebnissen können eng verwandte Schritte in einem Review-Gate gebündelt werden.
- Scope-Disziplin: Der Agent setzt nur den definierten Scope um. Konkrete Typ- und Methodennamen wählt er während der Umsetzung anhand von Feature-Spezifikation, Datenmodell und bestehenden Patterns.
- Living Plan: Wesentliche Abweichungen vom Plan begründen, den Plan aktualisieren und bei größeren Scope-Änderungen erneut freigeben.
- Kontext-Management: Bei langen Sessions kann eine frische Session mit erneutem Bootstrap sinnvoll sein.