# 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.