Shuffle/requirements/20-r1-akzeptanzkriterien.md
cschlaefke f25bd85f53
Some checks failed
CI / flutter (pull_request) Failing after 3s
CI / supabase (pull_request) Successful in 2s
CI / supabase-tests (pull_request) Failing after 23s
docs(requirements): note resolved assumptions in changelog
Refs #25, #28, #29

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

49 KiB
Raw Permalink Blame History

Shuffle – R1 Akzeptanzkriterien

2026-11-02 · Chris

Änderungsvermerk 2026-11-02: Die Klärungen aller 48 offenen Fragen aus r1-story-entwurf.md § 5 sind eingearbeitet (verbindliche Entscheidungen: r1-klaerungen.md). Gestrichene Kriterien sind als „n. entfällt (Klärung X)“ markiert, damit Nummern und Referenzen wie „SAM-02 Kriterium 3“ stabil bleiben. Neue Kriterien sind hinten angehängt. Bis zur BGG-Lizenz zurückgestellte Kriterien sind als „zurückgestellt“ markiert. Neu sind die Stories KTO-11 Einstellungsbereich (Klärung 43) und QUE-09 Startseite (Klärung 42). Verweise der Form „(Klärung X)“ beziehen sich auf die Nummern in r1-klaerungen.md.

Änderungsvermerk 2026-11-02 (2): Die Entscheidungen zu den Folgefragen N1–N14 und die Bestätigung zu PAR-08 Kriterium 6 sind eingearbeitet (Abschnitt „Neue Fragen aus dem Einarbeiten“ in r1-klaerungen.md). Betroffen: KTO-01 (11), KTO-05 (neu 6), KTO-11 (1, 2, 4, 6, 7, neu 9–14), KAT-04 (7), KAT-05 (7, neu 10), SAM-08 (neu 10), PAR-08 (6), QUE-09 (1, 2, 4, neu 9–13), Datenschutz QUE-04 (4) und Sprachen QUE-05 (1). Herkunft ist als „(N…)“ vermerkt. Die zwei zunächst abgeleiteten Annahmen sind entschieden: KTO-11 Kriterium 11 bestätigt (N3a), QUE-09 Kriterium 10 korrigiert auf Siegquote gesamt (N8a); SAM-08 Kriterium 10 gilt je Nutzer (N12a).

Akzeptanzkriterien für die 28 Stories von R1 im Format Gegeben/Wenn/Dann, abgeleitet aus dem Anforderungsdokument und den dort getroffenen Entscheidungen. Jedes Kriterium soll sich als Test prüfen lassen; Zahlenwerte sind meine Annahmen und änderbar.

Geltungsbereich und Annahmen

R1 umfasst 28 Stories aus vier Epics und dem Querschnitt. Alles, was andere Nutzer sehen könnten, kommt erst mit späteren Releases; in R1 sind alle Daten privat.

Epic In R1 Nicht in R1
KTO Konto & Profil KTO-01, KTO-02, KTO-04, KTO-05, KTO-11 (neu) KTO-03 (R2), KTO-06 bis KTO-08 (R3), KTO-09 und KTO-10 (R4)
KAT Spielekatalog KAT-01 bis KAT-05 (Import aus KAT-05 erst mit BGG-Lizenz) –
SAM Sammlung & Listen SAM-01 bis SAM-09 SAM-10 (zurückgestellt)
PAR Partien & Statistik PAR-01 bis PAR-08 PAR-09 (R2), PAR-10 (R3)
QUE Querschnitt QUE-09 Startseite (neu); QUE-04 bis QUE-06 als Querschnittskriterien QUE-07/QUE-08 als App-Funktion (R4); Admin in R1 nur über Supabase Studio (Klärung 44)

Annahmen, auf denen die Kriterien beruhen

  1. Lieblingsspiele und Genres gehören zum Profil in R1 (KTO-02), wie du es im Dokument ergänzt hast. KTO-06 beschränkt sich später auf die Anzeige im öffentlichen Profil.
  2. In R1 sieht niemand fremde Profile, Sammlungen oder Partien. Deshalb besteht KTO-04 in R1 nur aus dem Hinweis, dass alles privat ist. Auch die Stadt im Profil ist in R1 nur für den Nutzer selbst sichtbar (Klärung 9).
  3. Gast-Mitspieler sind reine Namen ohne Konto (F11); Verknüpfung und Bestätigung folgen mit R2.
  4. Alle Funktionen laufen auf iOS, Android und im Web (F7); nur Partien lassen sich offline erfassen (F3), und das in R1 nur in den Apps, nicht im Browser (Klärung 36).
  5. Die Oberfläche ist Deutsch und Englisch (F1), das Mindestalter ist 16 (F8); die Selbstbestätigung reicht bis zur rechtlichen Prüfung vor dem Release (Klärung 21/47).
  6. Der BGG-Import hängt an der Lizenz und wird zuletzt gebaut (S1, F9). Der Katalog ist BGG-unabhängig mit eigenen IDs (F2) und wird zum Start nur manuell gepflegt, vom Admin über Supabase Studio/SQL (Klärungen 24, 44).
  7. Ein Spiel steht in genau einer Liste: Sammlung, Wunschliste oder Einkaufsliste (Klärung 1). Wunschliste heißt „habe ich gern“, Einkaufsliste „wird demnächst gekauft“.
  8. Kaufpreis, Händler, geplanter Preis, Link und Summe der Einkaufsliste kommen nach R1 (Klärung 2).

Lesehilfe: Jede Story hat nummerierte Kriterien. Sie lassen sich als „KTO-01 Kriterium 3“ ansprechen und werden später zu Tests und zu Haken im Pull Request.

KTO – Konto & Profil

KTO-01 Registrieren, anmelden und Passwort zurücksetzen

  1. Gegeben ich habe kein Konto, wenn ich E-Mail-Adresse, Passwort und Anzeigenamen eingebe und bestätige, dass ich mindestens 16 Jahre alt bin, dann wird ein Konto angelegt und ich erhalte eine E-Mail zur Bestätigung.
  2. Gegeben ich bestätige das Mindestalter nicht, wenn ich mich registrieren will, dann wird die Registrierung abgelehnt und ich sehe den Grund.
  3. Gegeben das Passwort hat weniger als 10 Zeichen oder steht auf einer Liste häufiger Passwörter, wenn ich es eingebe, dann erklärt mir die App am Feld, was fehlt.
  4. Gegeben die E-Mail-Adresse ist schon registriert, wenn ich mich damit registriere, dann erfahre ich nicht, ob ein Konto existiert, und es entsteht kein zweites Konto.
  5. Gegeben ein bestätigtes Konto, wenn ich die richtigen Zugangsdaten eingebe, dann bin ich angemeldet und bleibe es auf diesem Gerät, bis ich mich abmelde.
  6. Gegeben ein unbestätigtes Konto, wenn ich mich anmelde, dann werde ich auf die ausstehende Bestätigung hingewiesen und kann die E-Mail erneut senden lassen.
  7. Gegeben falsche Zugangsdaten, wenn ich mich anmelde, dann sehe ich eine allgemeine Fehlermeldung, die nicht verrät, ob E-Mail oder Passwort falsch war; nach mehreren Fehlversuchen wird der Zugang zeitweise gebremst. Anzahl der Versuche und Dauer der Bremse folgen den Standards der Supabase-Auth-Konfiguration (self-hosted); die Werte sind im Repo dokumentiert und in den Tests referenziert (Klärung 18).
  8. Gegeben ich habe das Passwort vergessen, wenn ich das Zurücksetzen anfordere, dann erhalte ich einen zeitlich begrenzten Link, mit dem ich ein neues Passwort setze; der Link funktioniert nur einmal. Die Gültigkeit von Reset- und Bestätigungslink folgt der Supabase-Auth-Konfiguration und ist im Repo dokumentiert (Klärung 18).
  9. Gegeben ich habe das Passwort zurückgesetzt, dann bin ich auf allen anderen Geräten abgemeldet.
  10. Gegeben ich registriere mich, wenn der Anzeigename leer ist oder länger als 30 Zeichen, dann kann ich mich nicht registrieren und sehe den Fehler am Feld; es gelten dieselben Regeln wie in KTO-02 Kriterium 1 (Klärung 22).
  11. Gegeben Shuffle sendet mir eine E-Mail zur Bestätigung oder zum Zurücksetzen des Passworts, dann ist sie in der Sprache meines Profils; andere E-Mails verschickt Shuffle in R1 nicht, außer Bestätigungslink und Info-Mail beim Wechsel der E-Mail-Adresse (KTO-11 Kriterium 4) (Klärung 45, N2).

