v1.36: Mieterverwaltung (Mieter 1:1 pro Wohnung, Kaution/Vertrag/Dokumente) + v1.37: KI-Assistent (N8N + Kimi, 6 Portal-Tools)

This commit is contained in:
2026-10-04 20:51:00 +02:00
parent 9e74813e22
commit 9d14d367ee
22 changed files with 1840 additions and 107 deletions
+37
View File
@@ -189,6 +189,43 @@ tar -czf mp-dist.tar.gz -C dist .
## 8. Verlauf / offene Punkte
**Erledigt 04.10. (v1.36):** Mieterverwaltung. Mieter ist ein eigenes Objekt
1:1 zur Wohnung (Tabelle mieter: Name, Vorname, Telefon, E-Mail, Kalt-/Warmmiete,
Vertragsstatus aktiv|befristet|gekuendigt inkl. „gekündigt zum/von", Kaution
Höhe + Art bar|ueberwiesen|sonstiges (Freitext), Zahlung komplett|raten inkl.
Ratenanzahl, Mietzeitraum Start/Ende). Units schlank: Kaltmiete/Warmmiete/Mieter
aus API + Formularen entfernt (Spalten bleiben physisch), Status jetzt
vermietet|leerstand|unklar (Migration: frei→leerstand, units.tenant→mieter-Rows,
läuft bei Start automatisch). Server: Mieter-CRUD adminOnly (POST/PATCH/DELETE
/api/mieter, Anlage/Löschung setzt Unit-Status), Dokument-Upload pro Mieter +
Kategorie (POST /api/mieter/:id/dokumente?kategorie=, 1 Slot je Kategorie:
Personalausweis, SCHUFA-Auskunft, Bankauszug, Sonstiges; PDF+JPG/PNG; Upload
ersetzt, DELETE kaskadiert Dateien), Preview liefert Content-Type per Endung
(Bilder rendern in Lightbox/Thumbnails). Bootstrap: Mieter (Admin alle, Mieter
nur eigene Wohnung – PII-Schutz). Abrechnung + Mietvertrags-Aktivierung ziehen
Mietdaten aus mieter-Tabelle. Frontend: Seite /mieter (Listenansicht + Suche,
Vertrags-/Kaution-Badges), einspaltiger Dialog mit Dokumenten-Thumbnails
(Mini-iframe → PdfLightbox), Bestand/Wohnungsformular schlank, Dashboard/
Payments/BenutzerVerwaltung/Mietvertraege umgestellt. Deployt, E2E-getestet
(CRUD, Sonderfelder, Upload PDF+PNG, Kaskaden, Migration 44 Mieter live).
**Erledigt 04.10. (v1.37):** KI-Assistent (Verwaltung fragt, N8N + Kimi
antworten). Server (server/src/assist.js): POST /api/assist (auth+adminOnly,
leitet Frage+Verlauf an N8N_ASSIST_WEBHOOK weiter, x-assist-secret-Header,
90 s Timeout, erwartet JSON {antwort}) + 6 Tool-Endpunkte
/api/assist/tools/{leerstaende,mieteinnahmen,offene-schaeden,mieter-kontakt,
zaehler-anomalien,kosten} geschützt per Header x-assist-key=ASSIST_API_KEY,
kompakte JSON-Antworten direkt aus Postgres. Frontend: Seite /assistent
(Chat-UI, Verlauf nur Session, Beispielfragen, Admin-only). Env
(docker-compose + portal.env auf Server): N8N_ASSIST_WEBHOOK,
ASSIST_SHARED_SECRET, ASSIST_API_KEY (letztere zwei auf Server gesetzt).
N8N: importierbarer Workflow n8n/assist-workflow.json (Webhook → AI-Agent mit
Kimi OpenAI-kompatibel https://api.moonshot.ai/v1, Modell kimi-k2.6 → 6
HTTP-Tools → Respond {antwort}); Setup-Doku n8n/README-assistent.md.
Deployt, E2E-getestet (Tools 401/200, /api/assist sauberer 503 ohne Webhook).
**Offen:** Workflow in N8N importieren + Kimi-Credential + Header-Auth +
Webhook-URL in portal.env eintragen (Schritte in n8n/README-assistent.md).
**Erledigt 04.10. (v1.35):** Mietvertragsmodul (Verwaltung, Navigation
„Mietverträge", Admin-only). Workflow: anlegen → Entwurf-PDF → Versand an
zukünftigen Mieter → Upload unterschriebenen Vertrag → manuell aktivieren