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
+20 -6
View File
@@ -17,11 +17,24 @@ async function seed() {
await client.query('BEGIN')
for (const u of generated.units) {
// v1.36: Wohnung schlank (kein Mieter/Miete mehr am Objekt); Mieter
// werden als eigene Datensätze (Tabelle mieter) angelegt.
const status = u.status === 'vermietet' ? 'vermietet' : 'leerstand'
await client.query(
`INSERT INTO units (id, building, number, floor, size, cold_rent, warm_rent, tenant, status)
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,$9)`,
[u.id, u.building, u.number, u.floor, u.size, u.coldRent, u.warmRent, u.tenant, u.status],
`INSERT INTO units (id, building, number, floor, size, status) VALUES ($1,$2,$3,$4,$5,$6)`,
[u.id, u.building, u.number, u.floor, u.size, status],
)
if (u.tenant) {
const teile = String(u.tenant).trim().split(/\s+/)
const vorname = teile.length > 1 ? teile.slice(0, -1).join(' ') : ''
const nachname = teile.length > 1 ? teile[teile.length - 1] : teile[0]
await client.query(
`INSERT INTO mieter (id, unit_id, name, vorname, kaltmiete, warmmiete, vertragsstatus,
mietbeginn_am, erstellt_am, geaendert_am)
VALUES ($1,$2,$3,$4,$5,$6,'aktiv','',$7,$7)`,
[`mi-${u.id}`, u.id, nachname, vorname, Number(u.coldRent ?? 0), Number(u.warmRent ?? 0), new Date().toLocaleDateString('de-DE')],
)
}
}
for (const t of generated.transactions) {
@@ -32,9 +45,10 @@ async function seed() {
)
}
// Mieter-Namen in Tickets/Threads aus der units-Tabelle nachziehen
const { rows: unitRows } = await client.query('SELECT id, tenant FROM units')
const mieterVon = Object.fromEntries(unitRows.map((u) => [u.id, u.tenant]))
// Mieter-Namen in Tickets/Threads aus den Seed-Daten nachziehen
const mieterVon = Object.fromEntries(
generated.units.filter((u) => u.tenant).map((u) => [u.id, u.tenant]),
)
for (const t of tickets) {
await client.query(