Abmelden sowie E-Mail-Adresse und Passwort ändern gehören zu KTO-11 (Klärung 22).

KTO-02 Profil bearbeiten

  1. Gegeben ich bearbeite mein Profil, wenn der Anzeigename leer ist oder länger als 30 Zeichen, dann kann ich nicht speichern und sehe den Fehler am Feld.
  2. Gegeben ich wähle ein Bild als Avatar (JPG oder PNG, höchstens 5 MB), wenn ich speichere, dann wird es quadratisch zugeschnitten angezeigt; ein zu großes oder falsches Format wird mit Hinweis abgelehnt.
  3. Gegeben ich habe keinen Avatar, dann sehe ich einen Platzhalter mit meinen Initialen.
  4. Gegeben ich schreibe eine Kurzbeschreibung, wenn sie länger als 300 Zeichen ist, dann kann ich nicht speichern.
  5. Gegeben ich suche im Katalog, wenn ich bis zu 5 Spiele als Lieblingsspiele auswähle, dann werden sie in dieser Reihenfolge in meinem Profil gespeichert; ein sechstes wird abgelehnt. Wählbar sind nur Katalogspiele, keine vorläufigen Spiele aus KAT-04 (Klärung 23).
  6. Gegeben ich wähle Genres aus derselben Genre-Liste, die auch der Katalog verwendet, dann werden sie im Profil gespeichert und lassen sich wieder entfernen (Klärung 8).
  7. Gegeben ich habe gespeichert, wenn ich mich auf einem anderen Gerät anmelde, dann sehe ich dieselben Profilangaben.
  8. Gegeben ich habe mindestens zwei Lieblingsspiele, wenn ich die Reihenfolge per Ziehen oder per Aktion „nach oben“/„nach unten“ ändere, dann wird die neue Reihenfolge gespeichert; die Aktionen „nach oben“/„nach unten“ sind auch per Screenreader und Tastatur bedienbar (Klärung 23).
  9. Gegeben in meinem Profil ist eine Stadt hinterlegt, dann ist sie in R1 nur für mich sichtbar; ein anderer Nutzer kann sie weder über die App noch über die Schnittstelle lesen (Klärung 9).

KTO-04 Privatsphäre (in R1 nur der Hinweis)

  1. Gegeben ich öffne die Einstellungen (KTO-11), dann steht dort, dass Profil (einschließlich Stadt), Sammlung, Listen und Partien nur für mich sichtbar sind.

2. entfällt (Klärung 19): Die Regel „neue Freigabebereiche sind standardmäßig privat, bis ich sie freigebe“ steht jetzt als allgemeine Regel in 10-anforderungen.md bei KTO-04 und ist in R1 nicht testbar.

KTO-05 Konto löschen und Daten exportieren

  1. Gegeben ich bin angemeldet, wenn ich in den Einstellungen (KTO-11) „Konto löschen“ wähle, die Folgen bestätige und mein Passwort eingebe, dann bin ich sofort abgemeldet und mein Konto ist nicht mehr nutzbar.
  2. Gegeben ich habe mein Konto gelöscht, dann sind innerhalb von 30 Tagen alle meine Daten endgültig gelöscht, auch aus den Sicherungen: Profil, Sammlung, Listen, Partien, Gäste, Wertungsbögen, meine vorläufigen privaten Katalogeinträge und meine offenen Meldungen (Klärungen 10, 20).
  3. Gegeben mein Konto ist gelöscht, wenn ich mich anmelden will, dann ist das nicht möglich; dieselbe E-Mail-Adresse kann ich sofort neu registrieren (Klärung 20).
  4. Gegeben ich fordere in der App einen Datenexport an, wenn er fertig ist, dann sehe ich einen Hinweis in der App (keine E-Mail) und erhalte eine JSON-Datei mit allen meinen Daten, insbesondere Profil mit Avatar-Link, Sammlung, Listen, Partien, Gäste, Wertungsbögen und vorläufige Spiele (Klärungen 20, 45).
  5. Gegeben der Export ist fertig, dann ist er nur in der App über mein angemeldetes Konto abrufbar und 7 Tage lang gültig; danach ist er nicht mehr abrufbar (Klärung 20).
  6. Gegeben ich bin angemeldet, wenn ich die Einstellungen (KTO-11) öffne, dann finde ich dort den Einstieg zu „Daten exportieren“ und „Konto löschen“; diese Story ergänzt den Einstieg im Einstellungsbereich selbst (N14).

KTO-11 Einstellungsbereich (neu, Klärung 43)

Als angemeldeter Nutzer möchte ich einen Einstellungsbereich, in dem ich Sprache, Zugangsdaten und Datenschutzthemen an einem Ort finde, damit ich mein Konto selbst verwalten kann.

  1. Gegeben ich bin angemeldet, wenn ich die Einstellungen öffne, dann finde ich dort: Sprache, E-Mail-Adresse ändern, Passwort ändern, Abmelden, den Privatsphäre-Hinweis (KTO-04 Kriterium 1), die Rechtstexte (Kriterium 13) und den Hinweis zur anonymen Messung (Kriterium 14). Den Einstieg zu Datenexport und Konto löschen ergänzt KTO-05 selbst (KTO-05 Kriterium 6, N14).
  2. Gegeben ich bin angemeldet und wähle in den Einstellungen Deutsch oder Englisch, dann wechselt die Oberfläche sofort in diese Sprache; die Wahl wird als Sprache meines Profils gespeichert, gilt nach einem Neustart und auf allen Geräten, auf denen ich angemeldet bin, und auch für System-E-Mails (QUE-05 Kriterium 1, Klärung 45, N3). Eine Option „wie Gerät“ gibt es nicht (N3).
  3. Gegeben ich wähle „Abmelden“, dann bin ich auf diesem Gerät abgemeldet und die App zeigt keine privaten Daten meines Kontos mehr.
  4. Gegeben ich will meine E-Mail-Adresse ändern, wenn ich mein aktuelles Passwort und eine neue Adresse eingebe, dann erhalte ich an die neue Adresse eine E-Mail mit Bestätigungslink und an die alte Adresse eine Info-Mail über die Änderung; erst nach der Bestätigung gilt die neue Adresse für die Anmeldung, bis dahin die alte (Klärung 22, N2, N13).
  5. Gegeben die neue E-Mail-Adresse ist schon für ein anderes Konto registriert, wenn ich sie eintrage, dann erfahre ich nicht, ob dazu ein Konto existiert (wie KTO-01 Kriterium 4), und meine Adresse bleibt unverändert.
  6. Gegeben ich will mein Passwort ändern, wenn ich mein aktuelles Passwort und ein neues Passwort eingebe, das die Regeln aus KTO-01 Kriterium 3 erfüllt, dann gilt ab sofort das neue Passwort (Klärung 22, N13).
  7. Gegeben ich ändere Passwort oder E-Mail-Adresse, wenn das aktuelle Passwort falsch ist oder das neue Passwort die Regeln nicht erfüllt, dann wird nichts geändert und ich sehe den Fehler am Feld (N13).
  8. Gegeben ich bin offline, wenn ich E-Mail-Adresse oder Passwort ändern will, dann sehe ich einen Hinweis, dass dafür eine Verbindung nötig ist.
  9. Gegeben ich habe mein Passwort geändert oder den Wechsel meiner E-Mail-Adresse über den Link bestätigt, dann bin ich auf allen anderen Geräten abgemeldet, wie nach dem Zurücksetzen (KTO-01 Kriterium 9) (N1).
  10. Gegeben ich bin nicht angemeldet, dann folgt die Sprache der Geräteeinstellung (Deutsch oder Englisch, sonst Englisch) und ich kann sie ändern; wenn ich mich anmelde, gilt die Sprache meines Profils, auch wenn sie von der Geräte- oder der vorher gewählten Sprache abweicht (N3).
  11. Gegeben ich registriere mich, dann wird die zu diesem Zeitpunkt aktive Sprache der Oberfläche als Sprache meines Profils gespeichert und gilt auch für die Bestätigungs-E-Mail (KTO-01 Kriterium 11) (N3, Klärung 45; bestätigt 2026-11-02).
  12. Gegeben ich nutze die iOS- oder Android-App und habe nicht synchronisierte Partien, wenn ich mich abmelde, dann bleiben diese Partien lokal auf dem Gerät erhalten und werden übertragen, sobald ich mich mit demselben Konto wieder anmelde und eine Verbindung besteht; solange ich abgemeldet bin oder ein anderes Konto auf dem Gerät angemeldet ist, sind sie nicht sichtbar und werden nicht diesem anderen Konto zugeordnet (N4; Datenschutz).
  13. Gegeben ich öffne die Einstellungen, dann finde ich Links zu Datenschutzerklärung, Nutzungsbedingungen und Impressum (N5).
  14. Gegeben ich öffne die Einstellungen, dann sehe ich einen kurzen Hinweis zur anonymen Reichweitenmessung (Datenschutz QUE-04 Kriterium 4) mit einem Ausschalter; ist er ausgeschaltet, sendet die App keine Messdaten mehr, und die Wahl bleibt nach einem Neustart erhalten (N5).

