Files
Mieterportal/server/src/seed-data.js
T
ah-admin 311153b3c3 v1.3: Serverseitige Datenbank (PostgreSQL + Node-API) ersetzt localStorage
- server/: Express-API (Auth, Bootstrap, Tickets, Threads, Benutzerverwaltung, Codes)
  mit pg-Schema (11 Tabellen), idempotem Seed (50 Wohnungen, 552 Buchungen)
- mp-db (PostgreSQL 16, Volume mp_pgdata) + mp-api im Compose-Stack,
  nginx proxiet /api/ an mp-api; deploy.sh baut API-Image auf dem Server
- Frontend: Store laedt /api/bootstrap, Schreibzugriff async, kein localStorage
  mehr (ausser Theme), Ladebildschirm beim Session-Check, vite-Proxy fuer Dev
- Rollenrechte serverseitig: Mieter nur eigene Wohnung (getestet, 403-Verweis)
- Mail-Benachrichtigungen komplett serverseitig (server/src/mail.js)
- beispieldaten.py schreibt server/seed/generated.json; Verwaltungs-Mail = axel@hocks.eu
- E2E live verifiziert: Login, Scoping, Ticket + Zustellung (status=sent),
  Registrierung, Codes; Testdaten bereinigt; Doku nachgefuehrt
2026-10-02 12:54:44 +02:00

