Rezept-Schnittstelle - Uebergabe alles oder nichts mit eindeutiger Rueckmeldung #233
Labels
No labels
priority/could
priority/must
priority/should
priority/wont
status/blocked
status/claimed
status/done-migrated
type/bug
type/feature
type/infra
type/tech-debt
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
robert/todo#233
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Die Kochbuch-App muss sicher wissen, ob ein ganzer Einkaufszettel angekommen ist. Bisher wurde jede Zutat einzeln gespeichert: ein Fehler bei Zutat 5 von 12 hinterliess eine halbe Liste, und eine Wiederholung nach einem Timeout trug alles doppelt ein.
Akzeptanzkriterien
transferId(Idempotenzschluessel der Rezept-App); dieselbe ID auf derselben Liste schreibt nichts erneut und antwortetalreadyApplied: true.transferId,alreadyApplied,ingredientCount,products.Claimed by session "Kochbuch-App Einkaufslisten-Schnittstelle [a738c3]"
Nachtraeglich angelegt: die Arbeit wurde in dieser Sitzung umgesetzt, waehrend git.butzei.de nicht erreichbar war; Commits
6bc32a24sind bereits auf master.Umgesetzt und auf master.
Umfang: Der Befehl laeuft unter
DbTransactionDecorator; die komponierten Create/Activate-Handler teilen dieselbe Transaktion. Neue TabelleRecipeIntegrationTransferEntity(eindeutig pro ShoppingListId + TransferId, Cascade mit der Liste), im selben Commit geschrieben, so dass ein Eintrag genau dann existiert, wenn die ganze Uebergabe angekommen ist. Neues Antwort-DTORecipeIntegrationTransferResultDto(Breaking Change gegenueber der bisherigen Liste - akzeptiert, da der einzige Konsument noch in Entwicklung ist).Tests: Erstanwendung, Wiederholung mit gleicher ID (nichts doppelt, gleiche Produkte), ohne ID wird jeder Aufruf angewendet, leere/zu grosse Uebergabe, sowie ein echter Rollback-Test gegen die produktive
DbContextFactory(Fehler bei der zweiten Zutat hinterlaesst weder Produkte noch Transfer-Eintrag).Sicherheit: Review ohne Befund - Transfer-Lookup und gespeicherte Produkt-IDs sind beide auf die Liste gefiltert, kein listenuebergreifender Zugriff. Hinweis (kein Sicherheitsthema): pro Zutat wird die Liste einmal geladen; bei Haushaltslisten unkritisch.
Commit:
6bc32a24