All checks were successful
Visibility is immutable, variant copying is derived from visibility, startbestand idempotency and vocabulary handling are defined, and the edition deviation from KAT-04 criterion 4 is recorded as N15. Refs #2 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
13 KiB
13 KiB
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. |
Klärungen aus Spec-Reviews (ab 2026-11-03)
| Nr | Story/Issue | Entscheidung |
|---|---|---|
| N15 | KAT-04 #13, KAT-05 #2 | Edition beim Ersetzen eines vorläufigen Eintrags (Meldung freigegeben oder zusammengeführt): Private Varianten (Editionen) des Nutzers werden nicht in den öffentlichen Katalog kopiert. Die Edition an Sammlungseintrag und Partien bleibt nur erhalten, wenn der Katalogeintrag eine gleichnamige Variante hat; sonst wird sie geleert, und die App weist darauf hin, sie neu zu wählen. Das ist eine bewusste Abweichung von KAT-04 Kriterium 4 („ohne dass meine eigenen Angaben verloren gehen“), nur für die Edition. Begründung: Private Nutzerdaten sollen nicht ungeprüft in den öffentlichen Katalog gelangen (Datensparsamkeit, Katalogqualität). Entschieden von Chris am 2026-11-03 im Review zu PR #51. Verweise: docs/specs/2-katalog-daten.md § 3.3, Risiko R10, Hinweis für Issue #13 in § 9.5. |