5 Commits
Author SHA1 Message Date
hilman2andGitHub d4f118c2cb Mitarbeiter sind Benutzer, Ladelimits, Umbenennung auf easy-ocpp (v0.4.0)
Zwei Themen, die sich fast ueberall beruehren, plus die Umbenennung und die
neue Projektseite.

Mitarbeiter sind Benutzer
Migration 0002 hatte `users` (Login) und `employees` (Person) getrennt. Die
Verknuepfung wurde nur fuer Altdaten einmalig gesetzt und danach nie gepflegt,
weshalb ein Nicht-Admin-Login praktisch nie eigene Ladungen sah. Migration 0003
loest `employees` auf: ein Mitarbeiter ist ein `users`-Eintrag mit
`role='user'`, Chips und Transaktionen haengen wieder an `user_id`. Mitarbeiter
ohne Login bekommen ein Konto ohne Passwort.

Ein Mitarbeiter sieht und steuert ausschliesslich die Ladungen seiner eigenen
Chips. Cockpit, Wallboxen, Chips und Benutzerverwaltung sind serverseitig
admin-only, `/` leitet Nicht-Admins auf `/me`. Der letzte aktive Admin laesst
sich nicht mehr degradieren, deaktivieren oder loeschen.

Ladelimits
Timer und Ziel-kWh je Ladung, Abschaltung beim zuerst erreichten Wert. Ein
Watchdog prueft alle 15 s und schickt RemoteStopTransaction; das Energielimit
wird zusaetzlich sofort nach eingehenden MeterValues geprueft. Lehnt die
Wallbox ab, wird beim naechsten Takt erneut versucht. Vorgaben je Person setzt
der Mitarbeiter selbst oder der Admin.

Chip-Kategorie abgeleitet
Chip mit Benutzer ist ein Mitarbeiter-Chip, ohne ein Gast-Chip. Vorher liessen
sich Zuordnung und Kategorie widersprechen. Die Migration loest dabei die
Pseudo-Person "Gast" auf, mit der der fehlende Begriff nachgebaut wurde.

Umbenennung easy-occp auf easy-ocpp
Im Produktnamen steckte ein Dreher, das Protokoll heisst OCPP. Betrifft Binary,
Cookie, Doku und Release-Workflow. Bestehende Installationen verlieren nichts:
existiert nur die alte data/easy-occp.db, wird sie weiterverwendet.

Dazu
Projektseite in vier Sprachen unter docs/ mit hreflang, Canonical, Open Graph,
JSON-LD und Sitemap. READMEs auf die im Feld gebraeuchlichen Begriffe
ausgerichtet (CSMS, OCPP-Server, self-hosted). Version 0.4.0. Gedankenstriche
aus Code, Doku und UI-Texten entfernt; migrations/0001 und 0002 blieben dabei
unangetastet, weil sqlx eine Pruefsumme ueber den Dateiinhalt bildet.
v0.4.0
2026-09-01 12:36:57 +02:00
ManuelandClaude Opus 5 b180b471bb Migrations-Prüfsummen: Zeilenenden fixieren (v0.3.1)
Bestehende Installationen brachen beim Start mit dem Windows-Release-Binary
ab: "migration 1 was previously applied but has been modified" – obwohl die
Migration inhaltlich seit v0.2.0 unverändert ist.

Ursache: .gitattributes enthielt nur "* text=auto". Zusammen mit
core.autocrlf=true (Standard auf windows-latest-Runnern) checkt
actions/checkout die .sql-Dateien als CRLF aus. sqlx::migrate! bettet den
Dateiinhalt zur Compile-Zeit ein und bildet darüber eine SHA-384-Summe, die
beim Start gegen _sqlx_migrations geprüft wird:

  0001_initial.sql mit LF   -> 0651a39f...
  0001_initial.sql mit CRLF -> 90093a9a...

Die GitHub-Windows-Builds v0.2.0 und v0.3.0 tragen die CRLF-Variante, lokal
gebaute Exes und der Linux-Build die LF-Variante. Datenbanken, die mit einem
LF-Binary angelegt wurden, kollidieren daher mit dem Windows-Release-ZIP.

Zwei Änderungen:

1. .gitattributes erzwingt "*.sql text eol=lf". Ab jetzt erzeugen Windows-
   und Linux-Runner identische Prüfsummen.

2. db::repair_line_ending_checksums() hebt eine gespeicherte Prüfsumme vor
   dem Migrationslauf an – aber nur, wenn sie exakt der Zeilenenden-Variante
   desselben SQL entspricht, in beide Richtungen. Ohne diesen Schritt würde
   Punkt 1 jede Installation brechen, die mit dem CRLF-Binary aus dem
   GitHub-ZIP von v0.2.0/v0.3.0 angelegt wurde. Echte inhaltliche
   Abweichungen führen weiterhin zum Abbruch durch sqlx.

sha2 wird dafür direkte Dependency (war bereits transitiv gelockt, die
Auflösung ändert sich nicht).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
v0.3.1
2026-08-19 09:51:50 +02:00
ManuelandClaude Fable 5 ae1b00f7df Totes Feld ChipRow.employee_name entfernen
Das Feld wurde nie gelesen (das Template arbeitet mit is_assigned_to);
damit entfaellt auch der LEFT JOIN in der Chip-Liste. Build ist jetzt
warnungsfrei.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 23:44:47 +02:00
ManuelandClaude Fable 5 6f016b82cb Mehrsprachige UI und Doku (Deutsch, English, Français, Español)
Web-UI komplett viersprachig: zentrale Übersetzungstabelle (src/i18n.rs,
~200 Keys), Spracherkennung via lang-Cookie und Accept-Language mit
Umschalter in der Topbar (Fallback Englisch). Übersetzt sind alle
Templates, Fehlermeldungen, CSV-Export und der PDF-Monatsbericht
(inkl. Monatsnamen und sprachspezifischem Datumsformat).

Doku viersprachig: README.md jetzt Englisch mit README.de/fr/es.md,
Installations-Guide als ANLEITUNG.md (DE) + INSTALL(.fr/.es).md;
alle Sprachversionen landen im Release-Paket.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v0.3.0
2026-08-18 23:41:22 +02:00
ManuelandClaude Fable 5 e5dab3e08c easy-occp v0.2.0 – OCPP-Wallbox-Management mit Live-Messwerten
Erstveröffentlichung: OCPP 1.6J Central System mit Web-UI (axum, askama,
htmx, SQLite). Chip-/Mitarbeiterverwaltung, Remote-Start/Stop, Statistik,
Live-Anzeige von kWh/Leistung/SoC während der Ladung inkl. automatischer
MeterValues-Konfiguration der Wallboxen.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
v0.2.0
2026-08-18 23:15:12 +02:00