145 lines
7.2 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/** Handgeschriebene Demo-Daten (vormals src/data/seed.ts).
*
* units + transactions kommen maschinell aus seed/generated.json
* (beispieldaten.py). Die Verwaltungs-E-Mail ist bewusst ein echtes,
* zustellbares Postfach (axel@hocks.eu), damit Benachrichtigungen ankommen;
* im Portal änderbar (Benutzerverwaltung).
*/
const DEMO_HASH = 'c57a5df4f97ed6914116e5fd1348406064834f22503d890eb571af442ac4b4c3' // sha256("0815")
const users = [
{
id: 'b-joseph',
benutzername: 'j.hinterstein',
name: 'Joseph Hinterstein',
passwort_hash: DEMO_HASH,
rolle: 'verwaltung',
email: 'axel@hocks.eu',
einheit_id: null,
aktiv: true,
erstellt_am: '01.03.2024',
},
{
id: 'b-anna',
benutzername: 'a.berger',
name: 'Anna Berger',
passwort_hash: DEMO_HASH,
rolle: 'mieter',
email: 'anna.berger@example.de',
einheit_id: 'hs-7',
aktiv: true,
erstellt_am: '01.03.2024',
letzter_login: '02.10.2026, 09:12',
},
{
id: 'b-jonas',
benutzername: 'm.wolf',
name: 'Jonas Klein',
passwort_hash: DEMO_HASH,
rolle: 'mieter',
email: 'jonas.klein@example.de',
einheit_id: 'rw-4',
aktiv: true,
erstellt_am: '15.08.2025',
},
]
const registrationCodes = [
{ code: 'MP-2026-0815', einheit_id: 'ap-2', erstellt_am: '02.10.2026', verwendet_am: null },
]
const tickets = [
{
id: 't-1', unit_id: 'hs-7', tenant: 'Anna Berger',
title: 'Wasserhahn im Bad tropft',
description: 'Der Wasserhahn am Waschbecken tropft seit einigen Tagen permanent, auch bei ganz zugedrehtem Ventil.',
category: 'Sanitär', priority: 'mittel', status: 'in Bearbeitung', created_at: '28.09.2026',
},
{
id: 't-2', unit_id: 'hs-7', tenant: 'Anna Berger',
title: 'Briefkastenschlüssel defekt',
description: 'Der Schlüssel für den Briefkasten lässt sich nicht mehr drehen, vermutlich Schloss verklebt.',
category: 'Schlüssel', priority: 'niedrig', status: 'offen', created_at: '30.09.2026',
},
{
id: 't-3', unit_id: 'rw-4', tenant: 'Jonas Klein',
title: 'Heizkörper wird nicht warm',
description: 'Der Heizkörper im Wohnzimmer bleibt kalt, obwohl das Thermostat voll aufgedreht ist.',
category: 'Heizung', priority: 'hoch', status: 'offen', created_at: '01.10.2026',
},
{
id: 't-4', unit_id: 'ap-2', tenant: 'Anja Roth',
title: 'Rollladen im Schlafzimmer klemmt',
description: 'Der elektrische Rollladen fährt nur noch zur Hälfte hoch.',
category: 'Fenster / Rollladen', priority: 'mittel', status: 'in Bearbeitung', created_at: '25.09.2026',
},
{
id: 't-5', unit_id: 'hs-14', tenant: 'Markus Lange',
title: 'Flurbeleuchtung im Treppenhaus defekt',
description: 'Im 3. OG ist die Bewegungsmelder-Leuchte ausgefallen.',
category: 'Elektrik', priority: 'hoch', status: 'erledigt', created_at: '18.09.2026',
},
{
id: 't-6', unit_id: 'rw-9', tenant: 'Sandra Weiß',
title: 'Schimmel im Bad – Lüftungsproblem?',
description: 'In der Fensterfalz des Bades sammelt sich Kondenswasser, bitte um Prüfung der Lüftung.',
category: 'Sanitär', priority: 'hoch', status: 'in Bearbeitung', created_at: '22.09.2026',
},
{
id: 't-7', unit_id: 'ap-11', tenant: 'Thomas Neumann',
title: 'Markise auf dem Balkon lose',
description: 'Die Befestigung der Markise wackelt bei Wind deutlich.',
category: 'Balkon / Außenanlage', priority: 'hoch', status: 'offen', created_at: '29.09.2026',
},
{
id: 't-8', unit_id: 'hs-3', tenant: 'Petra Hoffmann',
title: 'Spülmaschinen-Anschluss undicht',
description: 'Unter der Spüle steht Wasser, vermutlich kommt es vom Geräteanschluss.',
category: 'Sanitär', priority: 'mittel', status: 'erledigt', created_at: '10.09.2026',
},
]
// Mieter-Namen für tickets der fremden Wohnungen stammen aus generated.json;
// seed.js ersetzt leere/Platzhalter-Namen beim Einfügen aus der units-Tabelle.
const documents = [
{ id: 'd-1', unit_id: 'hs-7', title: 'Mietvertrag Anna Berger – Hauptstraße 12, Whg. 7', category: 'Mietvertrag', size: '1,8 MB', date: '01.03.2024' },
{ id: 'd-2', unit_id: 'hs-7', title: 'Nebenkostenabrechnung 2025', category: 'Nebenkostenabrechnung', size: '640 KB', date: '31.05.2026' },
{ id: 'd-3', unit_id: 'hs-7', title: 'Heizkostenabrechnung 2025', category: 'Nebenkostenabrechnung', size: '410 KB', date: '31.05.2026' },
{ id: 'd-4', unit_id: null, title: 'Hausordnung – gültige Fassung 2026', category: 'Hausordnung', size: '220 KB', date: '01.01.2026' },
{ id: 'd-5', unit_id: null, title: 'Protokoll Hausversammlung 14.06.2026', category: 'Protokoll', size: '350 KB', date: '14.06.2026' },
{ id: 'd-6', unit_id: null, title: 'Mülltonnen-Belegungsplan & Abfuhrtermine 2026', category: 'Sonstiges', size: '180 KB', date: '02.01.2026' },
{ id: 'd-7', unit_id: 'rw-4', title: 'Mietvertrag – Ringweg 3, Whg. 4', category: 'Mietvertrag', size: '1,6 MB', date: '15.08.2025' },
{ id: 'd-8', unit_id: 'ap-2', title: 'Mietvertrag – Am Park 5, Whg. 2', category: 'Mietvertrag', size: '1,7 MB', date: '01.06.2024' },
]
const threads = [
{
id: 'm-1', unit_id: 'hs-7', tenant: 'Anna Berger',
subject: 'Mietkaution – Rückzahlungsnachweis',
unread_by_admin: false, unread_by_tenant: true,
messages: [
{ id: 'm-1-a', from_role: 'tenant', author: 'Anna Berger', text: 'Guten Tag, könnten Sie mir bitte den aktuellen Stand meiner Mietkaution mit Nachweis der Verzinsung zusenden?', at: '27.09.2026, 10:12' },
{ id: 'm-1-b', from_role: 'admin', author: 'Joseph Hinterstein', text: 'Guten Tag Frau Berger, die Kaution wurde mit 1.500,00 € auf dem Treuhandkonto verbucht. Die Verzinsung für 2025 beträgt 18,40 € – den Nachweis finden Sie ab sofort auch unter Dokumente.', at: '29.09.2026, 09:03' },
],
},
{
id: 'm-2', unit_id: 'rw-9', tenant: 'Sandra Weiß',
subject: 'Terminabstimmung Wohnungsbegehung (Schimmel)',
unread_by_admin: true, unread_by_tenant: false,
messages: [
{ id: 'm-2-a', from_role: 'tenant', author: 'Sandra Weiß', text: 'Aufgrund der Schadensmeldung schlage ich einen Begehungstermin nächste Woche vor. Passt Mittwoch oder Freitag Nachmittag?', at: '01.10.2026, 08:45' },
],
},
]
const announcements = [
{ id: 'a-1', title: 'Wasserabschaltung Hauptstraße 12', text: 'Am Donnerstag, 08.10.2026, 09:00–13:00 Uhr findet eine Druckerhöhungs-Pumpen-Wartung statt. In dieser Zeit steht kein Wasser zur Verfügung.', date: '02.10.2026', tag: 'Technik' },
{ id: 'a-2', title: 'Herbst-Hausbegehung mit Hausmeister', text: 'Am Samstag, 17.10.2026, 10:00 Uhr geht es gemeinsam durch alle Häuser. Anschließend gibt es Kaffee im Hof von Am Park 5.', date: '28.09.2026', tag: 'Termin' },
{ id: 'a-3', title: 'Tiefgarage Ringweg 3: Reinigung', text: 'Die Tiefgarage wird am 21.10.2026 gereinigt. Bitte Fahrzeuge bis 07:30 Uhr entfernen, sonst erfolgt ein kostenpflichtiges Versetzen.', date: '20.09.2026', tag: 'Hinweis' },
{ id: 'a-4', title: 'Nebenkostenabrechnungen 2025 versandt', text: 'Alle Abrechnungen liegen digital im Dokumentenbereich vor. Nachzahlungen sind bis 31.10.2026 überwiesen.', date: '31.05.2026', tag: 'Abrechnung' },
]
module.exports = { users, registrationCodes, tickets, documents, threads, announcements }