Shuffle/requirements/r1-klaerungen.md
cschlaefke 9880a6fd09
Some checks failed
CI / flutter (pull_request) Failing after 4s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 20s
docs(requirements): resolve follow-up questions N1-N14
Decisions on the follow-up questions from the R1 intake are recorded
in requirements/r1-klaerungen.md and applied to the acceptance
criteria, requirements and backlog: settings (KTO-11), dashboard
(QUE-09, new label epic/querschnitt), catalog seed without third-party
covers (KAT-05), per-user dedup of BGG import reports (SAM-08) and the
confirmed PAR-08 rule. No open questions remain for R1.

Refs #1, #2, #13, #22, #23, #25, #28, #29

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-02 16:14:31 +01:00

12 KiB
Raw Blame History

R1 – Klärungen offener Fragen

Antworten von Chris auf die offenen Fragen aus r1-story-entwurf.md § 5 (Nummerierung wie dort). Stand: 2026-11-02 – alle 48 Fragen beantwortet. Als Nächstes werden Akzeptanzkriterien, Datenmodell und Issues entsprechend angepasst.

Nr Story/Issue Entscheidung Folge
1 SAM-04 #8, SAM-06 #10, SAM-08 #25 Ein Spiel steht in genau einer Liste (Sammlung, Wunsch- oder Einkaufsliste). Datenmodell bleibt (unique (owner_id, game_id)). SAM-04 Kriterium 2 wird gestrichen bzw. umformuliert: Steht das Spiel schon in der Sammlung, sehe ich einen Hinweis und kann es nicht auf die Wunschliste setzen.
2 SAM-02 #7, SAM-04 #8, SAM-05 #9 R1: Zustand, Standort, Tags, Notiz, Priorität. Kaufpreis, Händler, geplanter Preis, Link und Summe kommen später. Datenmodell um Zustand, Standort, Tags, Priorität erweitern. Streichen: SAM-02 Krit. 1 (Kaufpreis) und Krit. 3 (Preis negativ), SAM-05 Krit. 1 (Händler, Preis, Link) und Krit. 2 (Summe), SAM-06 Krit. 2 (Preisübernahme).
9 KTO-04 #5, KTO-02 #14 Stadt bleibt in R1, ist aber nur für den Nutzer selbst sichtbar. Datenmodell/RLS: keine Sichtbarkeit von Profilfeldern für Fremde in R1.
10 KTO-05 #23 Beim Konto-Löschen wird in R1 alles hart gelöscht: Partien, Gäste, Wertungsbögen, private Katalogeinträge, offene Meldungen. Regel „Gelöschter Nutzer“ im Datenmodell gilt erst ab R2 (verknüpfte Mitspieler).
11 PAR-01 #15, PAR-02 #16, PAR-03 #17, PAR-06 #20 Alles in R1: Ort, Gästeliste, kooperativ, Teams. Datenmodell erweitern.
12 SAM-08 #25 Fehlende BGG-Spiele werden beim Import automatisch als vorläufige private Einträge angelegt (wie Datenmodell). SAM-08 Kriterium 4 anpassen: Zusammenfassung zeigt sie als „vorläufig angelegt“; Meldung an Admin entsteht automatisch.
24 KAT-05 #2, KAT-02 #4 Katalog zum Start nur manuell gepflegt, kein Import-Job in R1.1 (bis BGG-Lizenz vorliegt). KAT-05 Kriterien 1–3, 6 (Import) werden erst mit Lizenz relevant; R1.1 braucht manuelle Pflege und einen Startbestand.
42 neu Startseite/Dashboard wird eigene R1-Story. Neue Story + Issue anlegen.
43 neu Einstellungsbereich wird eigene R1-Story. Neue Story + Issue anlegen.
44 KAT-04 #13, KAT-05 #2 Admin-Rolle/-Bereich wird keine eigene Story. Der Admin pflegt Katalog und Meldungen in R1 über Supabase Studio/SQL; die Admin-Rolle existiert nur als DB-Rolle (RLS). Keine Admin-UI in der App bis QUE-08 (R4). KAT-05 Kriterien 4–5 werden über Studio erfüllt; Ablauf im Repo dokumentieren.
25 KAT-04 #13, KAT-05 #2 Siehe 44: Admin-Pflege per Supabase Studio. –
13 KAT-01 #3 Kriterium 8: zusätzliche Filter Genre und Mechanik; Filtern funktioniert auch ohne Suchbegriff (Entdecken). Kriterium 8 als Wenn/Dann neu formulieren.
17 SAM-04 #8, SAM-05 #9, SAM-06 #10 Rückgängig machen ist 5 Sekunden lang möglich. „Einige Sekunden“ durch „5 Sekunden“ ersetzen.
18 KTO-01 #1 Drosselung und Gültigkeit von Reset- und Bestätigungslink nach Supabase-Auth-Standards (self-hosted Config). Werte aus der Config im Repo dokumentieren und in Tests referenzieren.
3 KAT-01 #3 Alternative Titel je Spiel (mit Sprache); die Suche findet alle. Datenmodell: Tabelle für alternative Titel.
4 KAT-01 #3, KAT-02 #4 Verlag wird aufgenommen. Datenmodell: Verlag(e) je Spiel.
5 KAT-03 #12 Erweiterung ↔ Basisspiel wird aufgenommen: Erweiterung ist eigenes Spiel mit Verweis aufs Basisspiel. Datenmodell erweitern.
20 KTO-05 #23 Löschfrist 30 Tage inkl. Backups. Export als JSON mit allen eigenen Daten (inkl. Gäste, Wertungsbögen, Avatar-Link, vorläufige Spiele); Abruf in der App, 7 Tage gültig. Neuregistrierung mit derselben E-Mail sofort möglich. KTO-05 Kriterien 2, 4, 5 konkretisieren; Datenschutzerklärung nennt 30 Tage.
21/47 KTO-01 #1, QUE-04 Datenschutzerklärung und Nutzungsbedingungen liefert Chris vor Release. Selbstbestätigung „mindestens 16“ reicht bis zur rechtlichen Prüfung. R1 enthält nur anonyme, cookielose Reichweitenmessung ohne Geräte-IDs und ohne Einwilligung (z. B. selbst gehostet). QUE-04 Kriterium 2 präzisieren: Gilt für personenbeziehbare optionale Dienste; anonyme Messung ist ausgenommen. Rechtliche Prüfung vor Release nötig.