KAT – Spielekatalog

KAT-01 Spiele suchen

  1. Gegeben der Katalog enthält Spiele, wenn ich einen Titel oder einen Teil davon eingebe, dann erhalte ich passende Treffer nach Relevanz sortiert, unabhängig von Groß- und Kleinschreibung und Sonderzeichen.
  2. Gegeben ein Spiel hat neben dem Haupttitel alternative Titel (je mit Sprache, zum Beispiel einen deutschen und einen englischen), wenn ich nach einem davon suche, dann finde ich dasselbe Spiel (Klärung 3).
  3. Gegeben ich suche nach einem Verlag, dann erhalte ich dessen Spiele; ein Spiel kann mehreren Verlagen zugeordnet sein (Klärung 4).
  4. Gegeben eine Trefferliste, wenn ich nach Spielerzahl, Spieldauer, Mindestalter, Genre oder Mechanik filtere, dann enthält sie nur Spiele, die zu allen gewählten Filtern passen (Klärung 13).
  5. Gegeben mehr Treffer als auf eine Seite passen, wenn ich bis zum Ende scrolle, dann werden weitere nachgeladen.
  6. Gegeben ich suche ohne Treffer, dann sehe ich einen Hinweis und die Möglichkeit, das Spiel zu melden (KAT-04).
  7. Gegeben ein mobiles 4G-Profil (mindestens 10 Mbit/s, etwa 100 ms Round-Trip-Zeit), dann liefern 95 Prozent der Suchen gegen Staging die ersten Treffer in höchstens 2 Sekunden (Klärung 14).
  8. Gegeben ich habe keinen Suchbegriff eingegeben, wenn ich einen oder mehrere Filter (Genre, Mechanik, Spielerzahl, Spieldauer, Mindestalter) wähle, dann sehe ich alle Katalogspiele, die zu allen gewählten Filtern passen, und kann so neue Spiele entdecken (Klärung 13).

KAT-02 Spieldetailseite

  1. Gegeben ich öffne ein Spiel, dann sehe ich Titel, Cover, Erscheinungsjahr, Verlag, Spielerzahl, Spieldauer, Mindestalter, Genre, Mechanik, Kategorie und Beschreibung.
  2. Gegeben eine Angabe fehlt im Katalog, dann wird sie weggelassen statt als leere Zeile gezeigt.
  3. Gegeben das Spiel steht in meiner Sammlung, auf der Wunschliste oder der Einkaufsliste, dann sehe ich den Status und kann ihn von dort ändern; ein Spiel steht dabei immer in genau einer Liste (Klärung 1).
  4. Gegeben ich habe das Spiel nirgends eingetragen, dann kann ich es mit einer Aktion zur Sammlung, Wunschliste oder Einkaufsliste hinzufügen.
  5. Gegeben Angaben stammen von BGG, dann zeigt die Seite „Powered by BGG“ mit Link, sobald die Lizenz das verlangt. In R1 ist der Katalog manuell gepflegt; das Kriterium greift erst mit Daten aus BGG (Klärung 24).
  6. Gegeben ich habe Partien zu diesem Spiel, dann sehe ich einen Einstieg zur Spielstatistik (PAR-08).
  7. Gegeben Titel oder Beschreibung liegen nur in einer anderen Sprache als der Oberfläche vor, dann sehe ich einen sichtbaren Sprachhinweis, zum Beispiel „Beschreibung auf Englisch“ (Klärung 48).

KAT-03 Erweiterungen und Editionen

  1. Gegeben ein Basisspiel hat Erweiterungen, wenn ich seine Detailseite öffne, dann sehe ich die Erweiterungen verlinkt; eine Erweiterung ist ein eigener Katalogeintrag mit Verweis auf ihr Basisspiel, und auf ihrer Detailseite sehe ich das Basisspiel verlinkt (Klärung 5).
  2. Gegeben ein Spiel gibt es in mehreren Editionen oder Sprachfassungen, dann sind sie als Varianten desselben Spiels erkennbar.
  3. Gegeben ich füge ein Spiel mit Varianten zur Sammlung hinzu, dann kann ich optional die Edition wählen, die ich besitze; ohne Auswahl wird das Spiel ohne Edition gespeichert (Klärung 28).
  4. Gegeben ich besitze das Basisspiel und füge eine Erweiterung hinzu, dann wird sie in meiner Sammlung beim Basisspiel zugeordnet angezeigt.
  5. Gegeben ich besitze eine Erweiterung ohne Basisspiel, dann ist das erlaubt und wird nicht als Fehler behandelt.
  6. Gegeben ich erfasse eine Partie zu einem Spiel mit Varianten, dann kann ich optional die Edition wählen (Klärung 28).
  7. Gegeben ich setze ein Spiel auf die Wunsch- oder Einkaufsliste, dann wird keine Edition abgefragt oder gespeichert (Klärung 28).

