M3: Reorder + Inspiration – Schritt 1 (Logik): Reorder-UseCase, Inspiration-Query (ADR-006), Adopt-UseCase + Unit-Tests

This commit is contained in:
2026-09-19 15:57:13 +02:00
parent ce77785003
commit 52a34225fa
11 changed files with 686 additions and 0 deletions
+10
View File
@@ -60,6 +60,16 @@ Status: **final** (2026-09-13, abgestimmt) · Basis: [`anforderungen.md`](anford
- `SuggestDishes`-Query: Slow 0.5 / Rarität 0.3 / Hotness 0.2 (ADR-006),
5 Vorschläge + „Weitere 5", 1-Klick-Adopt → `CreateDish` mit Referenz
- **DoD:** Reorder bleibt nach Reload bestehen; Inspiration klickbar adoptierend
- *Konkrete Umsetzung (M1-Konvention, Domäne DE):* Schritt 1 (Logik):
`MahlzeitReorderUseCase` (neue ID-Reihenfolge → `sortOrder` neu nummerieren,
nur geänderte Positionen updaten, `MahlzeitReorderedEvent`),
`MahlzeitInspirationQuery` (Kandidaten = Namen mit ≥ 1 `gegessen`-Eintrag,
Repräsentant = neuester `gegessen`-Eintrag, Score nach ADR-006 mit
Defaults 0.5/0.3/0.2, `ausschluss`-IDs für „Weitere 5", Sortierung
absteigend nach Score, bei Gleichstand alphabetisch), `MahlzeitAdoptUseCase`
(Quelle → neue `geplant`-Kopie mit `gegessenAm = null`, `MahlzeitAdoptedEvent`).
Schritt 2 (UI): Planungsliste mit SortableJS + `POST /mahlzeiten/reorder`,
Inspiration-View `GET /inspiration` + `POST /mahlzeiten/{id}/adopt`.
### M4 – Härtung & API
- `X-Api-Token`-Guard (optional, `.env`) für `GET /api/today` (HA-ready)