Weitere Entscheidungen (einzeln mit Chris durchgegangen, 2026-11-02)

Nr Story/Issue Entscheidung
6 KAT-04 #13 Neue Tabelle für Meldungen in R1 (Status offen/freigegeben/abgelehnt/zusammengeführt, Link, Verweis auf Zieleintrag).
7 KAT-05 #2 Alles schon in R1 modellieren: Flag „ausgeblendet“, Kennzeichnung manuell gepflegter Felder und Erlaubnis je Quelle, damit der spätere Import keine Migration braucht.
8 KTO-02 #14 Profil-Genres nutzen dieselbe Genre-Liste wie der Katalog.
14 KAT-01 #3 „Normale Verbindung“ = mobil 4G-Profil (≥ 10 Mbit/s, ~100 ms RTT); 95 % der Suchen liefern erste Treffer in ≤ 2 s, gemessen gegen Staging.
15 KAT-04 #13 „Sehr ähnlich“ = gleicher normalisierter Titel (Groß/Klein, Sonderzeichen, Artikel ignoriert) oder Titel-Ähnlichkeit ≥ 0,8 (Trigramm) bei Erscheinungsjahr ± 1.
16 SAM-03 #11 „Flüssig“ bei 1000 Spielen = Such-/Filterergebnis in ≤ 300 ms, Scrollen ohne sichtbares Ruckeln auf einem Mittelklasse-Gerät.
19 KTO-04 #5 Kriterium 2 wird als Regel in 10-anforderungen.md verschoben; KTO-04 hat in R1 nur Kriterium 1.
22 KTO-01 #1 Anzeigename bei Registrierung: dieselben Regeln wie KTO-02 (1–30 Zeichen). Abmelden sowie E-Mail/Passwort ändern gehören in die neue Story „Einstellungsbereich“ (43).
23 KTO-02 #14 Nur Katalogspiele dürfen Lieblingsspiele sein (keine vorläufigen Spiele). Reihenfolge per Ziehen und zusätzlich per „nach oben/unten“-Aktion (barrierefrei).
26 KAT-04 #13 Ergebnis einer Meldung als Hinweis in der App am vorläufigen Eintrag, keine E-Mail. Bei Ablehnung ohne Zieleintrag bleibt der vorläufige Eintrag privat bestehen und ist als „abgelehnt“ markiert.
27 KAT-04 #13 Chris prüft jede Meldung manuell. Limit: 10 Meldungen je Nutzer und Tag.
28 KAT-03 #12 Edition ist optional und wird nur in Sammlung und Partien gewählt, nicht in Wunsch-/Einkaufsliste.
29 SAM-02 #7 Zustandsliste: neu/eingeschweißt, sehr gut, gut, gebraucht, beschädigt. Tags und Standorte ohne eigene Verwaltung in R1 (entstehen durch Nutzung, Vorschläge aus bisherigen Werten).
30 SAM-03 #11 Wunsch- und Einkaufsliste: nur Titelsuche und Sortierung, keine Filter. Leerzustand ohne Lizenz zeigt nur den Weg zum Hinzufügen.
31 SAM-05 #9 Summe entfällt (Frage 2). Lehnt der Nutzer nach „gekauft“ die Übernahme ab, bleibt das Spiel unverändert auf der Einkaufsliste.
32 SAM-06 #10 Entfällt als Folge von Frage 1: Nach Frage 1 kann ein Spiel nicht gleichzeitig in Sammlung und Liste stehen; die Notiz wird einfach übernommen.
33 SAM-07 #24 Eine BGG-Verknüpfung je Konto; derselbe BGG-Name darf an mehreren Konten hängen (BGG-Sammlungen sind öffentlich).
34 SAM-08 #25 owned → Sammlung; wishlist und want to buy → Wunschliste; preordered → Einkaufsliste; want to play wird ignoriert. BGG-Priorität 1–2 → hoch, 3 → mittel, 4–5 → niedrig. Besessen und gewünscht → Sammlung (Frage 1). Erweiterungen werden importiert.
35 SAM-09 #26 „Selbst hinzugefügt“ = Eintrag, der nicht aus einem BGG-Import stammt. Hervorhebung nur im Abgleichsdialog.
36 PAR-01 #15, PAR-05 #19 Datum ohne Uhrzeit. Vorläufige Spiele wählbar; Wunschlisten-Spiele über die Katalogsuche. Konflikt bei Offline-Bearbeitung auf zwei Geräten: letzte Änderung gewinnt, Hinweis an den Nutzer. Nicht synchronisierte Partien zählen lokal schon in Verlauf und Statistik (gekennzeichnet). Gastvorschläge und Wertungsbögen funktionieren offline aus dem lokalen Speicher. Web: Offline-Erfassung in R1 nur in den Apps, im Browser mit Hinweis „Verbindung nötig“ (Abweichung im PR begründen).
37 PAR-02 #16 Die persönliche Statistik zählt nur Partien, in denen ich Mitspieler bin. Namensvergleich ohne Groß-/Kleinschreibung; ein Gast darf wie ich heißen. Gäste lassen sich löschen, wenn sie in keiner Partie vorkommen, sonst nur umbenennen. Gastname 1–30 Zeichen.
38 PAR-03 #17, PAR-07 #21 Kooperativer Sieg zählt als Sieg in der Siegquote. Bei Teams werden Punkte je Team erfasst. Je Spiel einstellbare Wertungsrichtung „höchste“ oder „niedrigste Punktzahl gewinnt“.
39 PAR-04 #18 Ein Wertungsbogen je Spiel und Nutzer. Gelöschte Kategorien bleiben in alten Partien sichtbar (als „gelöscht“ markiert). Negative Punkte in Kategorien erlaubt.
40 PAR-07 #21 Wie 37: nur Partien mit mir (auch für Spielzeit). Diagramm bei „gesamt“: letzte 24 Monate.
41 PAR-08 #22 Bestwert = meine eigene beste Punktzahl, gemäß Wertungsrichtung (38). Gäste zählen zu den häufigsten Mitspielern.
45 KTO-01 #1, KAT-04 #13, KTO-05 #23 E-Mails nur für Bestätigung und Passwort-Reset (Supabase-Systemmails) in der Sprache des Profils. Export fertig und Meldungsergebnis nur als Hinweis in der App.
46 PAR-07 #21 Diagramme bekommen eine Tabellenansicht als Alternative und eine Zusammenfassung als Screenreader-Text.
48 KAT-02 #4 Katalogtexte in anderer Sprache als die Oberfläche bekommen einen sichtbaren Sprachhinweis (z. B. „Beschreibung auf Englisch“).

