feat(dashboard): Analytics-Dashboard als Gestaltungsvorlage zur Übergabe
UI/UX-Prototyp der Analytics-Dashboards in HiveGrid, fachlich auf einen SHK-/Handwerksbetrieb zugeschnitten. Ziel ist die Übergabe an die Entwicklung, nicht der Produktivbetrieb. Inhalt: sechs Seiten (Übersicht, Finanzen, Aufträge, Kunden, Team, Komponenten), 26 KPIs, neun Chart-Bausteine, Filtersystem mit seitenabhängiger Relevanz und ein deterministischer Demo-Datensatz (420 Kunden, 1.900 Aufträge, Stichtag 30.07.2026). Drei Quellen sind zusammengeführt: die fachliche Planung mit dem Branchenpartner (Januar 2026), die Subframe-Komponentenbibliothek aus dem HiveGrid-Pitch und IBM Carbon Data Visualization für die Diagrammregeln. Herkunft und bewusste Abweichungen stehen in docs/HERKUNFT.md. Dokumentation: README, HANDOVER (was echte Logik braucht), docs/DESIGN-SYSTEM, KPI-KATALOG, DATENMODELL, NAVIGATION, HERKUNFT, ZIELSYSTEM (Einbauort in HiveGrid Cloud) und LEITPLANKEN (welche Cloud-Screens als Vorbild taugen). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QPeZNwSeU7qG3RRCwaxEZX
This commit is contained in:
commit
b8bf987d0e
250 files changed
+33153
No files matched your search
@@ -0,0 +1,99 @@
|
||||
# Datenmodell
|
||||
|
||||
Definiert in `features/dashboard/data/types.ts`, erzeugt in `data/seed.ts`.
|
||||
Die Struktur ist bewusst nah an den HiveGrid-Entities gehalten, damit beim
|
||||
Einbau nur die Datenquelle getauscht werden muss.
|
||||
|
||||
---
|
||||
|
||||
## Zuordnung zu HiveGrid
|
||||
|
||||
| Prototyp | HiveGrid-Entity | Verwendete Felder |
|
||||
|---|---|---|
|
||||
| `Rechnung` | `invoice` | `amount`, `status`, `issuedAt`, `dueDate`, bezahlt-am |
|
||||
| `Auftrag` | `order` | `totalValue`, `status`, `startDate`, `endDate`, Gewerk, Marge, Förderung |
|
||||
| `Kunde` | `company` | `name`, `source`, `createdAt`, Typ, Region |
|
||||
| `Mitarbeiter` | `TenantUser` + `User` | Name, Rolle, Gewerk, Status, Wochenstunden |
|
||||
| `Zeiteintrag` | `timeEntry` | `hours`, `date`, Auftragsbezug, Abwesenheitsgrund |
|
||||
|
||||
**Felder, die es so noch nicht gibt** und beim Einbau ergänzt werden müssen:
|
||||
|
||||
| Feld | Wo | Wofür |
|
||||
|---|---|---|
|
||||
| `gewerk` | Auftrag, Mitarbeiter | Alle Gewerke-Auswertungen und der Gewerk-Filter |
|
||||
| `margeProzent` | Auftrag | Deckungsbeitrag |
|
||||
| `foerderung` / `foerderbetrag` | Auftrag | Förderquote BAFA/KfW |
|
||||
| `verlorenAb` | Auftrag | Ehrlicher Vertriebstrichter (siehe unten) |
|
||||
| `ueberAngebot` | Auftrag | Trennt Angebotsgeschäft von Direktaufträgen |
|
||||
| `wochenstunden` | Mitarbeiter | Auslastungsberechnung |
|
||||
| `zahlungsmoralTage` | Kunde | Auffällige Zahlungsmoral (auch aus Rechnungen ableitbar) |
|
||||
|
||||
---
|
||||
|
||||
## Statuswerte
|
||||
|
||||
**Auftrag:** `anfrage` → `aufmass` → `angebot` → `beauftragt` → `in_arbeit` →
|
||||
`abgeschlossen`, dazu `verloren` als Endzustand.
|
||||
|
||||
`verlorenAb` hält fest, welche Stufe ein verlorener Vorgang zuletzt erreicht
|
||||
hat. Ohne dieses Feld müsste der Trichter raten und würde die oberen Stufen
|
||||
systematisch zu klein zeigen.
|
||||
|
||||
`ueberAngebot` trennt das Angebotsgeschäft (ab etwa 6.000 €) von Aufträgen, die
|
||||
direkt beauftragt werden — Wartung, Notdienst, E-Check. Trichter und
|
||||
Abschlussquote beziehen sich ausschließlich auf das Angebotsgeschäft.
|
||||
|
||||
**Rechnung:** `entwurf` · `gestellt` · `bezahlt` · `ueberfaellig`.
|
||||
|
||||
---
|
||||
|
||||
## Gewerke und Leistungsarten
|
||||
|
||||
| Gewerk | Leistungsarten |
|
||||
|---|---|
|
||||
| Heizung | Wärmepumpe, Gastherme, Heizkörper, Wartung |
|
||||
| Sanitär | Bad-Sanierung, Rohrleitungen, Armaturen, Notdienst |
|
||||
| Klima & Lüftung | Splitgerät, Lüftungsanlage, Kanalreinigung, Wartung |
|
||||
| Photovoltaik | PV-Anlage, Batteriespeicher, Wallbox, Wartung |
|
||||
| Elektro | Elektroinstallation, Zählerschrank, Smart Home, E-Check |
|
||||
|
||||
Förderfähig (BAFA/KfW) sind Wärmepumpe, PV-Anlage, Batteriespeicher und
|
||||
Lüftungsanlage.
|
||||
|
||||
---
|
||||
|
||||
## Der Demo-Datensatz
|
||||
|
||||
Erzeugt mit festem Seed (`mulberry32`, Seed `20260730`) — die Zahlen bleiben
|
||||
über Reloads und Screenshots identisch. Bezugsdatum ist der **30.07.2026**
|
||||
(`HEUTE` in `utils/dateUtils.ts`).
|
||||
|
||||
Fiktiver Betrieb: **Meister Krause GmbH**, Raum Rhein-Main, 24 Beschäftigte
|
||||
(3 Meister, 14 Monteure, 3 Auszubildende, 4 Büro).
|
||||
|
||||
| Größe | Wert |
|
||||
|---|---|
|
||||
| Kunden | 420 |
|
||||
| Aufträge (24 Monate) | 1.900 |
|
||||
| Rechnungen | ~1.270 |
|
||||
| Zeiteinträge (12 Wochen) | ~1.500 |
|
||||
| Jahresumsatz | ~2,4 Mio. € |
|
||||
| Offene Forderungen | ~230 T€ |
|
||||
| Abschlussquote (Angebotsgeschäft) | ~38 % |
|
||||
| Ø Auslastung | ~73 % |
|
||||
|
||||
**Eingebaute Effekte**, damit die Charts nicht künstlich flach aussehen:
|
||||
|
||||
- **Saisonalität** — Heizung und Lüftung ziehen von September bis Februar an,
|
||||
der Hochsommer ist schwächer (`SAISON_INDEX`)
|
||||
- **Wachstum** — rund 12 % gegenüber dem Vorjahr
|
||||
- **Größenabhängige Abschlussquote** — Wartung und Notdienst werden fast immer
|
||||
ausgeführt, große Anlagen dagegen verglichen und häufiger verloren
|
||||
- **Zahlungsverhalten** — die Mehrheit zahlt nahe am Zahlungsziel (21 Tage),
|
||||
ein kleiner Rest wird zum Mahnfall; Forderungen älter als sieben Monate sind
|
||||
eingebracht oder ausgebucht und stehen nicht mehr in der offenen Liste
|
||||
- **Förderanträge** — nur bei Vorgängen der letzten rund 100 Tage offen; ein
|
||||
Bescheid dauert Wochen, nicht Jahre
|
||||
|
||||
Diese Effekte sind fachlich begründet, nicht kosmetisch: Ein gleichverteilter
|
||||
Zufallsdatensatz erzeugt Charts, an denen sich keine Gestaltung prüfen lässt.
|
||||
Reference in new issue
Block a user