KAT-04 Fehlendes Spiel melden

  1. Gegeben ich finde ein Spiel nicht, wenn ich Titel (Pflicht), Verlag, Erscheinungsjahr und optional einen Link angebe, dann wird die Meldung gespeichert und ich erhalte eine Bestätigung.
  2. Gegeben es gibt schon einen sehr ähnlichen Katalogeintrag, wenn ich melden will, dann sehe ich ihn zuerst und muss ausdrücklich bestätigen, dass mein Spiel ein anderes ist. „Sehr ähnlich“ heißt: gleicher normalisierter Titel (Groß-/Kleinschreibung, Sonderzeichen und Artikel ignoriert) oder Titel-Ähnlichkeit von mindestens 0,8 (Trigramm) bei Erscheinungsjahr ± 1 (Klärung 15).
  3. Gegeben ich habe ein Spiel gemeldet, dann kann ich es als vorläufigen Eintrag in meine Sammlung oder Listen aufnehmen; der Eintrag ist nur für mich sichtbar.
  4. Gegeben die Meldung wurde freigegeben, dann ersetzt der Katalogeintrag meinen vorläufigen Eintrag, ohne dass meine eigenen Angaben verloren gehen, und ich sehe das als Hinweis in der App am Eintrag (Klärung 26).
  5. Gegeben die Meldung wurde mit einem anderen Eintrag zusammengeführt oder unter Verweis auf einen vorhandenen Eintrag abgelehnt, dann sehe ich das als Hinweis in der App am vorläufigen Eintrag (keine E-Mail), und mein vorläufiger Eintrag verweist auf den richtigen Eintrag (Klärungen 26, 45).
  6. Gegeben die Meldung wurde ohne Zieleintrag abgelehnt, dann bleibt mein vorläufiger Eintrag privat bestehen und ist als „abgelehnt“ markiert (Klärung 26).
  7. Gegeben ich habe heute schon 10 Meldungen abgeschickt, wenn ich eine weitere melden will, dann wird sie nicht gespeichert und ich sehe einen Hinweis auf das Tageslimit (Klärung 27). Meldungen, die der BGG-Import automatisch anlegt (SAM-08 Kriterium 4), zählen nicht auf dieses Limit (N12).
  8. Gegeben ich habe eine Meldung abgeschickt, dann bleibt sie im Status „offen“, bis der Admin sie manuell bearbeitet; eine automatische Freigabe gibt es nicht (Klärungen 6, 27, 44).

KAT-05 Katalogdaten laden und aktuell halten

In R1 wird der Katalog nur manuell gepflegt; ein Import kommt erst mit einer zugelassenen Quelle bzw. der BGG-Lizenz (Klärung 24). Der Admin pflegt Katalog und Meldungen über Supabase Studio/SQL; eine Admin-Oberfläche in der App gibt es bis QUE-08 (R4) nicht (Klärung 44). Das Datenmodell für den späteren Import entsteht trotzdem schon in R1 (Klärung 7).

  1. Zurückgestellt bis zur Lizenz (Klärung 24): Gegeben eine zugelassene Quelle, wenn der Import läuft, dann werden neue Spiele angelegt und geänderte aktualisiert, ohne manuell gepflegte Felder zu überschreiben.
  2. Gegeben ein Katalogeintrag, dann hat er eine eigene Shuffle-ID (F2). Zurückgestellt bis zur Lizenz (Klärung 24): optional die Kennung der Quelle (zum Beispiel BGG) samt Quellenangabe; die Felder dafür sind ab R1 im Datenmodell vorhanden (Klärung 7).
  3. Zurückgestellt bis zur Lizenz (Klärung 24): Gegeben die Quelle ist nicht erreichbar oder liefert fehlerhafte Daten, dann bleibt der Katalog unverändert, der Fehler wird protokolliert und die App funktioniert normal weiter.
  4. Gegeben der Admin bearbeitet, blendet aus oder führt Einträge zusammen (in R1 über Supabase Studio/SQL), dann sind ausgeblendete Einträge in der App nicht mehr auffindbar, und manuell gepflegte Felder sind als solche gekennzeichnet, damit ein späterer Import sie nicht überschreibt (Klärungen 7, 44).
  5. Gegeben Meldungen aus KAT-04, dann kann der Admin sie über Supabase Studio/SQL freigeben, mit einem Eintrag zusammenführen oder ablehnen; Status (offen, freigegeben, abgelehnt, zusammengeführt) und gegebenenfalls der Zieleintrag werden gespeichert (Klärungen 6, 44).
  6. Zurückgestellt bis zur Lizenz (Klärung 24): Gegeben Cover und Texte einer Quelle, dann werden sie nur angezeigt, wenn deren Nutzungsbedingungen es erlauben; die Erlaubnis ist je Quelle vermerkt. Das Feld für die Erlaubnis je Quelle ist ab R1 im Datenmodell vorhanden (Klärung 7).
  7. Gegeben R1 geht live, dann enthält der Katalog einen manuell gepflegten Startbestand von etwa 200 Spielen, den der Admin (Chris) per Supabase Studio bzw. Seed einpflegt (Klärung 24, N11).
  8. Gegeben die Admin-Pflege über Supabase Studio/SQL, dann ist der Ablauf für Bearbeiten, Ausblenden, Zusammenführen und das Bearbeiten von Meldungen im Repo dokumentiert (Klärung 44).
  9. Gegeben ein Nutzer ohne Admin-Rolle, wenn er über die App oder direkt über die Schnittstelle Katalogeinträge oder fremde Meldungen ändern will, dann wird der Zugriff verweigert; die Admin-Rolle existiert in R1 nur als Datenbankrolle (Klärung 44).
  10. Gegeben ein Spiel aus dem Startbestand, dann enthält es nur Fakten (Titel, Verlag, Erscheinungsjahr, Spielerzahl, Spieldauer, Mindestalter, Genre, Mechanik); fremde Cover und fremde Beschreibungstexte werden nicht übernommen, stattdessen zeigt die App ein Platzhalter-Cover und einen eigenen Kurztext (N11).

SAM – Sammlung & Listen

SAM-01 Spiel zur Sammlung hinzufügen

  1. Gegeben ich sehe ein Spiel in der Suche oder auf der Detailseite, wenn ich „Zur Sammlung“ wähle, dann erscheint es in meiner Sammlung mit dem Datum des Hinzufügens.
  2. Gegeben das Spiel ist schon in meiner Sammlung, dann entsteht kein zweiter Eintrag, sondern ich sehe den vorhandenen.
  3. Gegeben ich bin offline, wenn ich ein Spiel hinzufügen will, dann sehe ich einen Hinweis, dass dies eine Verbindung braucht.
  4. Gegeben ich suche ein Spiel, dann gelange ich in höchstens zwei Schritten vom Suchergebnis zum Eintrag in der Sammlung.
  5. Gegeben das Spiel steht auf meiner Wunsch- oder Einkaufsliste, wenn ich „Zur Sammlung“ wähle, dann wird es wie in SAM-06 übernommen und steht danach nur noch in der Sammlung (Klärung 1).

SAM-02 Eigene Angaben pro Spiel

  1. Gegeben ein Spiel in meiner Sammlung, wenn ich es bearbeite, dann kann ich Zustand (neu/eingeschweißt, sehr gut, gut, gebraucht, beschädigt), Kaufdatum, Notiz (bis 1000 Zeichen), Standort (Freitext) und Tags erfassen. Der Kaufpreis entfällt in R1 (Klärungen 2, 29).
  2. Gegeben ich lasse Felder leer, dann ist das erlaubt; alle Angaben sind optional.
  3. Gegeben das Kaufdatum liegt in der Zukunft, dann kann ich nicht speichern und sehe den Fehler am Feld. Die Prüfung „Preis negativ“ entfällt mit dem Kaufpreis (Klärung 2).
  4. Gegeben ich vergebe Tags, dann schlägt die App meine bisherigen Tags vor, damit sich Schreibweisen nicht verdoppeln.
  5. Gegeben ich ändere Angaben, dann bleiben sie beim BGG-Import erhalten (SAM-09).
  6. Gegeben ich erfasse einen Standort, dann schlägt die App meine bisherigen Standorte vor; Tags und Standorte haben in R1 keine eigene Verwaltung, sie entstehen durch Nutzung (Klärung 29).

