Geteilte Listen bleiben bei Kontoloeschung erhalten - Besitz geht automatisch an ein verbleibendes Mitglied #223
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#223
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?
Story: Automatische Besitz-Nachfolge statt Loeschung geteilter Listen
As a Mitglied einer geteilten Liste,
I want to dass die Liste erhalten bleibt, wenn das Konto ihres Besitzers geloescht wird (selbst oder durch den Admin), und automatisch ein verbleibendes Mitglied Besitzer wird,
so that eine gemeinsam genutzte Liste (z. B. die Familien-Einkaufsliste) nicht ohne Vorwarnung fuer alle verschwindet, nur weil eine Person ihr Konto loescht.
Hintergrund (Diskussion mit dem Menschen, 2026-09-29): Erwogen wurde, beim Teilen alle Mitglieder zu Admins zu machen. Verworfen zugunsten dieser Loesung, weil "alle sind Admins" jedem Mitglied das Loeschen der Liste fuer alle erlauben wuerde und das eigentliche Problem - Datenverlust beim Loeschen - trotzdem nicht loest. Diese Story aendert das Rechtemodell (ein Besitzer, sonst Mitglieder) nicht.
Ist-Stand:
EraseUserAccountCommandHandler(gemeinsam genutzt von der eigenen Kontoloeschung und der Admin-Loeschung aus #206) loescht alle Listen, deren Besitzer der Nutzer ist - To-Do-Listen, Einkaufslisten (und damit die daran haengenden Vorratsschraenke) und Masterpacklisten - auch wenn sie mit anderen geteilt sind. Die anderen Mitglieder verlieren sie komplett.Acceptance criteria:
Out of scope for this story:
Open questions: (escalate to human if unanswered)
Welches Mitglied wird neuer Besitzer?Entschieden vom Menschen (2026-09-29): immer das Mitglied, das als erstes beigetreten ist; nur wenn das nicht ermittelbar ist (Altbestand ohne Beitrittsdatum), das Alphabet - siehe Acceptance Criteria.Als Backlog-Item vom Nutzer eingereicht (per Chat, nicht im laufenden Loop-Zyklus geclaimt).
Offene Frage vom Menschen beantwortet (2026-09-29): Neuer Besitzer wird das Mitglied, das am laengsten dabei ist. Acceptance Criteria entsprechend ergaenzt.
Regel geaendert durch den Menschen (2026-09-29): Neuer Besitzer wird das verbleibende Mitglied, dessen Anzeigename im Alphabet zuerst kommt (Gross-/Kleinschreibung egal, bei gleichem Namen das aeltere Konto). Ersetzt die vorherige Regel "am laengsten dabei" - damit entfaellt auch das Speichern eines Beitrittsdatums.
Regel final festgelegt durch den Menschen (2026-09-29): Neuer Besitzer wird immer das Mitglied, das als erstes beigetreten ist (Beitrittsdatum wird ab jetzt gespeichert). Nur wenn das nicht ermittelbar ist - Mitgliedschaften aus der Zeit vor dieser Story haben kein Datum -, entscheidet das Alphabet des Anzeigenamens. Mitglieder ohne Datum gehen vor Mitgliedern mit Datum, da sie nachweislich frueher beigetreten sind. Ersetzt die beiden vorherigen Kommentare.
Claimed (go-Lauf 2026-09-30). Plan: Beitrittsdatum auf allen Mitgliedschafts-Entitaeten (nullable, Migration ohne Backfill) -> Nachfolge-Auswahl nach der finalen Regel vom 2026-09-29 -> EraseUserAccountCommandHandler uebertraegt statt loescht, wenn weitere Mitglieder existieren -> Tests.
Erledigt (Commits
53887091,98d99e37,e641abf2,731e4f92,7b53bd75; CI-Lauf 144 komplett gruen).Umfang:
ListOwnerSuccession) wie am 2026-09-29 entschieden: wer als erstes beigetreten ist; Mitgliedschaften ohne Datum zuerst, unter ihnen das Alphabet (Gross-/Kleinschreibung egal, bei gleichem Namen das aeltere Konto). Beitrittsdatum: neue SpalteJoinedAtfuer Einkaufs- und Masterpacklisten (ohne Backfill); To-do-Listen nutzen das seit #157 vorhandeneCreatedAt(dessen Backfill-Zeitstempel fuer Altbestand fuehrt ueber den Gleichstand automatisch zum Alphabet).BecameListOwner) plus Push; bei To-do-Listen zusaetzlich eine E-Mail, wenn er fuer diese Liste E-Mail-Benachrichtigungen aktiviert hat (die einzige existierende E-Mail-Einstellung - Einkaufs-/Packlisten haben keine). Die Sidebar des neuen Besitzers laedt die Listen beim Eintreffen der Benachrichtigung neu, damit die Besitzer-Optionen sofort erscheinen.Entscheidungen, die ueber die AC hinausgehen:
Nebenbei behoben:
202359b1: Push fuer Einkaufs-/Vorrats-/Packlisten-Benachrichtigungen ist nie angekommen (Absturz bei fehlender To-do-Listen-ID) - fuer die neue Benachrichtigung noetig.cd3802e6: Regression aus #220 - nach dem Aendern der Standardliste oeffnete der naechste Start noch die alte (liess die default-list-e2e in Lauf 142/143 flackern).Tests: 8 Unit-Tests fuer die Nachfolge-Regel, 5 neue Handler-Tests (To-do mit Inhalten/Zuweisung/Kommentar, Einkaufsliste mit Vorratsschrank, Masterpackliste undatiert-vor-datiert, E-Mail nur bei aktivierter Einstellung, Bestaetigungs-E-Mail), Push-Test, Frontend-Tests fuer Dialoge und Listen-Neuladen, Regressionstest fuer die Standardliste. Zusaetzlich live im Review-Container geprueft (Mitglied B wird nach Loeschung von A Besitzer und erhaelt die Benachrichtigung). Security-Review ohne Befund.