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
+17
View File
@@ -138,6 +138,23 @@ CREATE TABLE IF NOT EXISTS meters (
);
CREATE INDEX IF NOT EXISTS idx_meters_unit ON meters(unit_id);
-- Zählerverlauf (v1.25): jeder abgelesene Stand bleibt als Listeneintrag
-- bestehen; meters.stand ist jeweils der aktuellste Wert (Cache).
CREATE TABLE IF NOT EXISTS meter_readings (
id TEXT PRIMARY KEY,
seq BIGSERIAL, -- Einfügereihenfolge (verlässliche Sortierung)
meter_id TEXT NOT NULL REFERENCES meters(id) ON DELETE CASCADE,
stand NUMERIC(12,3) NOT NULL,
stand_am TEXT NOT NULL, -- ISO yyyy-mm-dd oder de-DE
erfasst_von TEXT NOT NULL DEFAULT '', -- Name des erfassenden Nutzers
quelle TEXT NOT NULL DEFAULT 'manuel',
CHECK (quelle IN ('erstbefund','manuel','mieter')),
anomalie BOOLEAN NOT NULL DEFAULT FALSE,
anomalie_grund TEXT, -- gesetzt bei Auffälligkeit
erstellt_am TEXT NOT NULL
);
CREATE INDEX IF NOT EXISTS idx_meter_readings_meter ON meter_readings(meter_id);
CREATE TABLE IF NOT EXISTS buildings (
name TEXT PRIMARY KEY, -- eindeutiger Hausname (z. B. "Hauptstraße 12")
adresse TEXT NOT NULL,