SAM-03 Sammlung durchsuchen, filtern und sortieren

  1. Gegeben meine Sammlung, wenn ich einen Titel eingebe, dann zeigt die Liste nur passende Spiele.
  2. Gegeben ich filtere nach Spielerzahl, Spieldauer, Tags, Standort oder Zustand, dann zeigt die Liste nur Spiele, die zu allen Filtern passen, und ich sehe die Zahl der Treffer.
  3. Gegeben ich sortiere nach Titel, Hinzufügedatum, Erscheinungsjahr oder Spieldauer, dann ändert sich die Reihenfolge entsprechend.
  4. Gegeben meine Sammlung hat 1000 Spiele, dann liegt ein Such- oder Filterergebnis auf einem Mittelklasse-Gerät in höchstens 300 ms vor, und das Scrollen läuft ohne sichtbares Ruckeln (Klärung 16).
  5. Gegeben meine Sammlung ist leer, dann sehe ich einen Hinweis mit dem Weg zum Hinzufügen; den Weg zum BGG-Import sehe ich nur, wenn der Import verfügbar ist (BGG-Lizenz) (Klärung 30).
  6. Gegeben meine Wunsch- oder Einkaufsliste, dann kann ich nach Titel suchen und sortieren; Filter gibt es dort nicht (Klärung 30).

SAM-04 Wunschliste mit Priorität

  1. Gegeben ein Spiel, wenn ich es auf die Wunschliste setze, dann kann ich eine Priorität (hoch, mittel, niedrig) und eine Notiz angeben.
  2. Gegeben das Spiel ist schon in meiner Sammlung, wenn ich es auf die Wunschliste setzen will, dann sehe ich einen Hinweis und kann es nicht auf die Wunschliste setzen (Klärung 1).
  3. Gegeben meine Wunschliste, dann kann ich nach Priorität oder Datum sortieren.
  4. Gegeben ich entferne ein Spiel von der Wunschliste, dann kann ich das 5 Sekunden lang rückgängig machen (Klärung 17).

SAM-05 Einkaufsliste führen

1. entfällt (Klärung 2): Händler, geplanter Preis und Link kommen nach R1. Das Hinzufügen selbst regelt jetzt Kriterium 5.

2. entfällt (Klärungen 2, 31): Die Summe der geplanten Preise kommt nach R1.

  1. Gegeben ich hake ein Spiel als gekauft ab, dann fragt mich die App, ob ich es in die Sammlung übernehmen will (SAM-06).
  2. Gegeben ich entferne ein Spiel von der Einkaufsliste, dann kann ich das 5 Sekunden lang rückgängig machen (Klärung 17).
  3. Gegeben ein Spiel, wenn ich es auf die Einkaufsliste setze, dann steht es dort mit dem Datum des Hinzufügens, und ich kann eine Notiz angeben (Klärungen 2, 32).
  4. Gegeben das Spiel ist schon in meiner Sammlung, wenn ich es auf die Einkaufsliste setzen will, dann sehe ich einen Hinweis und kann es nicht auf die Einkaufsliste setzen (Klärung 1).
  5. Gegeben ich habe ein Spiel als gekauft abgehakt, wenn ich die Übernahme in die Sammlung ablehne, dann bleibt es unverändert auf der Einkaufsliste (Klärung 31).

SAM-06 In die Sammlung übernehmen

  1. Gegeben ein Spiel auf der Wunsch- oder Einkaufsliste, wenn ich es übernehme, dann steht es in der Sammlung und ist von der Liste verschwunden.
  2. Gegeben das Spiel hatte eine Notiz, dann wird sie in die Sammlung übernommen; als Kaufdatum steht heute und ist änderbar. Eine Preisübernahme entfällt (Klärungen 2, 32).

3. entfällt (Klärungen 1, 32): Ein Spiel kann nicht gleichzeitig in Sammlung und Liste stehen, ein Duplikat ist ausgeschlossen.

  1. Gegeben ich habe übernommen, dann kann ich das 5 Sekunden lang rückgängig machen; das Spiel steht danach wieder auf der ursprünglichen Liste (Klärung 17).

SAM-07 BGG-Konto verknüpfen (abhängig von der Lizenz)

  1. Gegeben ich gebe meinen BGG-Nutzernamen ein, wenn BGG ihn kennt, dann ist er mit meinem Konto verknüpft und im Profil gespeichert, in R1 nicht öffentlich.
  2. Gegeben BGG kennt den Namen nicht, dann sehe ich eine verständliche Fehlermeldung.
  3. Gegeben die BGG-Sammlung lässt sich nicht abrufen, dann erklärt mir die App, was ich auf der BGG-Seite prüfen kann.
  4. Gegeben ich löse die Verknüpfung, dann wird der Name entfernt und bereits importierte Spiele bleiben erhalten.
  5. Gegeben die Verknüpfung, dann fragt und speichert die App niemals mein BGG-Passwort.
  6. Gegeben mein Konto ist schon mit einem BGG-Namen verknüpft, dann kann ich keinen zweiten zusätzlich verknüpfen; ein Konto hat höchstens eine BGG-Verknüpfung (Klärung 33).
  7. Gegeben derselbe BGG-Name ist schon mit einem anderen Shuffle-Konto verknüpft, wenn ich ihn verknüpfe, dann ist das erlaubt (BGG-Sammlungen sind öffentlich) (Klärung 33).

SAM-08 Sammlung und Wunschliste aus BGG importieren

  1. Gegeben ein verknüpftes BGG-Konto, wenn ich den Import starte, dann sehe ich den Fortschritt und danach eine Zusammenfassung: übernommen, bereits vorhanden, vorläufig angelegt (Klärung 12).
  2. Gegeben der Import, dann werden die BGG-Status so übernommen: „owned“ → Sammlung; „wishlist“ und „want to buy“ → Wunschliste; „preordered“ → Einkaufsliste; „want to play“ wird ignoriert. Ist ein Spiel bei BGG zugleich besessen und gewünscht, kommt es in die Sammlung (Klärungen 1, 34).
  3. Gegeben ein BGG-Spiel ist im Katalog über seine BGG-Kennung bekannt, dann wird es diesem Eintrag zugeordnet.
  4. Gegeben ein BGG-Spiel fehlt im Katalog, dann wird es automatisch als vorläufiger privater Eintrag (KAT-04) angelegt und übernommen, in der Zusammenfassung als „vorläufig angelegt“ gezeigt, und eine Meldung an den Admin entsteht automatisch (Klärung 12).
  5. Gegeben ich breche den Import ab oder er schlägt fehl, dann bleibt mein Bestand in einem konsistenten Zustand: nichts ist halb übernommen.
  6. Gegeben BGG antwortet mit einem Fehler oder einer Begrenzung, dann sehe ich eine verständliche Meldung und kann es später erneut versuchen.
  7. Gegeben der Importdialog, dann zeigt er „Powered by BGG“ mit Link.
  8. Gegeben ein Spiel meiner BGG-Wunschliste hat eine BGG-Priorität, dann wird sie so übernommen: 1–2 → hoch, 3 → mittel, 4–5 → niedrig (Klärung 34).
  9. Gegeben meine BGG-Sammlung oder -Wunschliste enthält Erweiterungen, dann werden sie ebenfalls importiert (Klärung 34).
  10. Gegeben der Import legt nach Kriterium 4 automatisch Meldungen an, dann zählen sie nicht auf das Tageslimit aus KAT-04 Kriterium 7, sind als „aus Import“ gekennzeichnet und je Spiel (BGG-Kennung) dedupliziert: Für ein Spiel, zu dem schon eine offene Meldung aus einem Import besteht, entsteht keine weitere (N12). Die Deduplizierung gilt je Nutzer: Jeder Nutzer hat höchstens eine offene Import-Meldung je BGG-Spiel; Meldungen verschiedener Nutzer zum selben Spiel bleiben getrennt und werden beim Konto-Löschen mit dem jeweiligen Nutzer gelöscht (N12a).

