Wiki source code of Schwarmspeicher Electrify

Version 6.1 by Patrizia Gurschka on 2026/09/09 14:24

Show last authors
1 = 🔋  Schwarmspeicher Electrify =
2
3 |**ⓘ   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.|(((
4 **Auf dieser Seite**
5
6 • 🔋 Schwarmspeicher Electrify
7
8 • Übersicht
9
10 • Technologie-Stack
11
12 • Projektstruktur
13
14 • Hauptfunktionen
15
16 â–ª Dashboard
17
18 â–ª Projektverwaltung
19
20 â–ª Standortverwaltung
21
22 â–ª Gemeinden
23
24 â–ª Kartenansicht
25
26 â–ª Potenzialanalyse
27
28 â–ª Pipeline
29
30 â–ª Meilensteinverwaltung
31
32 â–ª Aufgabenverwaltung
33
34 â–ª Dokumentenverwaltung
35
36 â–ª Standortpartner
37
38 â–ª Stockende Projekte
39
40 â–ª Forecast
41
42 â–ª PV Co-Location
43
44 â–ª Benutzerverwaltung
45
46 â–ª Audit Log
47
48 • Routing
49
50 • Datenzugriff
51
52 • Supabase
53
54 • Architektur
55
56 • Server
57 )))
58
59
60
61 Übersicht
62
63 **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.
64
65 Technologie-Stack
66
67 **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
68
69 **Backend: **Supabase — PostgreSQL, Authentication, Storage, Edge Functions, Row Level Security (RLS)
70
71 **Tests: **Vitest 3.2.4 · Playwright 1.57.0
72
73 Projektstruktur
74
75 |src/
76 ├── components/          UI-Komponenten und Fachkomponenten
77 ├── pages/               Seiten der Anwendung
78 ├── hooks/               Datenzugriffe und Business-Logik
79 ├── integrations/        Supabase Client und generierte Typen
80 ├── types/               TypeScript-Modelle, inkl. PV Co-Location
81 └── lib/                 Hilfsfunktionen
82 \\supabase/
83 ├── migrations/
84 ├── functions/
85 └── config.toml
86
87
88
89 Hauptfunktionen
90
91 Dashboard
92
93 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.
94
95 Projektverwaltung
96
97 Verwaltung aller Batteriespeicherprojekte: anzeigen, Detailansicht, bearbeiten, Projektstatus und Meilensteine. Komponenten: ProjectTable, ProjectDetail. PV Co-Location besitzt eine eigene Projektansicht mit CoLocationProjectTable und CoLocationStandortDetail.
98
99 Standortverwaltung
100
101 Standorte anlegen, bearbeiten, importieren, Historie und Dokumente. Komponenten: StandortDetail, CreateStandortForm, StandortImportDialog, StandortDokumente. PV Co-Location ergänzt eigene Formulare, Import, Bulk-Edit und Detailansichten.
102
103 Gemeinden
104
105 Verwaltung der Gemeinden (Komponente CreateGemeindeForm). Zusätzlich existiert eine Supabase Edge Function zum Abruf von NÖ-Gemeinden (supabase/functions/fetch-noe-gemeinden).
106
107 Kartenansicht
108
109 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.
110
111 Potenzialanalyse
112
113 Bewertung möglicher Standorte. Komponenten: PotenzialTabelle, PotenzialPage. Die Potenzialanalyse ist aktuell dem Schwarmspeicher-Use-Case zugeordnet.
114
115 Pipeline
116
117 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.
118
119 Meilensteinverwaltung
120
121 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.
122
123 Aufgabenverwaltung
124
125 Projektbezogene Aufgaben. Komponenten: TaskManager, TasksPage. Hook: useTasks(). PV Co-Location verwendet mit CoTaskManager, CoLocationTasksPage und useCoTasks() eine eigene, vom Schwarmspeicher getrennte Aufgabenliste.
126
127 Dokumentenverwaltung
128
129 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.
130
131 Standortpartner
132
133 Verwaltung von Projektpartnern. Komponenten: StandortpartnerManager, StandortpartnerTable. Für PV Co-Location existieren separate Komponenten und Datenzugriffe für Standortpartner.
134
135 Stockende Projekte
136
137 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.
138
139 Forecast
140
141 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.
142
143 PV Co-Location
144
145 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.
146
147 Benutzerverwaltung
148
149 Anmeldung, Passwortänderung und Rollen. Komponenten: AuthProvider, ProtectedRoute, BenutzerPage, ChangePasswordDialog. Backend: Supabase Authentication. Die Anwendung unterstützt zudem eine verpflichtende Passwortänderung über useMustChangePassword().
150
151 Audit Log
152
153 Nachvollziehbarkeit von Änderungen über AuditLogPage und audit_log. Der Zugriff auf das Änderungsprotokoll ist über die vorhandenen Datenbankregeln auf Administratoren eingeschränkt.
154
155 Routing
156
157 |**Seite**|**Beschreibung**
158 |Dashboard|Startseite
159 |Projekte|Projektübersicht
160 |Pipeline|Vorprojekte
161 |Potenziale|Standortpotenziale
162 |Karte|Kartenansicht
163 |Stockend|Stockende Projekte / Standorte
164 |Forecast|Forecast
165 |Aufgaben|Aufgabenverwaltung
166 |Audit Log|Änderungsprotokoll
167 |Benutzer|Benutzerverwaltung
168 |Login|Anmeldung
169
170
171
172 **Schwarmspeicher-Routen: **/ · /projekte · /pipeline · /potenzial · /karte · /stockend · /forecast · /tasks · /benutzer · /historie
173
174 **PV-Co-Location-Routen: **/pv-colocation · /pv-colocation/projekte · /pv-colocation/pipeline · /pv-colocation/karte · /pv-colocation/stockend · /pv-colocation/forecast · /pv-colocation/tasks
175
176 Datenzugriff
177
178 Der Zugriff erfolgt über Custom Hooks, die die Kommunikation mit Supabase kapseln. React Query übernimmt Laden, Mutationen und Cache-Invalidierung.
179
180 |Schwarmspeicher:
181 useStandorte()
182 useGemeinden()
183 useVorprojekte()
184 useTasks()
185 usePotenzialDaten()
186 useStandortpartner()
187 useMonatsziele()
188 useDokumente()
189 \\PV Co-Location:
190 useCoLocationStandorte()
191 useCoLocationStandortpartner()
192 useCoVorprojekte()
193 useCoTasks()
194 useCoMonatsziele()
195 useCoDokumente()
196
197
198
199 Supabase
200
201 **Authentication: **Login, Passwortänderung, Rollenverwaltung und geschützte Routen.
202
203 **Datenbank: **Wird über SQL-Migrationen verwaltet (supabase/migrations/). Die Migrationen definieren Tabellen, Policies und Datenbankfunktionen.
204
205 **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.
206
207 **Audit: **Änderungen werden über audit_log und Datenbank-Trigger protokolliert; die Audit-Funktion ist gegen direkte Ausführung durch PUBLIC/anon/authenticated gehärtet.
208
209 **Edge Functions:**
210
211 • fetch-noe-gemeinden — lädt Gemeinden aus Niederösterreich
212
213 • manage-users — Benutzerverwaltung
214
215 |**ⓘ  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.
216
217 Architektur
218
219 |flowchart TD
220 FE["React Frontend"] ~-~-> UC["UseCaseProvider / Router"]
221 UC ~-~-> SS["Schwarmspeicher Pages"]
222 UC ~-~-> CO["PV Co-Location Pages"]
223 SS ~-~-> RQ["React Query"]
224 CO ~-~-> RQ
225 RQ ~-~-> SC["Supabase Client"]
226 SC ~-~-> AUTH["Auth"]
227 SC ~-~-> DBS["Database / RLS"]
228 SC ~-~-> ST["Storage"]
229 DBS ~-~-> EF["Edge Functions"]
230 DBS ~-~-> AL["Audit Log / Trigger"]
231
232
233
234 Server
235
236 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.
237
238 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 im VPN und SPL-TELE-Netzwerk. Diese konkrete produktive Serverkonfiguration ist im bereitgestellten Quellpaket nicht enthalten und konnte daraus nicht erneut verifiziert werden.