feat(catalog): Fehlendes Spiel melden – Backend (KAT-04, 13a) #67

Open
cschlaefke wants to merge 6 commits from feature/13a-fehlendes-spiel-backend into main
Owner

Refs #13

Teil 13a (Backend) von „Fehlendes Spiel melden“ nach docs/specs/13-fehlendes-spiel-melden.md.

Inhalt

  • Migration 20261104100000_game_reports_user.sql (additiv): strip_leading_article, normalize_game_title, report_day, find_similar_catalog_games, report_missing_game; game_reports.result_seen_at; Insert-Recht auf 6 Spalten, Update nur result_seen_at; Policies; Trigger game_reports_daily_limit (10 je Nutzer und Berliner Tag, Advisory-Lock); Grants erst entziehen, dann gezielt erteilen.
  • Entscheidung Chris (2026-11-04, Option B): Es gibt kein „abgelehnt mit Verweis“ mehr. Mit Verweis wird merged verwendet (hängt direkt um), rejected nur ohne Ziel. Deshalb entfällt adopt_report_target (keine security-definer-Funktion in 13a). admin_resolve_report weist rejected mit Ziel ab (report_reject_has_target), dazu Check game_reports_rejected_no_target. Ändert Spec-F3 aus Spec #2; als Nachtrag/Spec-F10 dokumentiert.
  • pgTAP: neue 10_game_reports_user.test.sql (190 Tests), 08 angepasst (rejected-mit-Ziel-Fixtures → merged, neue Tests); nach sauberem db reset: 1004 pgTAP-Tests, 41 Deno-Tests grün.
  • Docs/Specs: Spec 13, Spec #2 (Nachtrag), katalog-pflege.md §6, datenmodell-r1.md, supabase/README.md, docs/specs/13-umsetzung.md.

Review

code-reviewer: APPROVE (Stand vor Option B; Befunde S2/N2/N4 eingearbeitet). Die Änderung für Option B wird gesondert nachgeprüft, bis dahin kein Label.

Für 13b / nicht geprüft

  • App kennt nur noch pending / approved / merged / rejected (ohne Ziel); Edition-Hinweis bei approved und merged.
  • Nicht geprüft: Zugriff über REST/HTTP, echte Parallelität des Tageslimits (Advisory-Lock, manuell/T1), Eigentümer postgres auf Staging/Prod.
  • 08 nutzt weiter disable trigger für Fixtures (begründet im Nachtrag).

🤖 Generated with Claude Code

Refs #13 Teil 13a (Backend) von „Fehlendes Spiel melden“ nach `docs/specs/13-fehlendes-spiel-melden.md`. ## Inhalt - Migration `20261104100000_game_reports_user.sql` (additiv): `strip_leading_article`, `normalize_game_title`, `report_day`, `find_similar_catalog_games`, `report_missing_game`; `game_reports.result_seen_at`; Insert-Recht auf 6 Spalten, Update nur `result_seen_at`; Policies; Trigger `game_reports_daily_limit` (10 je Nutzer und Berliner Tag, Advisory-Lock); Grants erst entziehen, dann gezielt erteilen. - **Entscheidung Chris (2026-11-04, Option B):** Es gibt kein „abgelehnt mit Verweis“ mehr. Mit Verweis wird `merged` verwendet (hängt direkt um), `rejected` nur ohne Ziel. Deshalb **entfällt `adopt_report_target`** (keine security-definer-Funktion in 13a). `admin_resolve_report` weist `rejected` mit Ziel ab (`report_reject_has_target`), dazu Check `game_reports_rejected_no_target`. Ändert Spec-F3 aus Spec #2; als Nachtrag/Spec-F10 dokumentiert. - pgTAP: neue `10_game_reports_user.test.sql` (190 Tests), `08` angepasst (rejected-mit-Ziel-Fixtures → merged, neue Tests); nach sauberem `db reset`: 1004 pgTAP-Tests, 41 Deno-Tests grün. - Docs/Specs: Spec 13, Spec #2 (Nachtrag), `katalog-pflege.md` §6, `datenmodell-r1.md`, `supabase/README.md`, `docs/specs/13-umsetzung.md`. ## Review code-reviewer: APPROVE (Stand vor Option B; Befunde S2/N2/N4 eingearbeitet). **Die Änderung für Option B wird gesondert nachgeprüft**, bis dahin kein Label. ## Für 13b / nicht geprüft - App kennt nur noch pending / approved / merged / rejected (ohne Ziel); Edition-Hinweis bei approved und merged. - Nicht geprüft: Zugriff über REST/HTTP, echte Parallelität des Tageslimits (Advisory-Lock, manuell/T1), Eigentümer `postgres` auf Staging/Prod. - `08` nutzt weiter `disable trigger` für Fixtures (begründet im Nachtrag). 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cschlaefke added 5 commits 2026-11-04 18:54:25 +00:00
Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #13

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
feat(db): kein 'abgelehnt mit Verweis' mehr, adopt_report_target entfällt (Entscheidung Chris, Refs #13)
All checks were successful
CI / flutter (pull_request) Successful in 1m35s
CI / web-build (pull_request) Successful in 1m5s
CI / supabase (pull_request) Successful in 10s
CI / supabase-tests (pull_request) Successful in 43s
CI / e2e (pull_request) Successful in 3m21s
3af18073a6
admin_resolve_report weist rejected mit Ziel ab (report_reject_has_target),
Check game_reports_rejected_no_target, Tests und Docs angepasst.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added 1 commit 2026-11-04 19:03:52 +00:00
docs(db): Review-Nachbesserungen PR #67 (Spec, Nachtrag, Release-Checkliste, Testkorrekturen) Refs #13
All checks were successful
CI / flutter (pull_request) Successful in 2m9s
CI / web-build (pull_request) Successful in 1m33s
CI / supabase (pull_request) Successful in 10s
CI / supabase-tests (pull_request) Successful in 37s
CI / e2e (pull_request) Successful in 4m14s
ec42421312
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added the
status/ready-for-merge
label 2026-11-04 20:39:51 +00:00
All checks were successful
CI / flutter (pull_request) Successful in 2m9s
CI / web-build (pull_request) Successful in 1m33s
CI / supabase (pull_request) Successful in 10s
CI / supabase-tests (pull_request) Successful in 37s
CI / e2e (pull_request) Successful in 4m14s
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin feature/13a-fehlendes-spiel-backend:feature/13a-fehlendes-spiel-backend
git checkout feature/13a-fehlendes-spiel-backend

Merge

Merge the changes and update on Forgejo.
git checkout main
git merge --no-ff feature/13a-fehlendes-spiel-backend
git checkout main
git merge --ff-only feature/13a-fehlendes-spiel-backend
git checkout feature/13a-fehlendes-spiel-backend
git rebase main
git checkout main
git merge --no-ff feature/13a-fehlendes-spiel-backend
git checkout main
git merge --squash feature/13a-fehlendes-spiel-backend
git checkout main
git merge --ff-only feature/13a-fehlendes-spiel-backend
git checkout main
git merge feature/13a-fehlendes-spiel-backend
git push origin main
Sign in to join this conversation.
No description provided.