SAM-09 BGG-Import wiederholen und abgleichen

  1. Gegeben der Import lief schon einmal, wenn ich ihn erneut starte, dann erkennt die App nur die Änderungen: neue Spiele, bei BGG entfernte Spiele und Wechsel zwischen Sammlung, Wunschliste und Einkaufsliste (Zuordnung wie SAM-08 Kriterium 2).
  2. Gegeben Änderungen wurden erkannt, dann sehe ich sie als Liste und übernehme sie erst nach meiner Bestätigung.
  3. Gegeben der Abgleich, dann werden meine eigenen Angaben (SAM-02) nie überschrieben.
  4. Gegeben ich habe ein Spiel in Shuffle selbst hinzugefügt, also nicht aus einem BGG-Import übernommen, dann wird es nicht entfernt, nur weil es bei BGG fehlt (Klärung 35).
  5. Gegeben ein Spiel wurde bei BGG entfernt, dann wird es in Shuffle nur nach meiner Bestätigung entfernt.
  6. Gegeben in Shuffle stehen selbst hinzugefügte Spiele, die bei BGG fehlen, wenn ich den Abgleich starte, dann werden sie im Abgleichsdialog hervorgehoben, damit ich sie bei BGG nachpflegen kann; außerhalb des Abgleichsdialogs gibt es keine Hervorhebung (Klärung 35).

PAR – Partien & Statistik

PAR-01 Partie erfassen

  1. Gegeben ich erfasse eine Partie, wenn ich ein Spiel und ein Datum ohne Uhrzeit angebe (Standard: heute), dann wird sie gespeichert und erscheint im Verlauf; Dauer in Minuten, Ort und Notiz sind optional (Klärungen 11, 36).
  2. Gegeben das Datum liegt in der Zukunft, dann kann ich nicht speichern.
  3. Gegeben ich wähle das Spiel, dann werden Spiele aus meiner Sammlung zuerst angeboten; meine vorläufigen Spiele (KAT-04) sind ebenfalls wählbar; weitere Spiele, auch solche von meiner Wunschliste, finde ich über die Katalogsuche (Klärung 36).
  4. Gegeben ich bin in der iOS- oder Android-App offline, dann wird die Partie lokal gespeichert, ist als „noch nicht synchronisiert“ gekennzeichnet und wird bei Verbindung automatisch übertragen.
  5. Gegeben eine nicht synchronisierte Partie, wenn ich die App schließe oder das Gerät neu starte, dann geht sie nicht verloren.
  6. Gegeben ich bin in der App offline, dann kann ich Spiele aus meiner Sammlung wählen; die Katalogsuche braucht eine Verbindung und zeigt das als Hinweis an.
  7. Gegeben die Übertragung einer Offline-Partie schlägt wiederholt fehl, dann bleibt sie erhalten, und ich sehe, dass sie noch aussteht.
  8. Gegeben eine nicht synchronisierte Partie, dann zählt sie lokal schon in Verlauf (PAR-06) und Statistik (PAR-07, PAR-08) mit und ist dort als „noch nicht synchronisiert“ gekennzeichnet (Klärung 36).
  9. Gegeben ich bin in der App offline, dann funktionieren Gastvorschläge (PAR-02) und Wertungsbögen (PAR-04) aus dem lokalen Speicher (Klärung 36).
  10. Gegeben ich nutze Shuffle im Browser und bin offline, wenn ich eine Partie erfassen will, dann sehe ich den Hinweis „Verbindung nötig“; die Offline-Erfassung gibt es in R1 nur in den Apps (Klärung 36, Abweichung im PR begründen).

PAR-02 Mitspieler hinzufügen

  1. Gegeben ich erfasse eine Partie, dann bin ich standardmäßig als Mitspieler eingetragen und kann mich entfernen.
  2. Gegeben ich füge einen Gast mit Namen hinzu, dann braucht er kein Konto; der Name ist nur für mich sichtbar.
  3. Gegeben ich habe einen Gast schon einmal eingetragen, dann wird er mir bei der nächsten Partie vorgeschlagen.
  4. Gegeben ein Mitspielername kommt in der Partie schon vor (Vergleich ohne Groß- und Kleinschreibung), dann kann ich ihn nicht doppelt hinzufügen und sehe einen Hinweis; ein Gast darf aber so heißen wie ich (Klärung 37).
  5. Gegeben eine Partie, dann kann sie bis zu 20 Mitspieler haben und mindestens einen.
  6. Gegeben ich bearbeite den Namen eines Gastes in der Gästeliste, dann ändert er sich in meinen bisherigen Partien mit.
  7. Gegeben ein Gast in meiner Gästeliste, wenn er in keiner Partie vorkommt, dann kann ich ihn löschen; kommt er in mindestens einer Partie vor, kann ich ihn nur umbenennen (Klärung 37).
  8. Gegeben ich gebe einen Gastnamen ein, wenn er leer ist oder länger als 30 Zeichen, dann kann ich ihn nicht speichern und sehe den Fehler am Feld (Klärung 37).

PAR-03 Ergebnis erfassen

  1. Gegeben eine Partie, wenn ich je Mitspieler eine Punktzahl eintrage (ganze oder Dezimalzahl, auch negativ), dann wird die Platzierung automatisch daraus abgeleitet, gemäß der Wertungsrichtung des Spiels (Kriterium 8).
  2. Gegeben zwei Mitspieler haben gleich viele Punkte, dann teilen sie sich den Platz.
  3. Gegeben ein Spiel ohne Punkte, wenn ich Platzierungen oder nur den Sieger angebe, dann wird das Ergebnis so gespeichert.
  4. Gegeben ein kooperatives Spiel, wenn ich es als kooperativ markiere, dann erfasse ich nur „gewonnen“ oder „verloren“ für alle gemeinsam; ein gemeinsamer Sieg zählt in der Statistik für alle Mitspieler als Sieg (Klärung 38).
  5. Gegeben ein Teamspiel, wenn ich Mitspieler Teams zuordne, dann erfasse ich Punkte und Ergebnis je Team, und in der Statistik zählt ein Sieg für alle Mitglieder des Teams (Klärung 38).
  6. Gegeben ich lasse das Ergebnis leer, dann wird die Partie ohne Ergebnis gespeichert; sie zählt in der Statistik als gespielt, aber nicht für Siegquote und Bestwerte.
  7. Gegeben ich überschreibe die automatisch berechnete Platzierung, dann gilt meine Eingabe.
  8. Gegeben ein Spiel, dann kann ich je Spiel einstellen, ob die höchste oder die niedrigste Punktzahl gewinnt; die Einstellung gilt für die Ableitung der Platzierung (Kriterium 1) und für Bestwerte (PAR-08) (Klärung 38).

PAR-04 Wertungsbogen je Spiel

  1. Gegeben ich lege für ein Spiel Wertungskategorien an (zum Beispiel Siedlungen, Straßen), dann kann ich je Mitspieler und Kategorie Punkte eintragen, und die Summe wird automatisch gebildet.
  2. Gegeben ich habe Kategorien einmal angelegt, wenn ich dieses Spiel wieder erfasse, dann werden sie mir vorgeschlagen, in der gespeicherten Reihenfolge.
  3. Gegeben ich ändere die Kategorien, dann behalten bereits erfasste Partien ihre Werte; gelöschte Kategorien bleiben in alten Partien sichtbar und sind als „gelöscht“ markiert (Klärung 39).
  4. Gegeben ich will keinen Wertungsbogen, dann kann ich die Gesamtpunktzahl direkt eintragen (PAR-03).
  5. Gegeben Wertungsbögen, dann sind sie in R1 nur für mich sichtbar.
  6. Gegeben ein Spiel, dann habe ich genau einen Wertungsbogen dafür (Klärung 39).
  7. Gegeben ich trage in einer Kategorie negative Punkte ein, dann ist das erlaubt und fließt so in die Summe ein (Klärung 39).

