Wiki source code of Schwarmspeicher Electrify

Version 5.1 by Patrizia Gurschka on 2026/09/09 14:21

Hide last authors
Patrizia Gurschka 5.1 1 macro:box
Dimitri Rupp 1.1 2
Patrizia Gurschka 5.1 3 **Auf dieser Seite**
4
5 macro:toc
6
7 * (((
8 [[🔋 Schwarmspeicher Electrify>>path:#HD83DDD0BSchwarmspeicherElectrify]]
9
10 * [[Übersicht>>path:#HDCbersicht]]
11 * [[Technologie-Stack>>path:#HTechnologie-Stack]]
12 * [[Projektstruktur>>path:#HProjektstruktur]]
13 * (((
14 [[Hauptfunktionen>>path:#HHauptfunktionen]]
15
16 * [[Dashboard>>path:#HDashboard]]
17 * [[Projektverwaltung>>path:#HProjektverwaltung]]
18 * [[Standortverwaltung>>path:#HStandortverwaltung]]
19 * [[Gemeinden>>path:#HGemeinden]]
20 * [[Kartenansicht>>path:#HKartenansicht]]
21 * [[Potenzialanalyse>>path:#HPotenzialanalyse]]
22 * [[Pipeline>>path:#HPipeline]]
23 * [[Meilensteinverwaltung>>path:#HMeilensteinverwaltung]]
24 * [[Aufgabenverwaltung>>path:#HAufgabenverwaltung]]
25 * [[Dokumentenverwaltung>>path:#HDokumentenverwaltung]]
26 * [[Standortpartner>>path:#HStandortpartner]]
27 * [[Stockende Projekte>>path:#HStockendeProjekte]]
28 * [[Forecast>>path:#HForecast]]
29 * [[PV Co-Location>>path:#HPVCo-Location]]
30 * [[Benutzerverwaltung>>path:#HBenutzerverwaltung]]
31 * [[Audit Log>>path:#HAuditLog]]
32 )))
33 * [[Routing>>path:#HRouting]]
34 * [[Datenzugriff>>path:#HDatenzugriff]]
35 * [[Supabase>>path:#HSupabase]]
36 * [[Architektur>>path:#HArchitektur]]
37 * [[Server>>path:#HServer]]
38 )))
39
40
41
Dimitri Rupp 1.1 42 = 🔋 Schwarmspeicher Electrify =
43
Patrizia Gurschka 5.1 44 macro:info
Dimitri Rupp 1.1 45
Patrizia Gurschka 5.1 46 Information
47
48 **Zweck:** Webbasiertes Projektmanagementsystem zur Verwaltung von Batterie-Großspeicherprojekten in Deutschland und Österreich — vom Standort über Genehmigungen bis zur Projektsteuerung und Dokumentation. Die aktuelle Anwendung enthält zusätzlich den eigenständigen Use-Case **PV Co-Location**.
49
50 Click and drag to move
51
Dimitri Rupp 1.1 52 == Übersicht ==
53
Patrizia Gurschka 5.1 54 **Schwarmspeicher Electrify** unterstützt den gesamten Projektlebenszyklus: Standortidentifikation, Pipeline, Genehmigungen, Projektsteuerung, Forecast, Aufgaben und Dokumentation. Über einen Use-Case-Switcher kann zwischen **Schwarmspeicher** und **PV Co-Location** gewechselt werden. Der aktive Use-Case wird aus dem URL-Pfad abgeleitet.
Dimitri Rupp 1.1 55
56 == Technologie-Stack ==
57
Patrizia Gurschka 5.1 58 **Frontend:** React 18.3.1 · TypeScript 5.8.3 · Vite 5.4.19 · Tailwind CSS 3.4.17 · shadcn/ui / Radix UI · React Router DOM 6.30.1 · TanStack React Query 5.83.0 · React Hook Form 7.61.1 · Zod 3.25.76 · Leaflet 1.9.4 / React Leaflet 4.2.1 · Recharts 2.15.4 · xlsx 0.18.5
Dimitri Rupp 1.1 59
60 **Backend:** Supabase — PostgreSQL, Authentication, Storage, Edge Functions, Row Level Security (RLS)
61
Patrizia Gurschka 5.1 62 **Tests:** Vitest 3.2.4 · Playwright 1.57.0
63
Dimitri Rupp 1.1 64 == Projektstruktur ==
65
Patrizia Gurschka 5.1 66 macro:code
67
Dimitri Rupp 1.1 68 src/
Patrizia Gurschka 5.1 69 ├── components/ UI-Komponenten und Fachkomponenten
70 ├── pages/ Seiten der Anwendung
71 ├── hooks/ Datenzugriffe und Business-Logik
72 ├── integrations/ Supabase Client und generierte Typen
73 ├── types/ TypeScript-Modelle, inkl. PV Co-Location
74 └── lib/ Hilfsfunktionen
Dimitri Rupp 1.1 75
76 supabase/
Patrizia Gurschka 5.1 77 ├── migrations/
78 ├── functions/
79 └── config.toml
Dimitri Rupp 1.1 80
Patrizia Gurschka 5.1 81 Click and drag to move
82
Dimitri Rupp 1.1 83 == Hauptfunktionen ==
84
85 === Dashboard ===
86
Patrizia Gurschka 5.1 87 Zentrale Übersicht über Projekte, Status, offene Aufgaben, Kennzahlen und Projektfortschritt. Für PV Co-Location existiert ein eigenes Dashboard mit Kennzahlen zu aktiven Standorten, Modulleistung, BESS-Leistung, Standortpartnern, Pipeline sowie Plan-/Ist-Werten.
Dimitri Rupp 1.1 88
89 === Projektverwaltung ===
90
Patrizia Gurschka 5.1 91 Verwaltung aller Batteriespeicherprojekte: anzeigen, Detailansicht, bearbeiten, Projektstatus und Meilensteine. Komponenten: ProjectTable, ProjectDetail. PV Co-Location besitzt eine eigene Projektansicht mit CoLocationProjectTable und CoLocationStandortDetail.
Dimitri Rupp 1.1 92
93 === Standortverwaltung ===
94
Patrizia Gurschka 5.1 95 Standorte anlegen, bearbeiten, importieren, Historie und Dokumente. Komponenten: StandortDetail, CreateStandortForm, StandortImportDialog, StandortDokumente. PV Co-Location ergänzt eigene Formulare, Import, Bulk-Edit und Detailansichten.
Dimitri Rupp 1.1 96
97 === Gemeinden ===
98
Patrizia Gurschka 5.1 99 Verwaltung der Gemeinden (Komponente CreateGemeindeForm). Zusätzlich existiert eine Supabase Edge Function zum Abruf von NÖ-Gemeinden (supabase/functions/fetch-noe-gemeinden).
Dimitri Rupp 1.1 100
101 === Kartenansicht ===
102
Patrizia Gurschka 5.1 103 Darstellung aller Standorte auf einer interaktiven Karte mit Leaflet / React Leaflet. Komponenten: ProjectMap, LocationPickerMap. PV Co-Location besitzt eine eigene Karte mit Standortselektion, Partnerfilter und Übergabe ausgewählter Standort-IDs an die Projektansicht.
Dimitri Rupp 1.1 104
105 === Potenzialanalyse ===
106
Patrizia Gurschka 5.1 107 Bewertung möglicher Standorte. Komponenten: PotenzialTabelle, PotenzialPage. Die Potenzialanalyse ist aktuell dem Schwarmspeicher-Use-Case zugeordnet.
Dimitri Rupp 1.1 108
109 === Pipeline ===
110
Patrizia Gurschka 5.1 111 Verwaltung von Vorprojekten. Komponenten: VorprojektePipeline, VorprojektTimeline. PV Co-Location besitzt eine separate Pipeline für co_vorprojekte mit Standortpartner, Kontakt, Standort-/kWp-/BESS-Potenzial, Realisierungswahrscheinlichkeit, Follow-up und nächsten Schritten.
Dimitri Rupp 1.1 112
113 === Meilensteinverwaltung ===
114
Patrizia Gurschka 5.1 115 Projektfortschritt über Meilensteine. Komponenten: MeilensteinMatrix, MeilensteinQuickEdit. PV Co-Location verwendet eine eigene Meilensteinmatrix und Quick-Edit-Logik. Zu den dort abgebildeten Schritten gehören u. a. Grundstücksvertrag, Netzzugangsvertrag, Fertigstellungsmeldung, BESS-Bezugsleistung und Inbetriebnahme.
Dimitri Rupp 1.1 116
117 === Aufgabenverwaltung ===
118
Patrizia Gurschka 5.1 119 Projektbezogene Aufgaben. Komponenten: TaskManager, TasksPage. Hook: useTasks(). PV Co-Location verwendet mit CoTaskManager, CoLocationTasksPage und useCoTasks() eine eigene, vom Schwarmspeicher getrennte Aufgabenliste.
Dimitri Rupp 1.1 120
121 === Dokumentenverwaltung ===
122
Patrizia Gurschka 5.1 123 Zu jedem Standort können Dokumente verwaltet werden. Komponenten: StandortDokumente, PartnerDokumente. PV Co-Location besitzt eigene Standort- und Partnerdokumente sowie den separaten Frontend-Zugriff auf den Storage-Bucket co-dokumente; Downloads werden als Signed URLs erzeugt.
Dimitri Rupp 1.1 124
125 === Standortpartner ===
126
Patrizia Gurschka 5.1 127 Verwaltung von Projektpartnern. Komponenten: StandortpartnerManager, StandortpartnerTable. Für PV Co-Location existieren separate Komponenten und Datenzugriffe für Standortpartner.
Dimitri Rupp 1.1 128
Patrizia Gurschka 5.1 129 === Stockende Projekte ===
130
131 Erkennung von Projekten bzw. Standorten, deren definierte Lead Times zwischen Meilensteinen überschritten sind. Für PV Co-Location sind die Lead-Time-Regeln in der UI anpassbar und werden derzeit im Browser-localStorage gespeichert.
132
133 === Forecast ===
134
135 Forecast auf Basis von Monatszielen und erreichten Meilensteinen. PV Co-Location enthält Plan-/Ist-Auswertungen für Netzzugangsvertrag, BESS beantragt, BESS bewilligt und BESS in Betrieb sowie eine Jahresauswahl und editierbare Monatsziele.
136
137 === PV Co-Location ===
138
139 Zweiter fachlich getrennter Use-Case mit eigenen Routen, Seiten, Hooks und Datenobjekten. Enthalten sind Dashboard, Karte, Projekte, Pipeline, stockende Standorte, Forecast und Tasks. Die Use-Case-Umschaltung erfolgt über den Sidebar-Switcher; /pv-colocation/* aktiviert PV Co-Location, die übrigen Anwendungspfade den Schwarmspeicher.
140
Dimitri Rupp 1.1 141 === Benutzerverwaltung ===
142
Patrizia Gurschka 5.1 143 Anmeldung, Passwortänderung und Rollen. Komponenten: AuthProvider, ProtectedRoute, BenutzerPage, ChangePasswordDialog. Backend: Supabase Authentication. Die Anwendung unterstützt zudem eine verpflichtende Passwortänderung über useMustChangePassword().
Dimitri Rupp 1.1 144
145 === Audit Log ===
146
Patrizia Gurschka 5.1 147 Nachvollziehbarkeit von Änderungen über AuditLogPage und audit_log. Der Zugriff auf das Änderungsprotokoll ist über die vorhandenen Datenbankregeln auf Administratoren eingeschränkt.
Dimitri Rupp 1.1 148
149 == Routing ==
150
151 |=Seite|=Beschreibung
152 |Dashboard|Startseite
153 |Projekte|Projektübersicht
154 |Pipeline|Vorprojekte
155 |Potenziale|Standortpotenziale
156 |Karte|Kartenansicht
Patrizia Gurschka 5.1 157 |Stockend|Stockende Projekte / Standorte
Dimitri Rupp 1.1 158 |Forecast|Forecast
159 |Aufgaben|Aufgabenverwaltung
160 |Audit Log|Änderungsprotokoll
161 |Benutzer|Benutzerverwaltung
162 |Login|Anmeldung
163
Patrizia Gurschka 5.1 164 **Schwarmspeicher-Routen:** / · /projekte · /pipeline · /potenzial · /karte · /stockend · /forecast · /tasks · /benutzer · /historie
165
166 **PV-Co-Location-Routen:** /pv-colocation · /pv-colocation/projekte · /pv-colocation/pipeline · /pv-colocation/karte · /pv-colocation/stockend · /pv-colocation/forecast · /pv-colocation/tasks
167
Dimitri Rupp 1.1 168 == Datenzugriff ==
169
Patrizia Gurschka 5.1 170 Der Zugriff erfolgt über Custom Hooks, die die Kommunikation mit Supabase kapseln. React Query übernimmt Laden, Mutationen und Cache-Invalidierung.
Dimitri Rupp 1.1 171
Patrizia Gurschka 5.1 172 macro:code
173
174 Schwarmspeicher:
Dimitri Rupp 1.1 175 useStandorte()
176 useGemeinden()
177 useVorprojekte()
178 useTasks()
179 usePotenzialDaten()
180 useStandortpartner()
181 useMonatsziele()
Patrizia Gurschka 5.1 182 useDokumente()
Dimitri Rupp 1.1 183
Patrizia Gurschka 5.1 184 PV Co-Location:
185 useCoLocationStandorte()
186 useCoLocationStandortpartner()
187 useCoVorprojekte()
188 useCoTasks()
189 useCoMonatsziele()
190 useCoDokumente()
191
192 Click and drag to move
193
Dimitri Rupp 1.1 194 == Supabase ==
195
Patrizia Gurschka 5.1 196 **Authentication:** Login, Passwortänderung, Rollenverwaltung und geschützte Routen.
Dimitri Rupp 1.1 197
Patrizia Gurschka 5.1 198 **Datenbank:** Wird über SQL-Migrationen verwaltet (supabase/migrations/). Die Migrationen definieren Tabellen, Policies und Datenbankfunktionen.
Dimitri Rupp 1.1 199
Patrizia Gurschka 5.1 200 **Storage:** Der bestehende Bucket dokumente ist laut Migration privat und auf authentifizierte Zugriffe beschränkt. Das PV-Co-Location-Frontend referenziert zusätzlich den Bucket co-dokumente.
201
202 **Audit:** Änderungen werden über audit_log und Datenbank-Trigger protokolliert; die Audit-Funktion ist gegen direkte Ausführung durch PUBLIC/anon/authenticated gehärtet.
203
Dimitri Rupp 1.1 204 **Edge Functions:**
205
Patrizia Gurschka 5.1 206 * fetch-noe-gemeinden — lädt Gemeinden aus Niederösterreich
207 * manage-users — Benutzerverwaltung
Dimitri Rupp 1.1 208
Patrizia Gurschka 5.1 209 macro:info
210
211 Information
212
213 **Technischer Hinweis:** Die Frontend-Hooks referenzieren mehrere co_* Datenobjekte (u. a. co_standorte, co_prozessschritte, co_standortpartner, co_vorprojekte, co_tasks, co_monatsziele und co_dokumente) sowie den Storage-Bucket co-dokumente. Im bereitgestellten supabase/migrations-Verzeichnis und in den generierten Supabase-Typen sind diese Co-Location-Objekte nicht vollständig enthalten. Für ein reproduzierbares Deployment sollten die fehlenden Schema-, RLS- und Storage-Migrationen ergänzt und die Typen anschließend neu generiert werden.
214
215 Click and drag to move
216
Dimitri Rupp 1.1 217 == Architektur ==
218
Patrizia Gurschka 5.1 219 macro:mermaid
220
221 macro:velocity
222
223 macro:html
224
225 {{{flowchart TD
226 FE["React Frontend"] --> UC["UseCaseProvider / Router"]
227 UC --> SS["Schwarmspeicher Pages"]
228 UC --> CO["PV Co-Location Pages"]
229 SS --> RQ["React Query"]
230 CO --> RQ
Dimitri Rupp 1.1 231 RQ --> SC["Supabase Client"]
232 SC --> AUTH["Auth"]
Patrizia Gurschka 5.1 233 SC --> DBS["Database / RLS"]
Dimitri Rupp 1.1 234 SC --> ST["Storage"]
235 DBS --> EF["Edge Functions"]
Patrizia Gurschka 5.1 236 DBS --> AL["Audit Log / Trigger"]}}}
Dimitri Rupp 1.1 237
Patrizia Gurschka 5.1 238 Click and drag to move
239
Dimitri Rupp 1.1 240 == Server ==
241
Patrizia Gurschka 5.1 242 Für die lokale Entwicklung nennt die aktuelle README Node.js ≥ 18 oder Bun, Docker / Docker Compose und die Supabase CLI. Der Vite-Dev-Server läuft laut README auf Port 8200, Supabase Studio auf 127.0.0.1:54323.
Dimitri Rupp 1.1 243
Patrizia Gurschka 5.1 244 Die bisherige Dokumentation nennt zusätzlich den Betrieb unter /mnt/data/schwarmspeicher/schwarmspeicher-electrify_lokal in einem Docker-Compose-Stack sowie die Adresse [[http:~~/~~/schwarmspeicher.spl-tele.com:8200>>url:http://schwarmspeicher.spl-tele.com:8200]] im VPN und SPL-TELE-Netzwerk. Diese konkrete produktive Serverkonfiguration ist im bereitgestellten Quellpaket nicht enthalten und konnte daraus nicht erneut verifiziert werden.