docs(catalog): Spec für KAT-04 Fehlendes Spiel melden (Issue #13) #58

Merged
cschlaefke merged 4 commits from docs/13-kat04-spec into main 2026-11-04 00:29:51 +00:00
Owner

Refs #13 (kein Closes). Spec: docs/specs/13-fehlendes-spiel-melden.md, zur Freigabe durch Chris vor jeder Umsetzung.

Kern der Spec

  • Jede Nutzer-Meldung legt genau einen vorläufigen privaten Eintrag an; atomare RPC report_missing_game (security invoker), Tageslimit per Trigger (Advisory-Lock, Kalendertag Europe/Berlin), Ähnlichkeitsprüfung serverseitig (find_similar_catalog_games, pg_trgm, Schwelle 0,8; Normalisierung über search_normalize aus Spec #3 + normalize_game_title).
  • Bei „abgelehnt mit Verweis“ wechselt der Nutzer selbst auf den Zieleintrag (adopt_report_target, security definer, Sperrreihenfolge wie 2c, is distinct from).
  • Frontend: features/game_reports/ mit Formular, „Meine Meldungen“, Detail, Hinweiskomponente.
  • Schnitt: 13a Backend (Refs #13), 13b Flutter (Closes #13). Vorbedingungen: 13a braucht #2 PR 2b + 2c und #3 PR 3a; Merge von 13b braucht #3 PR 3b.

Review

code-reviewer zweimal (Fachreview und Konsistenzprüfung mit Spec #3): Blocker behoben (Tageslimit scheiterte für jeden Nutzer wegen fehlendem execute auf report_day; Normalisierung vereinheitlicht mit #3; alternative Titel über title_search; Spec-F6 sachlich korrigiert). Die letzte Nacharbeit (a4c7b47) hat kein Reviewer erneut gelesen.

Entscheidungen für Chris

  • Spec-F6 – vor dem Merge von PR #57 (2c): Zähler game_reports.editions_cleared integer not null default 0 check (editions_cleared >= 0), in admin_resolve_report aus variants_cleared gesetzt (2b bleibt unverändert); 13a setzt ihn in adopt_report_target. Empfehlung: ja. Sonst Ableitung aus den Daten (Fehlalarme bei Wunsch-/Einkaufsliste) und später create or replace in 13a.
  • Spec-F1–F5, F7–F9 mit Empfehlung in § 9.2 (u. a. nur Titel Pflicht, Kalendertag Europe/Berlin, Hinweis bis „Verstanden“, Liste Sammlung vorausgewählt, #13 hängt zusätzlich von #4/#6 ab).
  • Hinweis für #14: favorite_games_own erlaubt derzeit eigene vorläufige Spiele; Klärung 23 schließt sie aus.

Nicht geprüft

Alles Spec-Annahmen; keine Implementierung, kein Lauf. Erweiterungen (pg_trgm, unaccent) auf Hetzner nicht verifiziert (prüft #3 B5).

🤖 Generated with Claude Code

Refs #13 (kein `Closes`). Spec: `docs/specs/13-fehlendes-spiel-melden.md`, zur **Freigabe durch Chris** vor jeder Umsetzung. ## Kern der Spec - Jede Nutzer-Meldung legt genau einen vorläufigen privaten Eintrag an; atomare RPC `report_missing_game` (`security invoker`), Tageslimit per Trigger (Advisory-Lock, Kalendertag Europe/Berlin), Ähnlichkeitsprüfung serverseitig (`find_similar_catalog_games`, `pg_trgm`, Schwelle 0,8; Normalisierung über `search_normalize` aus Spec #3 + `normalize_game_title`). - Bei „abgelehnt mit Verweis“ wechselt der Nutzer selbst auf den Zieleintrag (`adopt_report_target`, `security definer`, Sperrreihenfolge wie 2c, `is distinct from`). - Frontend: `features/game_reports/` mit Formular, „Meine Meldungen“, Detail, Hinweiskomponente. - Schnitt: 13a Backend (`Refs #13`), 13b Flutter (`Closes #13`). Vorbedingungen: 13a braucht #2 PR 2b + 2c und #3 PR 3a; Merge von 13b braucht #3 PR 3b. ## Review `code-reviewer` zweimal (Fachreview und Konsistenzprüfung mit Spec #3): Blocker behoben (Tageslimit scheiterte für jeden Nutzer wegen fehlendem `execute` auf `report_day`; Normalisierung vereinheitlicht mit #3; alternative Titel über `title_search`; Spec-F6 sachlich korrigiert). Die letzte Nacharbeit (a4c7b47) hat kein Reviewer erneut gelesen. ## Entscheidungen für Chris - **Spec-F6 – vor dem Merge von PR #57 (2c):** Zähler `game_reports.editions_cleared integer not null default 0 check (editions_cleared >= 0)`, in `admin_resolve_report` aus `variants_cleared` gesetzt (2b bleibt unverändert); 13a setzt ihn in `adopt_report_target`. Empfehlung: ja. Sonst Ableitung aus den Daten (Fehlalarme bei Wunsch-/Einkaufsliste) und später `create or replace` in 13a. - Spec-F1–F5, F7–F9 mit Empfehlung in § 9.2 (u. a. nur Titel Pflicht, Kalendertag Europe/Berlin, Hinweis bis „Verstanden“, Liste Sammlung vorausgewählt, #13 hängt zusätzlich von #4/#6 ab). - Hinweis für #14: `favorite_games_own` erlaubt derzeit eigene vorläufige Spiele; Klärung 23 schließt sie aus. ## Nicht geprüft Alles Spec-Annahmen; keine Implementierung, kein Lauf. Erweiterungen (`pg_trgm`, `unaccent`) auf Hetzner nicht verifiziert (prüft #3 B5). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cschlaefke added 4 commits 2026-11-03 20:31:27 +00:00
Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Normalisierung mit Akzent-Faltung, Trigramm-Index gestrichen,
Abweichung von Spec #2 3.4 vermerkt, testbare Tagesgrenze.

Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Tageslimit-Rechte (report_day), Normalisierung als Wrapper um
search_normalize aus Spec #3, Sperrreihenfolge und Rechte von
adopt_report_target, Indizes aus 2c, Testdatei 10, Edition-Hinweis
mit editions_cleared als Empfehlung.

Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
docs(catalog): Spec KAT-04 an Spec #3 und PR 2c angeglichen
All checks were successful
CI / flutter (pull_request) Successful in 1m23s
CI / web-build (pull_request) Successful in 57s
CI / supabase (pull_request) Successful in 8s
CI / supabase-tests (pull_request) Successful in 31s
CI / e2e (pull_request) Successful in 2m48s
a4c7b47073
Kandidatenschlüssel über title_search, gemeinsame Normalisierung
wörtlich aus Spec #3, pg_trgm aus 3a, Abhängigkeiten 3a/3b,
Spec-F6 korrigiert (nur 2c-Nachtrag, vor Merge von PR #57).

Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added the
status/ready-for-merge
label 2026-11-03 21:22:52 +00:00
Author
Owner

Freigabe (Chris, 2026-11-04): Spec #13 ist angenommen, alle Entscheidungen Spec-F1–F9 wie empfohlen, Spec-F6 als Option A (Spalte game_reports.editions_cleared, bereits in PR #57 umgesetzt, de830a7). Umsetzung 13a startet, wenn 2b/2c und 3a gemergt sind; 13b nach 3b.

**Freigabe (Chris, 2026-11-04):** Spec #13 ist angenommen, alle Entscheidungen Spec-F1–F9 wie empfohlen, Spec-F6 als Option A (Spalte `game_reports.editions_cleared`, bereits in PR #57 umgesetzt, de830a7). Umsetzung 13a startet, wenn 2b/2c und 3a gemergt sind; 13b nach 3b.
cschlaefke merged commit bb0d584f66 into main 2026-11-04 00:29:51 +00:00
cschlaefke deleted branch docs/13-kat04-spec 2026-11-04 00:29:51 +00:00
Sign in to join this conversation.
No description provided.