PAR-05 Partie bearbeiten und löschen

  1. Gegeben eine gespeicherte Partie, wenn ich sie öffne, dann kann ich alle Angaben ändern.
  2. Gegeben ich lösche eine Partie, wenn ich die Rückfrage bestätige, dann ist sie weg und zählt nicht mehr in Verlauf und Statistik.
  3. Gegeben ich ändere oder lösche eine Partie, dann stimmt die Statistik sofort danach.
  4. Gegeben eine noch nicht synchronisierte Partie, dann kann ich sie bearbeiten und löschen wie jede andere.
  5. Gegeben ich habe dieselbe Partie offline auf zwei Geräten bearbeitet, wenn beide synchronisieren, dann gilt die letzte Änderung, und ich sehe einen Hinweis, dass eine andere Änderung überschrieben wurde (Klärung 36).

PAR-06 Partienverlauf

  1. Gegeben meine Partien, dann sehe ich sie als Liste, neueste zuerst, mit Spiel, Datum, Mitspielern und Sieger.
  2. Gegeben ich filtere nach Spiel, Zeitraum, Mitspieler oder Ort, dann zeigt die Liste nur passende Partien.
  3. Gegeben ich tippe eine Partie an, dann sehe ich alle Details inklusive Ergebnis und Wertungsbogen.
  4. Gegeben ich habe noch keine Partie erfasst, dann sehe ich einen Hinweis mit dem Weg zur ersten Partie.
  5. Gegeben sehr viele Partien, dann werden weitere beim Scrollen nachgeladen.
  6. Gegeben nicht synchronisierte Partien, dann erscheinen sie im Verlauf und sind als „noch nicht synchronisiert“ gekennzeichnet (Klärung 36).

PAR-07 Persönliche Statistik

  1. Gegeben ich wähle einen Zeitraum (gesamt, Jahr, Monat oder frei), dann sehe ich Anzahl der Partien, Anzahl verschiedener gespielter Spiele, Gesamtspielzeit in Stunden und Siegquote.
  2. Gegeben die Siegquote, dann ist sie der Anteil der Partien mit Sieg an allen Partien mit Ergebnis, in denen ich Mitspieler bin; als Sieg zählen Platz 1 (auch geteilt), ein gewonnenes kooperatives Spiel und ein Sieg meines Teams (Klärungen 37, 38).
  3. Gegeben Partien ohne Dauer, dann zählen sie nicht in die Gesamtspielzeit, und ich sehe, wie viele es sind.
  4. Gegeben ich sehe die meistgespielten Spiele, dann gibt es zwei Ranglisten (Top 10): nach Anzahl der Partien und nach Spielzeit.
  5. Gegeben der Verlauf, dann sehe ich die Partien pro Monat als Diagramm; beim Zeitraum „gesamt“ zeigt es die letzten 24 Monate (Klärung 40).
  6. Gegeben die Statistik, dann stimmen ihre Zahlen mit dem Partienverlauf (PAR-06) im selben Zeitraum überein, gefiltert auf Partien, in denen ich Mitspieler bin (Klärung 37).
  7. Gegeben ich habe keine Partien im Zeitraum, dann sehe ich einen Leerzustand statt Nullen und leerer Diagramme.
  8. Gegeben Partien, in denen ich nicht Mitspieler bin, dann zählen sie in keine Zahl der persönlichen Statistik, auch nicht in die Spielzeit (Klärungen 37, 40).
  9. Gegeben ein Diagramm, dann gibt es eine Tabellenansicht als Alternative und eine Zusammenfassung als Screenreader-Text (Klärung 46).

PAR-08 Statistik je Spiel

  1. Gegeben ein Spiel mit Partien, dann sehe ich Anzahl der Partien, durchschnittliche Dauer, Gesamtdauer und Siegquote für dieses Spiel; die Siegquote zählt wie in PAR-07 Kriterium 2.
  2. Gegeben ein Spiel mit Punkten, dann sehe ich als Bestwert meine eigene beste Punktzahl gemäß Wertungsrichtung (PAR-03 Kriterium 8) mit Datum der Partie (Klärung 41).
  3. Gegeben ein Spiel ohne Punkte, dann wird kein Bestwert angezeigt.
  4. Gegeben das Spiel, dann sehe ich die fünf häufigsten Mitspieler; Gäste zählen dazu (Klärung 41).
  5. Gegeben die Detailseite eines Spiels (KAT-02), dann komme ich von dort zur Statistik des Spiels.
  6. Gegeben Partien dieses Spiels, in denen ich nicht Mitspieler bin, dann zählen sie wie in PAR-07 Kriterium 8 nicht in die Statistik je Spiel (Klärungen 37, 40, 41; von Chris bestätigt, siehe „PAR-08“ in r1-klaerungen.md).

QUE – Querschnitt-Stories

QUE-09 Startseite: persönliches Dashboard (neu, Klärung 42)

Als angemeldeter Nutzer möchte ich beim Öffnen der App eine persönliche Startseite mit meinen zuletzt gespielten Partien, meiner Wunschliste, einer Kurzstatistik und einer Schnellaktion zum Erfassen einer Partie sehen, damit ich schnell dort weitermache, wo ich zuletzt war (F18, N8). Nächste Termine (F18) kommen erst mit den Gruppen in R2; die Einkaufsliste erscheint nicht auf dem Dashboard (N8).

  1. Gegeben ich bin angemeldet, wenn ich die App öffne, dann sehe ich als Startseite mein persönliches Dashboard mit den Bereichen „Zuletzt gespielt“, „Wunschliste“ und „Kurzstatistik“ sowie der Schnellaktion „Partie erfassen“ (N8).
  2. Gegeben ich habe Partien erfasst, dann zeigt „Zuletzt gespielt“ meine 5 neuesten Partien, neueste zuerst, mit Spiel, Datum und Sieger wie im Partienverlauf (PAR-06 Kriterium 1) (N6).
  3. Gegeben ich tippe eine Partie unter „Zuletzt gespielt“ an, dann sehe ich ihre Details (PAR-06 Kriterium 3); über „Alle anzeigen“ gelange ich zum Partienverlauf.
  4. Gegeben meine Wunschliste enthält Spiele, dann zeigt der Bereich „Wunschliste“ bis zu 5 Spiele daraus mit Titel, Cover und Priorität, sortiert nach Priorität (hoch zuerst) und bei gleicher Priorität die zuletzt hinzugefügten zuerst; ein Tipp auf ein Spiel öffnet seine Detailseite (KAT-02), „Alle anzeigen“ öffnet die Wunschliste (N6, N7).
  5. Gegeben ich habe noch keine Partie erfasst, dann zeigt „Zuletzt gespielt“ einen Hinweis mit dem Weg zur ersten Partie.
  6. Gegeben meine Wunschliste ist leer, dann zeigt der Bereich „Wunschliste“ einen Hinweis mit dem Weg zur Katalogsuche.
  7. Gegeben ich habe eine Partie erfasst, bearbeitet oder gelöscht oder meine Wunschliste geändert, wenn ich zur Startseite zurückkehre, dann sind die Änderungen ohne manuelles Neuladen sichtbar.
  8. Gegeben ich bin in der App offline, dann zeigt „Zuletzt gespielt“ auch nicht synchronisierte Partien, gekennzeichnet wie in PAR-01 Kriterium 8; der Bereich „Wunschliste“ zeigt einen Hinweis, dass eine Verbindung nötig ist.
  9. Gegeben ich wähle auf dem Dashboard die Schnellaktion „Partie erfassen“, dann öffnet sich die Erfassung einer neuen Partie (PAR-01); in der App funktioniert das auch offline (PAR-01 Kriterium 4), im Browser sehe ich offline den Hinweis „Verbindung nötig“ (PAR-01 Kriterium 10) (N8).
  10. Gegeben ich habe Partien erfasst, dann zeigt die „Kurzstatistik“ die Anzahl meiner Partien im laufenden Monat und meine Siegquote über alle meine Partien (Zeitraum „gesamt“), gezählt wie in PAR-07 Kriterien 2 und 8, und einen Link zur persönlichen Statistik (PAR-07) (N8, N8a).
  11. Gegeben ich habe im laufenden Monat keine Partie mit mir als Mitspieler, dann zeigt die „Kurzstatistik“ für den Monat einen Hinweis statt einer Null; die Siegquote gesamt bleibt sichtbar, sofern es Partien mit Ergebnis gibt, sonst zeigt die ganze Kurzstatistik einen Leerzustand (wie PAR-07 Kriterium 7); der Link zur persönlichen Statistik bleibt sichtbar (N8, N8a).
  12. Gegeben ich habe nicht synchronisierte Partien, dann zählen sie in der „Kurzstatistik“ mit und sind gekennzeichnet wie in PAR-01 Kriterium 8.
  13. Gegeben ich bin nicht angemeldet, wenn ich die App oder die Web-Adresse öffne, dann zeigt die Startseite statt des Dashboards die Katalogsuche (KAT-01) und einen Hinweis mit dem Weg zum Anmelden und Registrieren (KTO-01); private Bereiche werden nicht angezeigt (N9).

