v1.10+v1.11: Bestandsverwaltung (Häuser & Wohnungen) + KI-Antworten via n8n/Ollama

This commit is contained in:
2026-10-04 11:52:29 +02:00
parent a7b959b9fb
commit bedbda640b
11 changed files with 774 additions and 5 deletions
+31
View File
@@ -189,6 +189,37 @@ tar -czf mp-dist.tar.gz -C dist .
## 8. Verlauf / offene Punkte
**Erledigt 04.10. (v1.11):** KI-Antworten auf Schadenmeldungen via n8n/Ollama.
Kette: Mieter-Ticket → mp-api `kiBenachrichtigen()` (POST an n8n, fire-and-
forget) → n8n-Workflow `mpKiAntwort0001` (Webhook POST `mp-schadensmeldung`,
responseMode onReceived; Knoten: Webhook → Code „KI-Antwort generieren
(Ollama)" → Code „Antwort ins Portal posten") → Ollama
`http://192.168.188.100:11434/api/generate` Modell `qwen2.5:7b` → POST
`https://mieterportal.hocks.eu/api/ki-antwort` (KI_API_TOKEN-Bearer) →
Nachricht als „Hinterstein Immobilien (KI-Assistent)" im Ticket-Thread + Mail
an Mieter. Konfig in /opt/mieterportal/portal.env: KI_API_TOKEN +
N8N_TICKET_WEBHOOK. n8n 2.41-Hürden beim direkten DB-Import: publizierte
Knoten in `workflow_history` (versionId = activeVersionId, authors='{}'
NOT NULL), `shared_workflow`-Zeile (projectId M7v7qD1yefYEQ9Dn, role
workflow:owner), Webhook-Knoten braucht node-level `webhookId`, fehlgeschlagener
`workflow_publication_outbox`-Eintrag blockiert Reaktivierung (Zeile löschen +
`docker restart n8n`). E2E verifiziert: KI-Antwort im Thread + Mail sauber.
**Erledigt 04.10. (v1.10):** Bestandsverwaltung. Neue Tabelle `buildings`
(PK name; Pflicht: Adresse, Baujahr, Stockwerke, Etagenhöhe, Wohneinheiten,
Quadratmeter), idempotent vorbefüllt mit den 3 Demo-Häusern (`seedeHaeuser()`).
Wohnungen bleiben über `units.building` (Text = Hausname) verknüpft; Haus-
Umbenennung zieht units + meters in einer Transaktion mit. API (adminOnly):
POST/PATCH /api/buildings, POST/PATCH /api/units mit Validierung. Frontend:
neue Admin-Seite /bestand („Häuser & Wohnungen", Nav hinter Zählerstände) mit
Haus-Karten (inkl. „angelegt: X von Y Wohneinheiten") und gefilterter
Wohnungsliste, je Anlegen/Bearbeiten-Dialog. Robustheit: uncaughtException/
unhandledRejection-Handler in index.js – defekte JSON-Bodies von außen haben
den mp-api-Prozess gekillt (502er), jetzt 500 + Dienst läuft weiter.
E2E verifiziert: anlegen/editieren/umbenennen (Kaskade), Validierung 400,
Mieter 403. Achtung Testfall: curl verbindet --data-binary + -d mit „&"
→ invalider JSON → 500.
**Erledigt 04.10. (v1.9):** Zähler-Modul + Registrierungs-Mail + getrennter Name.
Neue Tabelle `meters` (Zählernummer, Art Strom/Wasser/Gas/Wärme/Sonstiges,
Stand, Stand-Datum, Wohneinheit nullable, Haus, Pflege-Zeitstempel) mit