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>
15 KiB
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 |