PocketBase-Schemaänderungen nach Produktion übertragen #39

Open
opened 2026-10-01 11:06:48 +02:00 by Tom · 0 comments
Owner

Das Schema der Collections ist im Repo als pb/pb_migrations/collections_schema.json hinterlegt, wird aber nur in Dev und Tests angewendet (Dev-Seed über den pb_migrations-Mount, Fixture-Import). Produktion wird von Hand gepflegt. Es gibt also keinen Weg, eine Schemaänderung (neues Feld, neuer Select-Wert, neue Collection) reproduzierbar nach Produktion zu bringen.

Solange das fehlt, ist das Datenmodell faktisch eingefroren.

Was davon abhängt

  • #29 Bilder im Content (file-Feld / media-Collection)
  • „Design auffrischen“ (#37), Notizen für später:
    • posts.summary (Text, optional): ersetzt den automatisch aus dem Body gekürzten Teaser (#44), wenn gesetzt
    • pages.teaser/pages.icon: Teaser und Icon der Startseiten-Kacheln (#43) redaktionell statt abgeleitet
    • eigene embed-Werte für Startseiten-Bausteine
    • Collection board_members (#45): löst den Baustein ::: team auf /board ab (heute Markdown im Body). Felder etwa name (Text), role (Text, optional), duties (Text oder JSON-Liste), note (Text, optional), group (Select: Vorsitz/Schriftführung/Beisitz), order (Zahl), public (Bool); Avatar-Initialen und -Farbe weiter beim Rendern berechnet (TeamMember), keine Fotos. Umstieg: Records aus dem Body übernehmen, dann embed-Wert für /board.
    • Bausteine ::: kennzahlen / ::: kacheln (heute Markdown im Body, z. B. /patrons): falls sie strukturierte Felder bekommen, Anzahl begrenzen. kennzahlen stehen immer in einer Reihe gleich breiter Spalten, ausgelegt auf 3, höchstens 4 Einträge (mehr wird auf dem Handy zu eng); Zahl kurz halten (seit 1975, ab 10 €). kacheln laufen in der 42rem-Lesespalte zweispaltig, also am besten gerade Anzahl; Titel ein Wort (**Titel** am Anfang des Eintrags).

Optionen (zu entscheiden)

  • PocketBase-JS-Migrationen auch in Produktion mounten (nur Schema, kein Seed; Seed strikt getrennt halten)
  • Schema-Import über die Admin-API als Deploy-Schritt (braucht Superuser-Credentials im Deploy)
  • Manuelle Checkliste in docs/redaktion.md je Änderung (einfach, aber fehleranfällig)

Aufgaben

  • Option wählen und in docs/architektur.md als Entscheidung festhalten
  • Dev-Seed und Schema-Migration trennen (Produktion darf nie Beispielinhalte bekommen)
  • Ablauf in docs/deployment.md dokumentieren, inkl. Rollback
  • Einmal mit einer harmlosen Änderung end-to-end durchspielen

Gehört zu #24.

Das Schema der Collections ist im Repo als `pb/pb_migrations/collections_schema.json` hinterlegt, wird aber **nur in Dev und Tests** angewendet (Dev-Seed über den `pb_migrations`-Mount, Fixture-Import). Produktion wird von Hand gepflegt. Es gibt also **keinen Weg, eine Schemaänderung (neues Feld, neuer Select-Wert, neue Collection) reproduzierbar nach Produktion zu bringen.** Solange das fehlt, ist das Datenmodell faktisch eingefroren. ## Was davon abhängt - #29 Bilder im Content (`file`-Feld / `media`-Collection) - „Design auffrischen“ (#37), Notizen für später: - `posts.summary` (Text, optional): ersetzt den automatisch aus dem Body gekürzten Teaser (#44), wenn gesetzt - `pages.teaser`/`pages.icon`: Teaser und Icon der Startseiten-Kacheln (#43) redaktionell statt abgeleitet - eigene `embed`-Werte für Startseiten-Bausteine - Collection `board_members` (#45): löst den Baustein `::: team` auf `/board` ab (heute Markdown im Body). Felder etwa `name` (Text), `role` (Text, optional), `duties` (Text oder JSON-Liste), `note` (Text, optional), `group` (Select: Vorsitz/Schriftführung/Beisitz), `order` (Zahl), `public` (Bool); Avatar-Initialen und -Farbe weiter beim Rendern berechnet (`TeamMember`), keine Fotos. Umstieg: Records aus dem Body übernehmen, dann `embed`-Wert für `/board`. - Bausteine `::: kennzahlen` / `::: kacheln` (heute Markdown im Body, z. B. `/patrons`): falls sie strukturierte Felder bekommen, Anzahl begrenzen. `kennzahlen` stehen immer in **einer** Reihe gleich breiter Spalten, ausgelegt auf 3, höchstens 4 Einträge (mehr wird auf dem Handy zu eng); Zahl kurz halten (`seit 1975`, `ab 10 €`). `kacheln` laufen in der 42rem-Lesespalte zweispaltig, also am besten gerade Anzahl; Titel ein Wort (`**Titel**` am Anfang des Eintrags). ## Optionen (zu entscheiden) - **PocketBase-JS-Migrationen** auch in Produktion mounten (nur Schema, kein Seed; Seed strikt getrennt halten) - **Schema-Import über die Admin-API** als Deploy-Schritt (braucht Superuser-Credentials im Deploy) - **Manuelle Checkliste** in `docs/redaktion.md` je Änderung (einfach, aber fehleranfällig) ## Aufgaben - [ ] Option wählen und in `docs/architektur.md` als Entscheidung festhalten - [ ] Dev-Seed und Schema-Migration trennen (Produktion darf nie Beispielinhalte bekommen) - [ ] Ablauf in `docs/deployment.md` dokumentieren, inkl. Rollback - [ ] Einmal mit einer harmlosen Änderung end-to-end durchspielen Gehört zu #24.
Tom added this to the Elternbeirat-Website milestone 2026-10-01 11:06:48 +02:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Tom/Elternbeirat#39