forked from jappel/leistungsbilanz-ts
Align runtime and editor documentation with current implementation
This commit is contained in:
parent
79fcb75ffb
commit
0a17da2b8e
5 changed files with 48 additions and 14 deletions
|
|
@ -161,6 +161,11 @@ across multiple sections is atomic and occupies one history step. Explicit
|
|||
renumbering uses a collision-safe persistent project command and one
|
||||
project-history step.
|
||||
|
||||
The editor creates client-side UUIDs through `createClientId` in
|
||||
`src/frontend/utils/client-id.ts`. It uses `crypto.randomUUID()` when available
|
||||
and otherwise generates a UUID v4 with `crypto.getRandomValues()`, so insertion
|
||||
also works over plain HTTP from another machine in the LAN.
|
||||
|
||||
Covered operations include:
|
||||
|
||||
- insert/delete circuit
|
||||
|
|
|
|||
|
|
@ -27,9 +27,18 @@ Next.js App Router ── /api/* Rewrite ──▶ Express API :3000
|
|||
data/leistungsbilanz.db (SQLite)
|
||||
```
|
||||
|
||||
Im Docker-Entwicklungssetup laufen Frontend und API in getrennten Containern. Das
|
||||
Frontend leitet `/api/*` über `API_INTERNAL_URL` an die API weiter. Die Datenbank
|
||||
liegt über einen Host-Mount außerhalb des Containers.
|
||||
In beiden Docker-Stacks laufen Frontend und API in getrennten Containern.
|
||||
`compose.yaml` startet den gebauten Stand, `compose.dev.yaml` die Entwicklung
|
||||
mit Hot Reload. Das Frontend leitet `/api/*` über `API_INTERNAL_URL` an die API
|
||||
weiter; beim gebauten Stand wird das Ziel zur Build-Zeit festgelegt. Die
|
||||
Datenbank liegt über einen Host-Mount außerhalb des Containers.
|
||||
|
||||
Neue IDs für Stromkreise, Gerätezeilen, Gruppen und Verteilerkomponenten erzeugt
|
||||
der Editor über `src/frontend/utils/client-id.ts` (`createClientId`). Die
|
||||
Hilfsfunktion nutzt `crypto.randomUUID()`, sofern verfügbar, andernfalls
|
||||
`crypto.getRandomValues()` mit UUID-v4-Format. Damit funktioniert das Anlegen
|
||||
auch beim HTTP-Zugriff im LAN ohne sicheren Browserkontext. Die IDs entstehen
|
||||
vor dem Command und bleiben über Undo/Redo unverändert.
|
||||
|
||||
## Wichtige Einstiegspunkte
|
||||
|
||||
|
|
|
|||
|
|
@ -16,9 +16,10 @@ und macOS keine inotify-Events durchreichen; das kostet dauerhaft CPU, auch
|
|||
ohne Benutzeraktivität. Dieser Stack gehört deshalb nur auf einen
|
||||
Entwicklungsrechner.
|
||||
|
||||
Beides enthält weder TLS, Authentifizierung, Reverse Proxy, Prozesshärtung noch
|
||||
ein zentral betriebenes Datenbanksystem. Der Stack darf deshalb nicht öffentlich
|
||||
erreichbar gemacht werden.
|
||||
Beide Stacks enthalten weder TLS, Authentifizierung, einen vorgeschalteten
|
||||
Reverse Proxy noch ein zentral betriebenes Datenbanksystem. Die oben genannten
|
||||
Container-Schutzmaßnahmen ersetzen diese Funktionen nicht. Der Stack darf
|
||||
deshalb nicht öffentlich erreichbar gemacht werden.
|
||||
|
||||
## Topologie
|
||||
|
||||
|
|
@ -34,6 +35,11 @@ erreicht, kann jedes Projekt lesen und ändern. Erreichbar ist sie nur aus dem
|
|||
Compose-Netz, praktisch also über den Next.js-Rewrite. Im Entwicklungs-Stack
|
||||
hängen beide Ports am Loopback und sind nicht aus dem LAN erreichbar.
|
||||
|
||||
Beim HTTP-Zugriff auf den Server-Stack aus dem LAN erzeugt der Editor neue
|
||||
UUIDs über `createClientId`, mit `crypto.getRandomValues()` als Ersatz für das
|
||||
dort nicht verfügbare `crypto.randomUUID()`. HTTPS ist für diese
|
||||
ID-Erzeugung nicht erforderlich.
|
||||
|
||||
### Speichergrenzen
|
||||
|
||||
Jeder Dienst hat ein `mem_limit`. Im Server-Stack ist zusätzlich
|
||||
|
|
@ -140,14 +146,17 @@ Vor einer produktiven Installation werden mindestens benötigt:
|
|||
- Entscheidung, ob SQLite für einen einzelnen Prozess genügt oder PostgreSQL für
|
||||
Mehrbenutzerbetrieb erforderlich ist
|
||||
|
||||
Bis diese Punkte umgesetzt und getestet sind, besteht die „Installation“ aus dem
|
||||
lokalen Entwicklungsstart in der README.
|
||||
Der in der README beschriebene Server-Stack ermöglicht bereits den Betrieb des
|
||||
gebauten Stands in einer geschützten Umgebung. Ein vollständig unterstütztes
|
||||
Produktionssetup bleibt bis zur Umsetzung und Prüfung dieser Punkte offen.
|
||||
|
||||
## Backup und Wiederherstellung
|
||||
|
||||
`npm run db:backup` erzeugt unter `data/backups/` ein konsistentes SQLite-Backup,
|
||||
öffnet es unabhängig und prüft Integrität sowie Fremdschlüssel. Diese
|
||||
Dateisicherungen sind von zukünftigen logischen Projektversionen getrennt.
|
||||
Dateisicherungen sind von den bereits vorhandenen benannten und automatischen
|
||||
logischen Projektsicherungen getrennt. Projektsicherungen werden über die
|
||||
Projektseite wiederhergestellt und unterstützen persistentes Undo/Redo.
|
||||
|
||||
Eine produktive Restore-Anweisung wird erst zusammen mit einem unterstützten
|
||||
Produktionsbetrieb veröffentlicht. Lokale Wiederherstellung darf nur bei
|
||||
|
|
|
|||
|
|
@ -13,6 +13,11 @@ Ein sauberer Clone enthält keine SQLite-Datenbank. Beim ersten Start werden
|
|||
`data/leistungsbilanz.db`, alle Tabellen und Migrationseinträge automatisch
|
||||
angelegt. Das Frontend ist unter <http://localhost:3001> erreichbar.
|
||||
|
||||
Dieser Standard-Stack verwendet gebauten Anwendungscode. Für die Entwicklung
|
||||
mit Quellcode-Mounts und Hot Reload stattdessen
|
||||
`docker compose -f compose.dev.yaml up --build --detach` verwenden; die Dienste
|
||||
sind dabei nur über die Loopback-Ports des Entwicklungsrechners erreichbar.
|
||||
|
||||
Für direkte Node.js-Entwicklung:
|
||||
|
||||
```powershell
|
||||
|
|
@ -86,7 +91,8 @@ Bei Docker- oder Laufzeitänderungen zusätzlich:
|
|||
```powershell
|
||||
docker compose up --build --detach
|
||||
docker compose ps
|
||||
Invoke-WebRequest http://localhost:3000/health
|
||||
Invoke-WebRequest http://localhost:3001/health
|
||||
Invoke-WebRequest http://localhost:3001/web-health
|
||||
```
|
||||
|
||||
Bei sichtbaren Editoränderungen ist außerdem ein kurzer GUI-Test erforderlich.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue