Zum Hauptinhalt springen

Legacy Page Builder — sichere Abschaltung

Was / Warum

Was: Der React-Page-Builder im Dashboard (Page + PageBlock, Plugin-System, /dashboard/content/pages/*) stammt aus der SPA-Phase, in der Center-Webseiten blockweise im Dashboard gebaut wurden.

Warum abschalten: Heute laufen Center-Websites über Center-Website-Templates, WordPress (Content Areas, Themes) und v0/MCP/API. Der Page Builder ist aus der Navigation verschwunden, Code und DB-Tabellen sind aber noch vorhanden — ohne klare Nutzungsmessung riskant zu löschen.

Wer ist betroffen: Entwicklung/Betrieb (Aufräumen), ggf. Center mit alten Page-Daten in der DB. Nicht betroffen: WordPress-Redaktion, Template-Reiter „Webseite“, pagesConfig in der Website-Konfiguration.

Betriebsstatus (2026-06)

StufeStatusPflicht?
Phasen 1–4 (Navigation, UI, APIs, Write-Guard)ErledigtWar nötig für sauberen Betrieb
Phase 5 (DB-Archiv / DROP)Optional — zurückgestelltNein

Für Redaktion und Live-Center: nichts zu tun. Die Tabellen Page / PageBlock können unbegrenzt liegen bleiben; Schreibzugriffe sind deaktiviert, Websites nutzen sie nicht.

Phase 5 nur erwägen, wenn ihr bewusst Schema vereinfachen oder historische Zeilen archivieren wollt — mit Backup und Staging, siehe unten. Nicht für Render-Deploy, Render-Build oder Dashboard-Updates nötig.

Abgrenzung (nicht verwechseln)

BegriffBedeutungStatus
Page / PageBlock (Prisma)Legacy SPA-Seiten + Blöcke im DashboardWrite-disabled; DB-Aufräumen optional (Phase 5 zurückgestellt)
pagesConfig (website-config JSON)Welche Template-Seiten (Gutschein, Jobs, …) sichtbar sindBehalten
WordPress ContentArea / ContentSectionWP-Integration, dynamische BereicheBehalten
Center-Website templates/*/pages/React-Template-Routen (MEC, ILG, …)Behalten
MCP cockpit_get_center_website_configtemplateContent, pagesConfig, DesignBehalten

Wo lag der Legacy-Code? (Phase 2 entfernt, 2026-06)

BereichPfadStatus
Seiten-CRUD UIapps/dashboard/src/app/dashboard/content/pages/Entfernt
Legacy Page-Builder UIcompact-page-builder, block-library-modal, …Entfernt
APIs/api/pages, /api/centers/.../pages, Debug/Migration-RoutenEntfernt
Versteckte EinstiegeWebsitePages, CenterPageSync, menu-editor-LinksEntfernt
Block-Editor (WP)components/page-builder/ (4 Dateien), content-section-builder/Behalten
Plugin-Systemapps/dashboard/src/lib/plugin-system/Behalten (Content Areas + alte Theme-Helfer mit prisma.page)
Deprecation-Listedeprecated-navigation.tsAktualisiert (nur Doku/Hinweise)

Center-Website (apps/center-website) liest keine Page/PageBlock-API mehr für Templates — nur noch website-config, CMS-Content, Templates.

So prüfen (Audit)

node scripts/audit-legacy-page-builder.mjs
node scripts/audit-legacy-page-builder.mjs --json
node scripts/audit-legacy-page-builder-usage.mjs

Das Skript liefert:

  1. Code-Inventar — Dateianzahl pro Legacy-Ordner
  2. API-Liste — welche Routen noch existieren
  3. DB-Statistik (wenn DATABASE_URL gesetzt) — Anzahl Pages/Blocks, Center, zuletzt bearbeitet

Production-Stand (Live-DB, 2026-06)

Lokale DATABASE_URL = Render Production (mallos_database_7jh1). Typische Zahlen:

KennzahlWertBedeutung
ShoppingCenter gesamt97Alle aktuell angelegten Center in Production
Center mit Page-Zeilen50Nur diese bekamen beim Anlegen Auto-Seeding
Center ohne Page-Zeilen47Kein Legacy Page Builder — normale Center ohne Relikt
Page gesamt299Nicht 97×N — eher ~50×6 Standard-Seed (+ Ausreißer)

Verteilung Pages pro Center: 47×6 Seiten, 1×14 (Test-HBB), je 1× mit 1–2 Seiten.

Seeding-Indikatoren: 100 % createdBy: system, 93 % exakt 6er-Standard (Home, Shops, News, …), 99 % nie bearbeitet. Auslöser: createUniversalPluginPages in centers/create (nur bei bestimmten Organisationen / Theme-Zuweisung), nicht bei jedem der 97 Center.

Interpretation:

  • Viele Pages + kürzliche updatedAt → vor Löschung mit Center-Betrieb klären
  • Pages nur bei alten Centern + websiteStack = WordPress/Template → eher Archiv-Kandidaten
  • 0 Pages → Code entfernen risikoärmer (APIs trotzdem erst deprecaten)

Empfohlene Phasen (ohne Datenverlust)

Phase 1 — Messen (1–4 Wochen)

  • Audit-Skript in CI oder monatlich manuell
  • Optional: Middleware-Log auf /api/pages, /api/centers/*/pages (Zähler in Log/Better Stack)
  • Keine Löschung

Phase 2 — Einstiege + Routen entfernt ✅ (2026-06)

Der Page Builder ist nicht mehr in der Haupt-Navigation und die Legacy-Routen sind gelöscht (kein Redirect — Bookmarks → 404).

Erledigt:

  1. Links zu Legacy-Routen entfernt (CenterPageSync, WebsitePages, website-technology-badge, menu-editor)
  2. Ordner gelöscht: app/dashboard/content/pages/, components/pages/, Legacy-Teile von page-builder/, /api/pages*, Center-Pages-APIs, Migration/Maintenance-APIs
  3. Behalten: compact-canvas, content-section-builder, plugin-system (WordPress Content Areas)

Offen (Phase 4): Einige Theme-Setup-Routen (apply-theme, themes/smg/setup, setup-new-features) schreiben noch prisma.page — bei Bedarf no-op oder deprecaten.

Phase 3 — Kein neues Seeding ✅ (2026-06)

  • createUniversalPluginPages aus centers/create, setup-repair, theme/regenerate deaktiviert
  • Bestehende Page-Zeilen bleiben (Archiv bis Phase 5)

WordPress — keine Legacy-Page-Abhängigkeit

WordPress-Center nutzen eigene APIs, nicht Page/PageBlock:

WordPress-Plugin ruftDashboard-ModellLegacy Page?
/api/content-areas/by-keyContentArea + ContentSectionNein
/api/wordpress/content-areasContentArea (Sync)Nein
Batch-Sync (Shops, News, …)CMS-EntitätenNein
Elementor Dynamic Tags / Widgetscontent-areas/by-keyNein

Production-Stand (Live-DB): 22 WordPress-Website-Einträge (12 Center), 380 PageContent-Zeilen (Center-Website-Templates), 299 Legacy-Page-Zeilen (Relikt, davon 10 Center auch mit WP — WP liest sie nicht).

Render-Logs: GET /api/pages* und /api/centers/*/pages* in 7 Tagen 0 Treffer; page-content und CMS-APIs aktiv.

Phase 4 — prisma.page-Schreibzugriffe deaktiviert ✅ (2026-06)

Zentraler Guard: apps/dashboard/src/lib/legacy-page-builder-guard.ts (LEGACY_PAGE_WRITES_DISABLED = true).

Betroffen (no-op + Log, keine neuen Page/PageBlock-Zeilen):

  • ThemeManager / SpaThemeManager — Seiten-Generierung aus Theme-Templates
  • createDetailPageTemplates, createCMImmoThemePages
  • organizations/.../apply-theme, themes/smg/setup, setup-new-features-Routen
  • API add-hbb-blocksentfernt

Behalten (Read-only): collect-center-data exportiert bestehende Legacy-Pages für Backups.

Offen (Phase 5 — optional, zurückgestellt): DB-Tabellen archivieren oder später droppen — kein Muss für den Betrieb. Plan und SQL liegen bereit, Ausführung erst bei expliziter Team-Entscheidung.

Plan (nicht ausführen ohne Freigabe): packages/database/docs/20260604_legacy_page_pageblock_archive_PHASE5_SAFE.md
SQL 5a (manuell): packages/database/migrations/20260604_legacy_page_archive_tables_SAFE.sql

Phase 5 — DB archivieren (optional, nach Team-OK)

Keine Pflicht

Phase 5 ist technische Schuldentlastung, nicht Betriebsvoraussetzung. Phasen 1–4 reichen für Produktion. Risiko: 5a/5b gering (additiv); 5c (DROP) nur mit Backup und Monate nach 5a.

  • Dashboard-Routen + Legacy page-builder UI — erledigt (Phase 2)
  • plugin-system-Helfer mit prisma.page — belassen (Writes noop via Guard)
  • DB: Expand-Contract — Archiv-Tabelle oder Dump, kein blindes DROP
  • db_structure.md + Changelog — erst nach tatsächlicher Ausführung von 5a/5c

Vorbereitung (read-only):

node scripts/audit-legacy-page-builder.mjs
node scripts/backup-legacy-page-builder-tables.mjs # Dry-run (Zählung)
node scripts/backup-legacy-page-builder-tables.mjs --write # JSON nach backups/legacy-page-builder/

Das Backup-Skript exportiert Page und PageBlock als JSON — ohne Löschen oder Schema-Änderung. Ausgabe liegt unter backups/ (gitignored).

Was testen

  1. node scripts/audit-legacy-page-builder.mjs — DB-Zahlen notieren
  2. Center mit WordPress: Website-Reiter, Content Areas, Live-URL — unverändert
  3. Center-Website Template (MEC/ILG): Navigation/pagesConfig — unverändert
  4. MCP: cockpit_get_center_website_config — liefert weiter templateContent / pagesConfig
  5. Nach Phase 2: alte Bookmarks /dashboard/content/pages404 (Route entfernt), kein Redirect nötig

Betrieb

  • Keine neuen Env-Variablen für Phase 1–4
  • Phase 5: optional; Backup-Skript und SQL nur bei bewusster Archiv-Entscheidung
  • Siehe auch Navigation & Module (deprecated) und deprecated-navigation.ts

Siehe auch

Nutzungsstatistik: Seitenaufrufe werden anonymisiert erfasst. Im Umami-Dashboard nach diesem Pfad filtern: /developer-guide/legacy-page-builder-deprecation