Neue Fragen aus dem Einarbeiten (N1–N14, entschieden 2026-11-02)

Nr Story/Issue Entscheidung
N1 KTO-11 #28 Nach Passwort- oder E-Mail-Wechsel werden alle anderen Geräte abgemeldet (wie beim Reset, KTO-01 Kriterium 9).
N2 KTO-11 #28 E-Mail-Wechsel: Bestätigungslink an die neue Adresse, Info-Mail an die alte Adresse (Supabase „secure email change“).
N3 KTO-11 #28 Ohne Anmeldung gilt die Gerätesprache (Fallback Englisch), änderbar. Nach Anmeldung gilt die Profilsprache auf allen Geräten. Keine Option „wie Gerät“.
N4 KTO-11 #28 Abmelden mit nicht synchronisierten Partien: Partien bleiben lokal und werden beim nächsten Anmelden desselben Kontos übertragen. Sie sind für andere Konten auf dem Gerät nicht sichtbar.
N5 KTO-11 #28 Einstellungen verlinken Datenschutzerklärung, Nutzungsbedingungen und Impressum; kurzer Hinweis zur anonymen Messung mit freiwilligem Ausschalter.
N6 QUE-09 #29 5 Einträge je Dashboard-Bereich.
N7 QUE-09 #29 Wunschliste auf dem Dashboard nach Priorität (hoch zuerst), bei Gleichstand neueste zuerst.
N8 QUE-09 #29 Zusätzlich: Schnellaktion „Partie erfassen“ und Kurzstatistik (z. B. Partien diesen Monat, Siegquote, Link zu PAR-07). Keine Einkaufsliste.
N9 QUE-09 #29 Nicht angemeldet: Startseite zeigt Katalogsuche und Hinweis zum Anmelden/Registrieren, kein Dashboard.
N10 QUE-09 #29 Story-ID bleibt QUE-09; neues Label epic/querschnitt statt epic/partien + epic/sammlung.
N11 KAT-05 #2 Startbestand ca. 200 Spiele, von Chris per Supabase Studio/Seed gepflegt. Nur Fakten (Titel, Verlag, Jahr, Spielerzahl, Dauer, Alter, Genre, Mechanik); keine fremden Cover oder Beschreibungstexte – Platzhalter-Cover und eigene Kurztexte.
N12 SAM-08 #25, KAT-04 #13 Automatisch beim BGG-Import erzeugte Meldungen zählen nicht auf das Tageslimit; sie sind je Spiel (BGG-ID) dedupliziert und als „aus Import“ gekennzeichnet.
N13 KTO-11 #28 Das aktuelle Passwort wird für Passwort- und E-Mail-Wechsel abgefragt.
N14 KTO-11 #28, KTO-05 #23 Der Einstieg zu Export/Konto löschen gehört nicht zu KTO-11; KTO-05 ergänzt ihn in den Einstellungen selbst.
PAR-08 PAR-08 #22 Bestätigt: Partien ohne mich zählen nicht in die Statistik je Spiel (Kriterium 6).
N12a SAM-08 #25 Deduplizierung der Import-Meldungen je Nutzer und BGG-ID; Meldungen verschiedener Nutzer bleiben getrennt.
N8a QUE-09 #29 Kurzstatistik: Partienzahl im laufenden Monat, Siegquote gesamt.
N3a KTO-11 #28 Bestätigt: Bei der Registrierung wird die aktive Oberflächensprache zur Profilsprache.