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>
88 lines
13 KiB
Markdown
88 lines
13 KiB
Markdown
# 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. |
|