feat(catalog): Katalog-Fundament, Rechte und Startbestand-Werkzeug (KAT-05, 2a Backend) #53
No reviewers
Labels
No labels
epic/katalog
epic/konto
epic/partien
epic/querschnitt
epic/sammlung
needs-clarification
prio/could
prio/must
prio/should
size/l
size/m
size/s
size/xl
status/in-progress
status/ready-for-merge
status/spec-review
type/bug
type/epic
type/story
type/tech
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: cschlaefke/Shuffle#53
Loading…
Reference in a new issue
No description provided.
Delete branch "feature/2a-katalog-datenmodell"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Refs #2 (kein
Closes: #2 schließt Chris nach Go-Live-Check C1 und KAT-02 #4)Spec:
docs/specs/2-katalog-daten.md(freigegeben). Teil 2a Backend; das GameCover-Widget ist separat in #52.Inhalt
20261103142204_catalog_foundation.sql:catalog_sources,publishers,game_publishers, neuegames-Spalten, Trigger (games_mark_manual_fields,game_links_mark_manual,games_merged_into_catalog), Viewcatalog_games(security_invoker), RLS, Spaltenrechte,revoke executeauch fürservice_role.06_catalog_foundation.test.sql(148 Tests) inkl. Runbook-Bausteine;00_schemaauf 20 Tabellen.supabase/catalog/(Deno, 32 Tests): Prüfregeln, UUID v5, idempotentes SQL,checks.sql,vocabulary.sql.startbestand.csventhält nur die Kopfzeile, keine Spieldaten.config.tomlsql_paths; Genre/Mechanik-Inserts ausseed.sqlentfernt.docs/katalog-pflege.md,docs/datenmodell-r1.md, Spec-Nachtrag § 10.deno test, Prüfung generierter Dateien, „keys wächst nur“, Vokabular-Assert,checks.sql-Smoke.Review
code-reviewer: keine Sicherheitsbefunde; zwei Scheintests, Runbook über Titel statt ID und fehlender Vokabular-Assert in CI wurden behoben (9952efa). Nacharbeit nicht erneut von einem Reviewer gelesen.Bitte bestätigen (Spec-Abweichungen)
feature/2a-katalog-datenmodellstattfeature/2-katalog-fundament.games_visibility_immutableliegt wie in Spec § 3.4 in 2c.select, ob ein Katalogspiel vorliegt. Folge (R8): Deris_admin()-Zweig dergame_*_write-Policies greift für Katalogspiele faktisch nicht mehr (relevant für QUE-08).created_at/updated_atsind für Clients nicht mehr schreibbar (42501).app/ist nicht betroffen; Merkpunkt für #3/#13: kein ungefiltertestoJson()an insert/update.startbestand.sql,testdata/,tests/support/*.inc,checks.sql-Schritt in CI.Freigabe C0 (Chris): Vokabular
Vor Staging/Prod nötig. Quelle:
supabase/catalog/vocabulary.csv. Einigename_desind Lehnwörter („Engine Building“, „Drafting“).Genres (14): strategy Strategiespiel · family Familienspiel · party Partyspiel · cooperative Kooperatives Spiel · card-game Kartenspiel · abstract Abstraktes Spiel · thematic Thematisches Spiel · economic Wirtschaftsspiel · wargame Kriegsspiel · kids Kinderspiel · word Wortspiel · deduction Deduktionsspiel · dexterity Geschicklichkeitsspiel · trivia Quizspiel
Mechaniken (30): worker-placement Arbeitereinsatz · deck-building Deckbau · hand-management Handkartenmanagement · dice-rolling Würfeln · tile-placement Plättchenlegen · set-collection Sets sammeln · drafting Drafting · area-control Gebietsmehrheit · auction Bieten und Versteigern · trading Handel · negotiation Verhandlung · route-building Streckenbau · engine-building Engine Building · pick-up-and-deliver Abholen und Liefern · trick-taking Stichspiel · push-your-luck Glück herausfordern · bluffing Bluffen · hidden-roles Verdeckte Rollen · variable-powers Variable Spielerfähigkeiten · grid-movement Bewegung auf Raster · pattern-building Muster bauen · real-time Echtzeit · memory Gedächtnis · roll-and-write Würfeln und Notieren · campaign Kampagne · action-points Aktionspunkte · resource-management Ressourcenmanagement · storytelling Erzählen · take-that Gegenseitig ärgern · player-elimination Spieler scheiden aus
(englische Namen siehe CSV)
Nicht getestet / offen
supabase startdiesql_paths-Seeds lädt (Runbook 2.7: „nicht geprüft“); Wächter-Block nur manuell geprüft.supabase db resetdurch den Reviewer; Nit-Test für anon/authenticated aufcatalog_games.checks.sql) nicht Teil dieses PR.🤖 Generated with Claude Code