Appearance
Version 1.1 — Stabilität & Backend-Umbau
Abgeschlossen — März 2026
Insight+ v1.1 war der erste große Milestone nach dem Foundation Release. Ziel war es, das System von innen heraus zu stabilisieren und die Admin-Console von einem einfachen Verwaltungstool zu einem mächtigen Steuerungswerkzeug auszubauen.
Überblick
| Zeitraum | Februar — März 2026 |
| Phasen | 4 Phasen, 23 Einzelpläne |
| Status | Alle Phasen abgeschlossen und verifiziert |
| Schwerpunkt | Testbarkeit, dynamische Datenfelder, Admin-Console Redesign, WYSIWYG Editor |
Was wurde erreicht
Phase 1: Test Infrastructure
Vitest + Supertest + Testcontainers — eine vollständige, CI-lauffähige Test-Suite für den bpplus-server.
- Dependency Injection Refactoring: Alle 6 Services akzeptieren
poolals Constructor-Parameter;createApp(pool)Factory für testbare Server-Instanzen - Route-Tests: Auth, Customers, Charts, Dashboards, MaterializedViews, Users — alle HTTP-Endpunkte abgedeckt
- Aspect-Tests: Robustheitstests für alle 13 Aspects — kein Aspect darf bei Fehlern crashen
- Cross-Tenant-Isolation: Separate Tenant-Datenbanken mit unterschiedlichen Seed-Daten (netto=100 vs. netto=200) zur Erkennung von Daten-Leaks
- CI-Workflow: GitHub Actions mit Testcontainers-basierter PostgreSQL-Datenbank
- AspectError: Einheitliches Fehlerformat — benutzerfreundliche Meldung im Frontend, technische Details im Server-Log
Ergebnis: Von null Tests auf eine umfassende Test-Suite, die bei jedem Push automatisch läuft.
Phase 2: Dynamic Schema Introspection
Runtime-Erkennung von DB-Feldern aus Kunden-Datenbanken — Ablösung der hartcodierten Feldlisten.
- Schema-Introspection via pg_catalog: Automatische Erkennung aller Tabellen und Spalten aus den Kunden-PostgreSQL-Datenbanken
- Metadata-Cache: 24-Stunden-Cache für Schema-Daten mit manuellem Refresh
- Preview-Modus: Dry-Run vor jeder Änderung — zeigt neue, entfernte und unveränderte Felder bevor Änderungen angewendet werden
- Impact-Analyse: Proaktive Warnung wenn entfernte Felder noch von Charts referenziert werden
- Field Config API: PATCH-basierte Konfiguration von Labels, Formaten, Sortierbarkeit und Durchsuchbarkeit pro Feld
- Feld-Konfigurations-UI: Inline-Editing in einer Spreadsheet-ähnlichen Tabelle, gruppiert nach Aspect, mit Auto-Save
Ergebnis: 4.010 Spalten werden automatisch aus Kunden-Datenbanken erkannt und sind konfigurierbar.
Phase 3: Admin Console Core
Kompletter Neuaufbau der Admin-Console — vom einfachen Verwaltungstool zum Dashboard-artigen Steuerungszentrum.
- Wizard-Fix: Kunden-Anlage-Wizard speichert DB-Konfiguration korrekt (JSONB), Dashboard-Selektion funktioniert, Schema-Introspection bei Anlage
- KPI-Dashboard: Admin-Startseite mit KPI-Cards (Kunden, Charts, Views, Fehlerrate) und Detail-Charts (DB-Gesundheit, View-Refresh-Historie)
- Chart-Bibliothek: Card-basiertes Grid mit Live-ChartPreview, Suchfeld, Typ-Filter und Paginierung ab 50+ Charts
- MaterializedViews-Übersicht: Kunden-Cards mit View-Status (Grün/Gelb/Rot), Refresh-Countdown, problematische Views nach oben sortiert
- Kunden-Detailseite: Tab-Layout mit Status-Badges, Quick-Actions, Datenbank-Verwaltung, Feld-Konfiguration und Dashboard-Übersicht
- Navigation: Mini-Drawer mit Icons und Tooltips als Standard, auf-/zuklappbar
Ergebnis: Eine Admin-Console, die auf einen Blick den Systemzustand zeigt und alle Verwaltungsaufgaben direkt erreichbar macht.
Phase 4: WYSIWYG Dashboard Editor
Drag-and-Drop Grid-Editor mit Live-Chart-Vorschau und Auto-Save.
- GridStack-basiertes 12-Spalten-Grid: Frei positionierbare und skalierbare Chart-Kacheln mit Push- und Kompaktierungsverhalten
- Chart-Sidebar: Ausklappbares Panel mit allen verfügbaren Charts des Kunden — per Drag ins Grid ziehen
- Live-Vorschau: Echte Chart-Daten im Editor, Skeleton-Animation während des Ladens
- Auto-Save: Layout-Änderungen werden automatisch per PATCH gespeichert (debounced)
- Dashboard-Stammdaten: Name, KI-Konfiguration, "Dashboard öffnen" und "Link kopieren" direkt im Editor
- Frontend-Rendering: Responsive Grid-Layout im Kunden-Dashboard basierend auf gespeichertem Layout (col-12 auf Mobile, col-md-N ab Desktop)
Ergebnis: Admins können Dashboard-Layouts visuell zusammenstellen — die Charts erscheinen live so, wie sie auch im Kunden-Dashboard aussehen werden.
Technische Highlights
| Thema | Detail |
|---|---|
| Test-Framework | Vitest 4 + Supertest + Testcontainers (PostgreSQL 17) |
| DI-Pattern | Constructor Injection für alle Services, createApp(pool) Factory |
| Schema-Cache | pg_catalog-basiert, 24h TTL, Dry-Run Preview |
| Grid-Engine | GridStack.js mit Vue 3 Integration via renderCB |
| Auto-Save | PATCH /dashboards/:id/layout mit jsonb_set |
| Fehlerformat | AspectError mit toUserResponse() und toLogEntry() |
| CI | GitHub Actions, Testcontainers, RYUK_DISABLED=true |
Metriken
- 23 Pläne in 4 Phasen abgearbeitet
- ~216 Minuten Gesamtdurchlaufzeit
- ~9 Minuten durchschnittliche Plandauer
- 8/8 UAT-Tests bestanden (Phase 1)
- Alle Phasen durch automatisierte Verifikation bestätigt

