1aace105c7b0e8bd565f11333ef7d0c25c305bb1
Leistungsbilanz – Hauptdokumentation
Diese Anwendung unterstützt die elektrische Fachplanung (TGA/ELT) bei der Erstellung und Pflege von Leistungsbilanzen und Stromkreislisten.
Sie ist als praxisnahe Webanwendung für kleine Teams gedacht (ca. 2–3 gleichzeitige Nutzer), mit Schwerpunkt auf schneller tabellarischer Bearbeitung statt komplexer Enterprise-Strukturen.
Sinn und Ziel der Anwendung
Die Anwendung soll Planer dabei unterstützen:
- Projekte anzulegen und zu verwalten.
- Verteilungen pro Projekt anzulegen.
- Verbraucher strukturiert in Stromkreislisten zu erfassen.
- Installierte Leistung, Gleichzeitigkeitsleistung und Strom automatisch zu berechnen.
- Gerätevorlagen global sowie projektbezogen zu verwalten und wiederzuverwenden.
- Planungsdaten schrittweise zu vervollständigen, ohne unnötige Pflichtfeldhürden.
Fachlich stehen folgende Begriffe im Zentrum:
- Projekt
- Verteilung
- Stromkreisliste
- Verbraucher/Gerät
- installierte Leistung
- Gleichzeitigkeitsfaktor
- berechnete Leistung
- Spannung (1-phasig / 3-phasig)
- Strom
Anforderungsbasis
Die fachliche Basis stammt aus docs/electrical-load-balance-requirements-context-dump.md.
Die folgende Liste fasst die zentralen Anforderungen zusammen und zeigt den aktuellen Umsetzungsstand im Code.
Anforderungsliste mit Ist-Stand
1) Projektverwaltung
- Anforderung: Projekte erstellen und anzeigen.
- Status: Erfüllt.
- Umsetzung: UI in
src/app/projects/page.tsx, API insrc/server/controllers/project.controller.ts.
2) Verteilungen pro Projekt
- Anforderung: Mehrere Verteilungen pro Projekt.
- Status: Erfüllt.
- Umsetzung:
src/server/controllers/distribution-board.controller.ts,src/app/projects/[projectId]/page.tsx.
3) Genau eine Stromkreisliste pro Verteilung
- Anforderung: Jede Verteilung besitzt genau eine Stromkreisliste.
- Status: Erfüllt.
- Umsetzung: Beim Erstellen einer Verteilung wird automatisch eine Stromkreisliste angelegt (
createDistributionBoard+CircuitListRepository.createForDistributionBoard).
4) Tabellarische Stromkreisbearbeitung
- Anforderung: Einträge als Tabellenzeilen anlegen, bearbeiten, löschen.
- Status: Erfüllt.
- Umsetzung:
src/app/projects/[projectId]/circuit-lists/page.tsx, APIsrc/server/controllers/consumer.controller.ts.
5) Bis zu drei parallele Stromkreislisten
- Anforderung: 1–3 Listen parallel, Standard = 1, inkl. Kopieren zwischen Listen.
- Status: Erfüllt.
- Umsetzung:
activeListCount, Slot-Logik und Kopierfunktionen insrc/app/projects/[projectId]/circuit-lists/page.tsx.
6) Geräteverwaltung global + projektbezogen
- Anforderung: Globale Geräteliste und Projektgeräteliste.
- Status: Erfüllt.
- Umsetzung: Seiten
src/app/projects/page.tsxundsrc/app/projects/[projectId]/page.tsx, API-Routen fürglobal-devicesundproject-devices.
7) Geräte zwischen global und Projekt kopieren
- Anforderung: Kopieren in beide Richtungen.
- Status: Erfüllt.
- Umsetzung:
copyGlobalDeviceToProjectundcopyProjectDeviceToGlobal.
8) name + displayName bei Geräten
- Anforderung: Interner Name und Anzeigename getrennt.
- Status: Erfüllt.
- Umsetzung: DB-Schema, Validierung, UI und Copy-Flows sind angepasst.
9) Geräte-Link an Stromkreiseinträgen
- Anforderung: Eintrag kann mit Projektgerät verknüpft/entkoppelt werden; verknüpfte Einträge aktualisieren sich bei Geräteänderung.
- Status: Erfüllt.
- Umsetzung: Felder
projectDeviceId+isLinkedToDevice, Sync insyncLinkedConsumersFromProjectDevice.
10) Unvollständige Einträge zulassen
- Anforderung: Einträge sollen grundsätzlich auch unvollständig möglich sein.
- Status: Teilweise erfüllt.
- Umsetzung: Backend akzeptiert optionale Kernfelder und setzt Defaults.
- Hinweis: Das manuelle Schnellformular im UI verlangt weiterhin einen Namen für den direkten Anlege-Flow.
11) Add Count (mehrere Einträge aus einem Gerät erzeugen)
- Anforderung: getrennt von
quantity. - Status: Erfüllt.
- Umsetzung:
addCountbei „Projektgerät übernehmen“ in der Stromkreislistenansicht.
12) Duplizieren und Kopieren von Einträgen
- Anforderung: Duplizieren in derselben Liste + Kopieren in andere Listen.
- Status: Erfüllt.
- Umsetzung: Zeilenaktionen „Dupl.“ und Listenkopie, plus Auswahl-Kopie.
13) Sortieren, Filtern, Bulk-Edit
- Anforderung: erweiterte Tabellenfunktionen.
- Status: Erfüllt (Basisumfang).
- Umsetzung: Filterfeld, Sortierfeld/-richtung und Sammeländerung für Auswahlwerte.
14) Räume und Etagen
- Anforderung: Projektbezogene Räume/Etagen und Zuordnung zu Einträgen.
- Status: Erfüllt.
- Umsetzung: Floors/Rooms in Projektansicht und Raumzuordnung in Stromkreisliste.
15) Projektspezifische Spannungsstandards (1-ph/3-ph)
- Anforderung: 230 V / 400 V als Standard, in Projekteigenschaften editierbar, in Berechnung verwendet.
- Status: Erfüllt.
- Umsetzung: Projekteinstellungen + Nutzung in Berechnungsservice.
16) Spaltensteuerung in der Tabelle
- Anforderung: Attribute ein-/ausblenden und Spaltenreihenfolge ändern.
- Status: Erfüllt.
- Umsetzung: Spaltenmanager in
circuit-lists/page.tsx.
17) Feste Auswahllisten für Domänenfelder
- Anforderung: feste Werte für Felder wie
deviceType,phaseType, Schutz/Kabel usw. - Status: Erfüllt.
- Umsetzung: zentrale Listen in
src/shared/constants/consumer-option-lists.ts, Validierung überz.enum(...), UI-Selects.
18) Tests über reine Formeln hinaus
- Anforderung: zusätzliche Tests für Link-/Eintragsverhalten.
- Status: Erfüllt.
- Umsetzung:
tests/consumer-linking.service.test.tsundtests/consumer-schema-options.test.ts.
Technische Architektur (für neue Entwickler)
Backend
- Node.js + Express
- Einstieg:
src/server/index.ts - API-Module:
- Projekte/Verteilungen/Räume/Etagen
- Verbraucher (Stromkreiseinträge)
- globale und projektbezogene Geräte
Frontend
- Next.js (App Router) + React + Bootstrap
- Hauptseiten:
src/app/projects/page.tsx(Projektliste + globale Geräte)src/app/projects/[projectId]/page.tsx(Projektdetails, Verteilungen, Räume/Etagen, Projektgeräte)src/app/projects/[projectId]/circuit-lists/page.tsx(Stromkreislisten-Editor)
Datenbank
- SQLite + Drizzle ORM
- Schema unter
src/db/schema - Migrationen unter
src/db/migrations
Domänen- und Rechenlogik
- Berechnung:
src/domain/calculations/power-calculation.ts - Anreicherung/Businesslogik:
src/domain/services/power-balance.service.ts - Geräte-Link-Logik:
src/domain/services/consumer-linking.service.ts
Schneller Entwicklungsstart
npm installnpm run db:generatenpm run db:migratenpm run dev:api(API auf Port 3000)npm run dev:web(Frontend auf Port 3001)
Wichtige Befehle
npm run dev:api– API lokal startennpm run dev:web– Frontend lokal startennpm run build:api– Backend bauennpm run build:web– Frontend bauennpm test– Testlaufnpm run db:generate– Migrationen generierennpm run db:migrate– Migrationen ausführen
Circuit-First lokale Migration
npm run db:backup– lokale SQLite sichernnpm run db:migrate– pending Migrationen ausführennpm run db:verify:circuit-schema– Circuit-First Tabellenprüfungnpm run db:backfill:sections– Default-Sections für bestehende Listen anlegennpm run db:migrate:legacy-consumers– Legacy-Consumers explizit in Circuit-First überführen
Siehe auch: docs/local-db-circuit-first-migration.md
Ergänzende Dokumente
- Anforderungen (Quelle): docs/electrical-load-balance-requirements-context-dump.md
- Abgleich „Anforderung vs. Implementierung“: docs/anforderungs-abgleich.md
Description
Languages
TypeScript
97.2%
CSS
1.8%
JavaScript
0.9%
HTML
0.1%