[KAT-01] Spiele suchen #3

Open
opened 2026-11-02 13:39:22 +00:00 by cschlaefke · 3 comments
Owner

Story

Als Nutzer (auch ohne Anmeldung, Entscheidung O6)
möchte ich Spiele nach Titel und Verlag suchen und nach Spielerzahl, Dauer, Alter, Genre und Mechanik filtern – auch ohne Suchbegriff,
damit ich ein Spiel schnell finde oder neue entdecke.

Akzeptanzkriterien

Quelle: requirements/20-r1-akzeptanzkriterien.md § KAT-01 (Referenz in Tests/PR: „KAT-01 Kriterium n“), Stand 2026-11-02 inkl. Klärungen

  • 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).

Querschnitt

Es gelten alle Querschnittskriterien aus 20-r1-akzeptanzkriterien.md § „Querschnitt für R1“ (Datenschutz QUE-04, Sicherheit der Daten, Sprachen QUE-05, Barrierefreiheit QUE-06, Zustände/Fehler/Netz, Plattformen).
Besonders relevant: Sicherheit der Daten Kriterium 2 (Katalog ohne Anmeldung lesbar), Zustände Kriterium 1–2 (Lade-/Leer-/Fehlerzustand, Offline-Hinweis), Plattformen Kriterium 2.

Nicht im Scope

  • Barcode-Suche
  • Offline-Katalog (Entscheidung O7)
  • Empfehlungen

Klärungen

Verbindlich laut requirements/r1-klaerungen.md (2026-11-02):

  • 3: Alternative Titel je Spiel (mit Sprache); die Suche findet alle → Kriterium 2.
  • 4: Verlag(e) je Spiel werden aufgenommen → Kriterium 3.
  • 13: Zusätzliche Filter Genre und Mechanik; Filtern funktioniert auch ohne Suchbegriff (Entdecken) → Kriterien 4, 8.
  • 14: „Normale Verbindung“ = mobiles 4G-Profil (≥ 10 Mbit/s, ~100 ms RTT); 95 % der Suchen liefern erste Treffer in ≤ 2 s, gemessen gegen Staging → Kriterium 7.