Querschnitt für R1

Diese Kriterien gelten für jede Story in R1 und werden bei jedem Pull Request mitgeprüft.

Datenschutz (QUE-04)

Datenschutzerklärung und Nutzungsbedingungen liefert Chris vor dem Release; eine rechtliche Prüfung (inkl. Mindestalter 16 per Selbstbestätigung) ist vor dem Release nötig (Klärung 21/47).

  1. Gegeben ich registriere mich, dann sehe ich vorher Datenschutzerklärung und Nutzungsbedingungen und stimme ihnen ausdrücklich zu.
  2. Gegeben optionale Dienste, die personenbeziehbare Daten verarbeiten, dann sind sie standardmäßig aus und werden erst nach meiner Einwilligung aktiv. Ausgenommen ist die anonyme Reichweitenmessung nach Kriterium 4 (Klärung 21/47).
  3. Gegeben die Datenschutzerklärung, dann nennt sie Zwecke, Speicherdauer, Empfänger und die Löschfrist von 30 Tagen aus KTO-05 (Klärung 20).
  4. Gegeben die Reichweitenmessung in R1, dann ist sie anonym und cookielos, nutzt keine Geräte-IDs und braucht keine Einwilligung; andere Analyse- oder Tracking-Dienste gibt es in R1 nicht (Klärung 21/47). Ich kann sie freiwillig in den Einstellungen ausschalten; danach sendet die App keine Messdaten mehr (KTO-11 Kriterium 14, N5).

Sicherheit der Daten

  1. Gegeben zwei Nutzer A und B, wenn A über die App oder direkt über die Schnittstelle auf Profil, Sammlung, Listen, Partien oder Gäste von B zugreifen will, dann wird der Zugriff verweigert.
  2. Gegeben ich bin nicht angemeldet, dann kann ich keine privaten Daten lesen oder ändern; der Katalog ist auch ohne Anmeldung lesbar, aber nie veränderbar (Entscheidung O6).
  3. Gegeben jede neue Tabelle mit Nutzerdaten, dann hat sie Zugriffsregeln und mindestens einen automatischen Test, der fremden Zugriff prüft.

Sprachen (QUE-05)

  1. Gegeben ich bin nicht angemeldet, dann folgt die Sprache der Geräteeinstellung (Deutsch oder Englisch, sonst Englisch) und lässt sich ändern; bin ich angemeldet, gilt die Sprache meines Profils auf allen Geräten und lässt sich in den Einstellungen (KTO-11) ändern (N3).
  2. Gegeben jeder sichtbare Text, dann kommt er aus den Übersetzungsdateien, nicht aus dem Code.
  3. Gegeben Datum, Zahlen und Währung, dann werden sie nach Sprache und Region formatiert.
  4. Gegeben eine Übersetzung fehlt, dann erscheint der englische Text, niemals ein technischer Schlüssel.

Barrierefreiheit (QUE-06)

  1. Gegeben ein Screenreader, dann haben alle bedienbaren Elemente und Bilder eine sinnvolle Beschriftung.
  2. Gegeben Texte und Bedienelemente, dann erreichen sie mindestens den Kontrast nach WCAG AA und Touch-Ziele sind mindestens 48 dp groß.
  3. Gegeben ich vergrößere die Schrift auf 200 Prozent, dann bleibt alles les- und bedienbar, ohne dass Text abgeschnitten wird.
  4. Gegeben das Web, dann lässt sich jede Funktion per Tastatur bedienen und der Fokus ist sichtbar.

Zustände, Fehler und Netz

  1. Gegeben jede Liste und jeder Bildschirm mit Daten, dann hat er einen Ladezustand, einen Leerzustand, einen Fehlerzustand mit „Erneut versuchen“ und den Normalzustand.
  2. Gegeben ich bin offline, wenn ich eine Funktion nutze, die eine Verbindung braucht, dann sehe ich einen verständlichen Hinweis statt eines technischen Fehlers.
  3. Gegeben ein Fehler im Hintergrund, dann verliere ich keine Eingaben, die ich schon gemacht hatte.

Plattformen

  1. Gegeben jede R1-Story, dann funktioniert sie auf iOS, Android und im Web mit denselben Kriterien; Abweichungen werden im Pull Request begründet. Bekannte Abweichung: Die Offline-Erfassung von Partien gibt es in R1 nur in den Apps (PAR-01 Kriterium 10, Klärung 36).
  2. Gegeben ein großer Bildschirm im Web oder auf einem Tablet, dann nutzt das Layout die Breite sinnvoll, statt eine gestreckte Handy-Ansicht zu zeigen.

Entscheidungen zu den offenen Punkten

Beim Schreiben sind zehn Fragen entstanden, die R1 selbst betreffen. Alle zehn sind am 2. November 2026 entschieden; die Spalte „Entscheidung“ gilt als verbindlich. Die 48 Folgefragen aus dem Story-Schnitt und die Fragen N1–N14 aus dem Einarbeiten sind ebenfalls entschieden, siehe r1-klaerungen.md.

Nr Frage Entscheidung Betrifft
O1 Sollen Apple- oder Google-Login schon in R1 dabei sein? Nur E-Mail und Passwort in R1; Apple verlangt in der Regel „Sign in with Apple“, sobald andere Social-Logins angeboten werden KTO-01
O2 Muss der Anzeigename eindeutig sein? Nein; für Einladungen in R2 genügt ein Link KTO-02
O3 Reicht in R1 der Hinweis „alles privat“ statt echter Privatsphäre-Einstellungen? Ja, echte Einstellungen kommen mit R2 KTO-04
O4 Editionen: Varianten desselben Spiels oder eigene Katalogeinträge? Varianten eines Spiels; das wirkt stark auf das Datenmodell KAT-03
O5 Vorläufige private Einträge für gemeldete Spiele? Ja, sonst blockiert ein fehlendes Spiel die Erfassung KAT-04
O6 Darf der Katalog ohne Anmeldung gelesen werden? Ja, nur lesend; Anmeldung erst zum Eintragen Querschnitt Sicherheit, Web
O7 Offline Spiele wählen: nur aus der Sammlung oder per kleiner Offline-Kopie des Katalogs? Nur aus der Sammlung in R1 PAR-01
O8 Mehrfachbesitz, etwa zwei Exemplare desselben Spiels? Nein in R1, ein Eintrag je Spiel SAM-01
O9 Wertungsbögen: privat je Nutzer oder als Vorlagen im Katalog? Privat in R1, gemeinsame Vorlagen später PAR-04
O10 Passen die Zahlenwerte: Passwort ab 10 Zeichen, Anzeigename 30, Kurzbeschreibung 300, 5 Lieblingsspiele, 20 Mitspieler, Notiz 1000 Zeichen, Avatar 5 MB? So übernehmen KTO, SAM, PAR