v1.25: Zaehlerverlauf pro Zaehler inkl. Anomalitaetserkennung mit E-Mail-Benachrichtigung

This commit is contained in:
2026-10-04 16:18:26 +02:00
parent 29d32deef5
commit ca12bc9f46
8 changed files with 561 additions and 16 deletions
+18
View File
@@ -189,6 +189,24 @@ tar -czf mp-dist.tar.gz -C dist .
## 8. Verlauf / offene Punkte
**Erledigt 04.10. (v1.25):** Zählerverlauf + Anomalitätserkennung. Neue Tabelle
meter_readings (seq BIGSERIAL als Sortierung – erstellt_am ist Text und sortiert
lexikografisch falsch!): jeder erfasste Stand bleibt als Eintrag bestehen
(quelle erstbefund/manuel/mieter, erfasst_von, anomalie + anomalie_grund);
meters.stand bleibt aktuellster Wert (Cache). Modul server/src/zaehlerVerlauf.js:
pruefeAnomalie (Ruecklauf | Datum in Zukunft | rueckdatiert | Stillstand ≥60 Tage
| Verbrauchsspitze >4× Median-Tagesrate, nur ≥2 Intervalle + Delta ≥10),
standEintragen (insert + Mail an Verwaltung bei Anomalie, HTML-Karte mit
Button), erstbefundFehlende (Start-Einmal-Backfill bestehender Zähler).
Endpunkte: GET/POST /api/meters/:id/readings (Mieter nur eigene Einheit,
meterFuer-Helper prüft), DELETE …/readings/:rid (admin, baut meters-Cache neu).
Bootstrap: letzte_anomalie via Subquery (ORDER BY seq DESC). Frontend
src/pages/Zaehler.tsx: VerlaufDialog (Liste neueste zuerst, Auffälligkeits-
Badge, Löschen für Verwaltung), StandEintragenDialog (Mieter + Verwaltung,
Warnbox bei Anomalie statt sofortigem Schließen), Anomalie-Badge auf der Karte.
Achtung Git-Bash: Pfad-Argumente an node werden von MSYS umgewandelt –
Pfade an node-Skripte OHNE führenden / übergeben.
**Erledigt 04.10. (v1.24):** Anleitungsseite /anleitung (Seite „Anleitung" im
Menü, sichtbar für Mieter und Verwaltung). Inhalte rollenbasiert in
src/data/anleitung.ts (Abschnitte je gruppe 'mieter'|'verwaltung'); Verwaltung