Planung

  • Epic: KAT Spielekatalog
  • Priorität: Must
  • Größe: L
  • Etappe: R1.1 Fundament
  • Abhängigkeiten: KAT-05 (#2, Katalogdaten)
  • Teilabhängigkeit: Kriterium 6 verweist auf KAT-04 (#13), das später umgesetzt wird

Referenzen

  • Akzeptanzkriterien: requirements/20-r1-akzeptanzkriterien.md § KAT-01
  • Klärungen: requirements/r1-klaerungen.md
  • Story-Entwurf: requirements/r1-story-entwurf.md (freigegeben 2026-11-02)
  • Backlog: requirements/backlog.md
## Story **Als** Nutzer (auch ohne Anmeldung, Entscheidung O6) **möchte ich** Spiele nach Titel und Verlag suchen und nach Spielerzahl, Dauer, Alter, Genre und Mechanik filtern – auch ohne Suchbegriff, **damit** ich ein Spiel schnell finde oder neue entdecke. ## Akzeptanzkriterien Quelle: `requirements/20-r1-akzeptanzkriterien.md` § KAT-01 (Referenz in Tests/PR: „KAT-01 Kriterium n“), Stand 2026-11-02 inkl. Klärungen - [ ] **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). ## Querschnitt Es gelten alle Querschnittskriterien aus `20-r1-akzeptanzkriterien.md` § „Querschnitt für R1“ (Datenschutz QUE-04, Sicherheit der Daten, Sprachen QUE-05, Barrierefreiheit QUE-06, Zustände/Fehler/Netz, Plattformen). Besonders relevant: **Sicherheit der Daten Kriterium 2** (Katalog ohne Anmeldung lesbar), **Zustände Kriterium 1–2** (Lade-/Leer-/Fehlerzustand, Offline-Hinweis), Plattformen Kriterium 2. ## Nicht im Scope - Barcode-Suche - Offline-Katalog (Entscheidung O7) - Empfehlungen ## Klärungen Verbindlich laut `requirements/r1-klaerungen.md` (2026-11-02): - **3:** Alternative Titel je Spiel (mit Sprache); die Suche findet alle → Kriterium 2. - **4:** Verlag(e) je Spiel werden aufgenommen → Kriterium 3. - **13:** Zusätzliche Filter Genre und Mechanik; Filtern funktioniert auch ohne Suchbegriff (Entdecken) → Kriterien 4, 8. - **14:** „Normale Verbindung“ = mobiles 4G-Profil (≥ 10 Mbit/s, ~100 ms RTT); 95 % der Suchen liefern erste Treffer in ≤ 2 s, gemessen gegen Staging → Kriterium 7. ## Planung - Epic: KAT Spielekatalog - Priorität: Must - Größe: L - Etappe: R1.1 Fundament - Abhängigkeiten: KAT-05 (#2, Katalogdaten) - Teilabhängigkeit: Kriterium 6 verweist auf KAT-04 (#13), das später umgesetzt wird ## Referenzen - Akzeptanzkriterien: `requirements/20-r1-akzeptanzkriterien.md` § KAT-01 - Klärungen: `requirements/r1-klaerungen.md` - Story-Entwurf: `requirements/r1-story-entwurf.md` (freigegeben 2026-11-02) - Backlog: `requirements/backlog.md`
cschlaefke added the
type/story
prio/must
size/l
needs-clarification
epic/katalog
labels 2026-11-02 13:39:22 +00:00
cschlaefke added a new dependency 2026-11-02 13:43:02 +00:00
cschlaefke added a new dependency 2026-11-02 13:43:04 +00:00
cschlaefke added a new dependency 2026-11-02 13:43:07 +00:00
cschlaefke added a new dependency 2026-11-02 13:43:21 +00:00
cschlaefke added a new dependency 2026-11-02 13:43:24 +00:00
cschlaefke added a new dependency 2026-11-02 13:43:26 +00:00
Author
Owner

Offene fachliche Fragen aus requirements/r1-story-entwurf.md, Abschnitt 5 (Nummerierung wie im Entwurf). Bitte hier beantworten; nach Klärung wird needs-clarification entfernt.

Frage 3: KAT-01 Krit. 2 vs. Datenmodell: Suche nach deutschem und englischem Titel – das Modell hat nur title und „eine Sprache je Spiel in R1“. Sind alternative Titel in R1 gefordert?

Frage 4: KAT-01 Krit. 3 / KAT-02 Krit. 1: Verlag ist gefordert, im Modell gibt es kein Verlagsfeld.

Frage 13: KAT-01 Krit. 8 ist unvollständig (kein Wenn/Dann) und nennt Genre als Filter, der in Krit. 4 fehlt. Gewünschte Filter: Spielerzahl, Dauer, Alter, Genre – auch Mechanik/Kategorie? Funktioniert der Filter auch ohne Suchbegriff (Entdecken)?

Frage 14: KAT-01 Krit. 7: Was ist eine „normale Verbindung“ (Messbedingung für 2 s)?

**Offene fachliche Fragen** aus `requirements/r1-story-entwurf.md`, Abschnitt 5 (Nummerierung wie im Entwurf). Bitte hier beantworten; nach Klärung wird `needs-clarification` entfernt. **Frage 3:** KAT-01 Krit. 2 vs. Datenmodell: Suche nach deutschem und englischem Titel – das Modell hat nur `title` und „eine Sprache je Spiel in R1“. Sind alternative Titel in R1 gefordert? **Frage 4:** KAT-01 Krit. 3 / KAT-02 Krit. 1: Verlag ist gefordert, im Modell gibt es kein Verlagsfeld. **Frage 13:** KAT-01 Krit. 8 ist unvollständig (kein Wenn/Dann) und nennt Genre als Filter, der in Krit. 4 fehlt. Gewünschte Filter: Spielerzahl, Dauer, Alter, Genre – auch Mechanik/Kategorie? Funktioniert der Filter auch ohne Suchbegriff (Entdecken)? **Frage 14:** KAT-01 Krit. 7: Was ist eine „normale Verbindung“ (Messbedingung für 2 s)?
cschlaefke added this to the R1 milestone 2026-11-02 13:53:36 +00:00
Author
Owner

Klärungen eingearbeitet (2026-11-02): Fragen 3, 4, 13, 14 laut requirements/r1-klaerungen.md. Kriterium 2 gilt jetzt für alternative Titel mit Sprache, Kriterium 3 erlaubt mehrere Verlage. Kriterium 4 hat zusätzlich die Filter Genre und Mechanik. Kriterium 7 ist messbar: 4G-Profil, 95 % ≤ 2 s, gegen Staging. Kriterium 8 ist als Wenn/Dann neu formuliert (Filtern ohne Suchbegriff). Keine offenen Fragen mehr, needs-clarification entfernt.

Klärungen eingearbeitet (2026-11-02): Fragen 3, 4, 13, 14 laut `requirements/r1-klaerungen.md`. Kriterium 2 gilt jetzt für alternative Titel mit Sprache, Kriterium 3 erlaubt mehrere Verlage. Kriterium 4 hat zusätzlich die Filter Genre und Mechanik. Kriterium 7 ist messbar: 4G-Profil, 95 % ≤ 2 s, gegen Staging. Kriterium 8 ist als Wenn/Dann neu formuliert (Filtern ohne Suchbegriff). Keine offenen Fragen mehr, `needs-clarification` entfernt.
cschlaefke removed the
needs-clarification
label 2026-11-02 14:30:40 +00:00
Author
Owner

Spec-Entwurf zur Freigabe: docs/specs/3-katalog-suche.md (Branch docs/3-kat01-spec, noch kein PR).

Kurzfassung: eine RPC search_catalog_games (security invoker, liest über catalog_games, für anon ausführbar), neue Tabelle game_alt_titles (de/en), Normalisierung search_normalize mit pg_trgm/unaccent, Seiten zu 30 mit limit/offset, neues Feature features/catalog/ mit Route /catalog. Drei PRs: 3a Backend, 3b App (parallel), 3c E2E + Messung Krit. 7 gegen Staging.

Offene Fragen (blockieren nicht, je mit Empfehlung, Details in § 9.2):

  • Spec-F1: Mehrere Genres/Mechaniken gewählt – muss ein Spiel alle haben (UND) oder eines davon? Empfehlung: alle (wörtlich „zu allen gewählten Filtern“).
  • Spec-F2: Filtersemantik – Spielerzahl n passt, wenn n im Bereich min–max; Dauer „bis X Minuten“ (30/45/60/90/120/180); Alter „ab X Jahren geeignet“ (Mindestalter ≤ X); Spiele mit fehlender Angabe werden ausgeschlossen. Empfehlung: so.
  • Spec-F3: Ohne Suchbegriff und ohne Filter: ganzen Katalog alphabetisch zeigen? Empfehlung: ja.
  • Spec-F4: Krit. 6 (Melden) hängt an #13. Empfehlung: #3 liefert Hinweis + Einstiegspunkt, Krit. 6 wird als „Hinweis erfüllt, Melden mit #13“ abgehakt, #3 wird mit PR 3c geschlossen.
  • Spec-F5: Soll „ae/oe/ue“ als Schreibweise für „ä/ö/ü“ treffen? Empfehlung: nein in R1 (nachrüstbar).
  • Spec-F6: Alternative Titel beim Zusammenführen (2b): Empfehlung: bleiben am Quell-Eintrag, Admin ergänzt am Ziel per Runbook-Schritt.
  • Spec-F7: Sprachen alternativer Titel: Empfehlung: nur de/en.

Zusätzlich bitte die Designwahlen W1–W8 (§ 9.3) bestätigen. Kein ADR nötig (§ 9.4). Umsetzung startet erst nach deiner Freigabe.

**Spec-Entwurf zur Freigabe:** [`docs/specs/3-katalog-suche.md`](https://git.cshomelabs.work/cschlaefke/Shuffle/src/branch/docs/3-kat01-spec/docs/specs/3-katalog-suche.md) (Branch `docs/3-kat01-spec`, noch kein PR). Kurzfassung: eine RPC `search_catalog_games` (security invoker, liest über `catalog_games`, für `anon` ausführbar), neue Tabelle `game_alt_titles` (de/en), Normalisierung `search_normalize` mit `pg_trgm`/`unaccent`, Seiten zu 30 mit `limit`/`offset`, neues Feature `features/catalog/` mit Route `/catalog`. Drei PRs: 3a Backend, 3b App (parallel), 3c E2E + Messung Krit. 7 gegen Staging. **Offene Fragen (blockieren nicht, je mit Empfehlung, Details in § 9.2):** - **Spec-F1:** Mehrere Genres/Mechaniken gewählt – muss ein Spiel *alle* haben (UND) oder *eines davon*? Empfehlung: **alle** (wörtlich „zu allen gewählten Filtern“). - **Spec-F2:** Filtersemantik – Spielerzahl n passt, wenn n im Bereich min–max; Dauer „bis X Minuten“ (30/45/60/90/120/180); Alter „ab X Jahren geeignet“ (Mindestalter ≤ X); Spiele mit fehlender Angabe werden ausgeschlossen. Empfehlung: **so**. - **Spec-F3:** Ohne Suchbegriff und ohne Filter: ganzen Katalog alphabetisch zeigen? Empfehlung: **ja**. - **Spec-F4:** Krit. 6 (Melden) hängt an #13. Empfehlung: #3 liefert Hinweis + Einstiegspunkt, Krit. 6 wird als „Hinweis erfüllt, Melden mit #13“ abgehakt, #3 wird mit PR 3c geschlossen. - **Spec-F5:** Soll „ae/oe/ue“ als Schreibweise für „ä/ö/ü“ treffen? Empfehlung: **nein in R1** (nachrüstbar). - **Spec-F6:** Alternative Titel beim Zusammenführen (2b): Empfehlung: bleiben am Quell-Eintrag, Admin ergänzt am Ziel per Runbook-Schritt. - **Spec-F7:** Sprachen alternativer Titel: Empfehlung: **nur de/en**. Zusätzlich bitte die Designwahlen W1–W8 (§ 9.3) bestätigen. Kein ADR nötig (§ 9.4). Umsetzung startet erst nach deiner Freigabe.
cschlaefke added the
status/spec-review
label 2026-11-03 19:51:14 +00:00
cschlaefke removed the
status/spec-review
label 2026-11-03 23:54:12 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference: cschlaefke/Shuffle#3
No description provided.