Shuffle/requirements/backlog.md
cschlaefke 9d59244655
Some checks failed
CI / flutter (pull_request) Failing after 3s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 20s
docs(requirements): apply R1 clarifications and add KTO-11, QUE-09
All 48 open questions from the R1 intake are answered in
requirements/r1-klaerungen.md. Acceptance criteria, requirements and
backlog are updated accordingly; removed criteria stay marked as
"entfällt" so references keep their numbers. New stories KTO-11
(settings, #28) and QUE-09 (dashboard, #29). backlog.md lists the data
model changes for the architect and new open questions N1-N14.

Refs #2, #25, #28, #29

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 15:52:59 +01:00

15 KiB
Raw Blame History

Backlog R1

Stand: 2026-11-02 (Klärungen eingearbeitet) · Pflege: requirements-analyst · Quelle: requirements/r1-story-entwurf.md (freigegeben durch Chris am 2026-11-02), Akzeptanzkriterien in requirements/20-r1-akzeptanzkriterien.md, verbindliche Entscheidungen zu den 48 offenen Fragen in requirements/r1-klaerungen.md.

Repo: cschlaefke/Shuffle · Milestone: R1 (ID 1, alle Story-Issues zugeordnet) · 4 Epics + Querschnitt, 28 Stories, 28 Issues (#1–#26, #28, #29; #27 ist der PR zum Intake).

Die Akzeptanzkriterien stehen 1:1 als nummerierte Checkliste in den Issues und werden als „KTO-01 Kriterium 3“ referenziert. Gestrichene Kriterien behalten ihre Nummer („n. entfällt“), neue werden hinten angehängt. Die Querschnittskriterien (Datenschutz, Sicherheit, Sprachen, Barrierefreiheit, Zustände/Netz, Plattformen) gelten für jede Story.

Stories nach Umsetzungsreihenfolge

Status: offen = Issue angelegt, noch keine Spec. Clarification = Label needs-clarification gesetzt (offene Frage als Kommentar im Issue, siehe unten).

Story-ID Issue Titel Epic Prio Größe Etappe Status Clarification
KTO-01 #1 Registrieren, anmelden und Passwort zurücksetzen Konto Must XL R1.1 offen nein
KAT-05 #2 Katalogdaten laden und aktuell halten Katalog Must XL R1.1 (Datenmodell, Startbestand), R1.2 (Admin-Pflege per Studio, Meldungen); Import erst mit Lizenz offen ja (N11)
KAT-01 #3 Spiele suchen Katalog Must L R1.1 offen nein
KAT-02 #4 Spieldetailseite Katalog Must M R1.1 offen nein
KTO-11 #28 Einstellungsbereich (neu) Konto Must L R1.1 offen ja (N1–N5, N13, N14)
KTO-04 #5 Privatsphäre (in R1 nur der Hinweis) Konto Must S R1.1 offen nein
SAM-01 #6 Spiel zur Sammlung hinzufügen Sammlung Must S R1.2 offen nein
SAM-02 #7 Eigene Angaben pro Spiel Sammlung Must M R1.2 offen nein
SAM-04 #8 Wunschliste mit Priorität Sammlung Must M R1.2 offen nein
SAM-05 #9 Einkaufsliste führen Sammlung Must M R1.2 offen nein
SAM-06 #10 In die Sammlung übernehmen Sammlung Must S R1.2 offen nein
SAM-03 #11 Sammlung durchsuchen, filtern und sortieren Sammlung Must L R1.2 offen nein
KAT-03 #12 Erweiterungen und Editionen Katalog Must M R1.2 offen nein
KAT-04 #13 Fehlendes Spiel melden Katalog Must L R1.2 offen nein
KTO-02 #14 Profil bearbeiten Konto Must L R1.2 offen nein
PAR-01 #15 Partie erfassen Partien Must XL R1.3 offen nein
PAR-02 #16 Mitspieler hinzufügen Partien Must M R1.3 offen nein
PAR-03 #17 Ergebnis erfassen Partien Must L R1.3 offen nein
PAR-04 #18 Wertungsbogen je Spiel Partien Must M R1.3 offen nein
PAR-05 #19 Partie bearbeiten und löschen Partien Must M R1.3 offen nein
PAR-06 #20 Partienverlauf Partien Must M R1.3 offen nein
PAR-07 #21 Persönliche Statistik Partien Must L R1.3 offen nein
PAR-08 #22 Statistik je Spiel Partien Must M R1.3 offen nein
QUE-09 #29 Startseite: persönliches Dashboard (neu) Querschnitt (Labels Partien + Sammlung) Must M R1.3 offen ja (N6–N10)
KTO-05 #23 Konto löschen und Daten exportieren Konto Must XL R1.4 offen nein
SAM-07 #24 BGG-Konto verknüpfen Sammlung Should S R1.4 (nur mit BGG-Lizenz) offen nein
SAM-08 #25 Sammlung und Wunschliste aus BGG importieren Sammlung Should XL R1.4 (nur mit BGG-Lizenz) offen ja (N12)
SAM-09 #26 BGG-Import wiederholen und abgleichen Sammlung Should L R1.4 (nur mit BGG-Lizenz) offen nein

Epics

Epic Label Stories (Issues)
KTO Konto & Profil epic/konto KTO-01 (#1), KTO-02 (#14), KTO-04 (#5), KTO-05 (#23), KTO-11 (#28)
KAT Spielekatalog epic/katalog KAT-01 (#3), KAT-02 (#4), KAT-03 (#12), KAT-04 (#13), KAT-05 (#2)
SAM Sammlung & Listen epic/sammlung SAM-01 (#6), SAM-02 (#7), SAM-03 (#11), SAM-04 (#8), SAM-05 (#9), SAM-06 (#10), SAM-07 (#24), SAM-08 (#25), SAM-09 (#26)
PAR Partien & Statistik epic/partien PAR-01 (#15), PAR-02 (#16), PAR-03 (#17), PAR-04 (#18), PAR-05 (#19), PAR-06 (#20), PAR-07 (#21), PAR-08 (#22)
QUE Querschnitt – (kein eigenes Label; #29 trägt epic/partien + epic/sammlung, siehe N10) QUE-09 (#29)

Etappen (im Milestone R1)

Etappe Issues
R1.1 Fundament #1, #2 (Datenmodell, Startbestand, Rechte), #3, #4, #28, #5
R1.2 Sammlung #6, #7, #8, #9, #10, #11, #12, #13, #2 (Admin-Pflege per Studio, Meldungen), #14
R1.3 Partien #15, #16, #17, #18, #19, #20, #21, #22, #29
R1.4 Abschluss #23, #24, #25, #26 (BGG-Block nur mit Lizenz, S1)

XL-Stories

Nicht geteilt (Entscheidung Chris, Label size/xl). Die Schnittvorschläge stehen im Issue unter „Mögliche Schnitte für die Spec“ und werden in der Spec (architect) entschieden: KTO-01 (#1), KTO-05 (#23), KAT-05 (#2), SAM-08 (#25), PAR-01 (#15). KAT-05 wird durch die Zurückstellung des Imports (Klärung 24) in R1 voraussichtlich kleiner; Neubewertung in der Spec.

Abhängigkeiten

In Forgejo als blockierende Abhängigkeiten gesetzt (Issue hängt ab von …). Neu am 2026-11-02 markiert mit (neu).

Issue hängt ab von
#3 KAT-01 #2
#4 KAT-02 #3
#5 KTO-04 #1, #28 (neu)
#6 SAM-01 #1, #3, #4
#7 SAM-02 #6
#8 SAM-04 #1, #4
#9 SAM-05 #1, #4
#10 SAM-06 #6, #8, #9
#11 SAM-03 #6, #7
#12 KAT-03 #4, #6
#13 KAT-04 #1, #2, #3
#14 KTO-02 #1, #3
#15 PAR-01 #1, #3, #6
#16 PAR-02 #15
#17 PAR-03 #16
#18 PAR-04 #17
#19 PAR-05 #15, #16, #17, #18
#20 PAR-06 #15, #16, #17
#21 PAR-07 #17, #20
#22 PAR-08 #4, #17
#23 KTO-05 #1, #28 (neu)
#24 SAM-07 #1
#25 SAM-08 #2, #6, #8, #9 (neu, „preordered“ → Einkaufsliste), #13, #24
#26 SAM-09 #7, #25
#28 KTO-11 (neu) #1
#29 QUE-09 (neu) #8, #20

Nur im Issue-Text vermerkt (kriterienbezogene Rückverweise, die als blockierende Abhängigkeit Zyklen erzeugen würden):

  • KAT-01 (#3) Kriterium 6 → KAT-04 (#13)
  • KAT-02 (#4) Kriterien 3–4 → SAM-01 (#6), SAM-04 (#8), SAM-05 (#9); Kriterium 6 → PAR-08 (#22)
  • KAT-03 (#12) Kriterium 6 (Edition bei Partien) → PAR-01 (#15)
  • SAM-01 (#6) Kriterium 5 → SAM-06 (#10)
  • SAM-05 (#9) Kriterium 3 → SAM-06 (#10)
  • KTO-11 (#28) Kriterium 1 (Einstieg Datenexport/Konto löschen) → KTO-05 (#23, R1.4); umgekehrt hängt #23 blockierend von #28 ab
  • KTO-05 (#23) inhaltlich → alle Daten-Stories (u. a. #6–#11, #13, #14, #15–#18)
  • Externe Voraussetzung BGG-Lizenz (S1) für #24, #25, #26 sowie für die zurückgestellten Kriterien KAT-05 1, 2 (Quellenteil), 3, 6

Offene Fragen

Alle 48 Fragen aus r1-story-entwurf.md § 5 sind am 2026-11-02 von Chris entschieden; die verbindlichen Antworten stehen in r1-klaerungen.md und sind in 20-r1-akzeptanzkriterien.md und den Issues (Abschnitt „Klärungen“) eingearbeitet.

Neue offene Punkte (Stand 2026-11-02)

Beim Einarbeiten und beim Schneiden der zwei neuen Stories sind diese Fragen entstanden. Der Wortlaut steht als Kommentar im jeweiligen Issue, das Label needs-clarification ist gesetzt.

Nr Thema Issue
N1 Andere Geräte abmelden nach Passwort- oder E-Mail-Änderung? #28
N2 E-Mail-Änderung: Bestätigung nur an neue oder auch Info/Bestätigung an alte Adresse? #28
N3 Sprache: Option „wie Gerät“, Vorrang Profilsprache vor Gerätesprache auf neuem Gerät, Sprachwahl ohne Anmeldung? #28
N4 Abmelden mit nicht synchronisierten Partien: warnen, blockieren oder lokal behalten? #28
N5 Datenschutzerklärung/Nutzungsbedingungen/Impressum in den Einstellungen verlinken; Info oder Opt-out zur anonymen Messung? #28
N6 Anzahl der Einträge je Dashboard-Bereich #29
N7 Reihenfolge der Wunschliste auf dem Dashboard #29
N8 Weitere R1-Inhalte auf der Startseite (Einkaufsliste, Kurzstatistik, Schnellaktionen)? #29
N9 Startseite für nicht angemeldete Nutzer (Web, Katalog ohne Anmeldung lesbar) #29
N10 Story-ID QUE-09 und Epic-Label (eigenes epic/querschnitt?) #29
N11 Startbestand des Katalogs: Umfang, wer pflegt ein, Herkunft und Rechte von Covern und Texten ohne BGG-Lizenz #2
N12 Zählen automatisch beim BGG-Import erzeugte Meldungen auf das Tageslimit von 10 (KAT-04 Kriterium 7)? #25 (betrifft #13)
N13 Aktuelles Passwort beim Passwortwechsel (und ggf. E-Mail-Änderung) abfragen? (KTO-11 Kriterium 6 ist Annahme) #28
N14 Einstieg Export/Konto löschen in KTO-11 (R1.1), solange KTO-05 (R1.4) fehlt: ausblenden oder nachträglich ergänzen? #28

Zur Kenntnis, ohne eigenes Label: PAR-08 (#22) Kriterium 6 („Partien ohne mich zählen nicht in die Statistik je Spiel“) ist aus den Klärungen 37, 40 und 41 abgeleitet, nicht ausdrücklich entschieden. Bitte widersprechen, falls es anders gemeint ist.

Datenmodell-Änderungen für architect

docs/datenmodell-r1.md und die Migrationen werden hier nicht geändert. Die folgenden Änderungen ergeben sich aus r1-klaerungen.md. Sie landen beim architect in den Specs der betroffenen Issues und danach als neue, additive Migrationen.

Klärung Änderung Issues
1 Sammlung, Wunsch- und Einkaufsliste bleiben ein Eintrag je Nutzer und Spiel (unique (owner_id, game_id)) mit Listenstatus; Wechsel = Statusänderung #6, #8, #9, #10, #25
2, 29 Sammlungseintrag: Zustand (Liste: neu/eingeschweißt, sehr gut, gut, gebraucht, beschädigt), Kaufdatum, Notiz (≤ 1000), Standort (Freitext), Tags (Freitext, Vorschläge aus bisherigen Werten, keine eigene Verwaltung). Wunschliste: Priorität (hoch/mittel/niedrig), Notiz. Einkaufsliste: Notiz. Kein Kaufpreis, Händler, geplanter Preis, Link in R1 #7, #8, #9, #10
3 Alternative Titel je Spiel mit Sprache (eigene Tabelle), in der Suche berücksichtigt #3
4 Verlag(e) je Spiel (mehrere möglich) #3, #4
5 Erweiterung als eigenes Spiel mit Verweis auf das Basisspiel #12
6, 27 Neue Tabelle für Meldungen: Status offen/freigegeben/abgelehnt/zusammengeführt, Titel, Verlag, Jahr, Link, Verweis auf Zieleintrag; Limit 10 je Nutzer und Tag; Ergebnis als Hinweis am vorläufigen Eintrag #13, #2
7 Katalog: Flag „ausgeblendet“, Kennzeichnung manuell gepflegter Felder, Quellenkennung + Quellenangabe, Anzeige-Erlaubnis je Quelle – schon in R1, damit der spätere Import keine Migration braucht #2
8 Profil-Genres referenzieren dieselbe Genre-Liste wie der Katalog #14
9 Stadt im Profil nur für den Nutzer selbst lesbar (RLS); keine Sichtbarkeit von Profilfeldern für Fremde in R1 #14, #5
10, 20 Konto-Löschung: harte Löschung aller Nutzerdaten (Partien, Gäste, Wertungsbögen, vorläufige Einträge, offene Meldungen) innerhalb von 30 Tagen inkl. Sicherungen; Regel „Gelöschter Nutzer“ erst ab R2. Datenexport als JSON, abrufbar in der App, 7 Tage gültig (Ablageort, Ablauf) #23
11 Partie: Ort; Gästeliste als eigene Entität; kooperativ (gewonnen/verloren gemeinsam); Teams mit Punkten/Ergebnis je Team #15, #16, #17, #20
12 Vorläufige private Spieleinträge auch automatisch aus dem BGG-Import, inkl. automatischer Meldung; Herkunftskennzeichen „aus BGG-Import“ (für Klärung 35) #25, #26, #13
23 Lieblingsspiele: nur Katalogspiele (keine vorläufigen), höchstens 5, mit Reihenfolge #14
28 Edition optional bei Sammlungseintrag und Partie, nicht bei Wunsch-/Einkaufsliste #12, #6, #15
33 BGG-Verknüpfung: höchstens eine je Konto; kein Unique-Constraint auf den BGG-Namen über Konten hinweg #24
34 BGG-Import: Zuordnung der Status (owned/wishlist/want to buy/preordered), Prioritätsabbildung 1–5 → hoch/mittel/niedrig, Erweiterungen importieren #25, #26
36 Partie: Datum ohne Uhrzeit; Offline-Sync mit „letzte Änderung gewinnt“ (Änderungszeitpunkt je Partie nötig) und Hinweis an den Nutzer #15, #19
37 Gastname 1–30 Zeichen; Gast nur löschbar, wenn er in keiner Partie vorkommt #16
38 Wertungsrichtung („höchste“ oder „niedrigste Punktzahl gewinnt“) je Spiel und Nutzer #17, #22
39 Ein Wertungsbogen je Spiel und Nutzer; Kategorien weich löschen (in alten Partien als „gelöscht“ sichtbar); negative Punkte erlaubt #18
44 Admin-Rolle nur als Datenbankrolle (RLS); Pflege über Supabase Studio/SQL, Ablauf im Repo dokumentieren #2, #13
45 Sprache im Profil speichern (für Systemmails und Sprachwahl in KTO-11) #1, #28
48 Sprache von Katalogtexten (Titel/Beschreibung) speichern, um den Sprachhinweis zu zeigen #4