# Karch Objektservice – eigenständige App (Port 3030)

Läuft **genau wie deine anderen Apps** (Betriebs-Dashboard 3010, Objektservice 3020):
reines Node ohne Zusatzpakete, JSON-Datei als Speicher, als systemd-Dienst.
Kein `npm install` nötig.

Drei Bereiche wie im Prototyp: **Admin/Büro**, **Mitarbeiter** (QR-Stempeln, PIN),
**Kunde** (Leistungsnachweis über persönlichen Link).

## 1. Hochladen (WinSCP)

Den kompletten Ordner nach `/var/www/html/` ziehen, sodass es so aussieht:

```
/var/www/html/karch-objektservice/
├── server.js
├── install.sh
├── karch-objektservice.service
├── ANLEITUNG.md
├── lib/        (util.js, views.js)
└── public/     (app.css, admin.js, qrcode-generator.js)
```

> Tipp: den vorher hochgeladenen Ordner „Karch-Objektservice" mit den
> Unterordnern 1_/2_/3_ kannst du löschen – das war die Paket-Ablage.
> Für den Server zählt nur dieser App-Ordner.

## 2. Einmalig einrichten (PuTTY, als root)

```
cd /var/www/html/karch-objektservice
bash install.sh
```

Der Dienst startet sofort und automatisch nach jedem Server-Neustart.

## 3. Aufrufen

- **Admin / Büro:** http://dev2.karch-service.de:3030/login
- **Mitarbeiter:**  http://dev2.karch-service.de:3030/m
  (Der QR-Aufkleber am Objekt führt direkt hierher zum richtigen Objekt.)
- **Kunde:** je Objekt ein eigener Link – im Admin unter „Kunden & Objekte → Kundenlink".

Falls nicht erreichbar: `ufw allow 3030` (bzw. Port beim Anbieter freigeben).

## 4. Erst-Zugang (SOFORT ändern!)

- **Admin:** Benutzer `admin`, Passwort `karch-start-2026`
  (oder vorher in `.env` / per Environment `ADMIN_USER` / `ADMIN_PASS` setzen).
- **Demo-Mitarbeiter-PINs:** Roland 4172 · Dawid 6644 · Kevin 3390
  (im Admin unter „Kolonne & PINs" ändern/neu anlegen).

Den ausgegebenen Erst-Login findest du auch mit:
`journalctl -u karch-objektservice | grep seed`

## 5. Nützliche Befehle

```
systemctl status karch-objektservice     # läuft es?
systemctl restart karch-objektservice     # neu starten
journalctl -u karch-objektservice -f      # Live-Log
```

## 6. Daten & Backups

- Alle Daten: `data/db.json` (wird beim ersten Start angelegt).
- Automatische Tages-Backups: `data/backup-JJJJ-MM-TT.json` (30 Tage).
- Wiederherstellen: Dienst stoppen, gewünschtes Backup nach `data/db.json`
  kopieren, Dienst starten.

## 7. QR-Etiketten / ComplyPro

- Admin → Kunden & Objekte → **🏷 QR** druckt ein Etikett (Größe 90×120 mm).
- **⬇ Für ComplyPro (CSV)**: Semikolon-getrennt, Windows-1252 – im
  ComplyPro Label Designer über Reiter **Text** verknüpfen (siehe separate
  Anleitung „ComplyPro-QR-variabel").

## 8. Hinweise

- Zugriff läuft wie bei den anderen Apps über `http://…:3030` (ohne HTTPS).
  Für HTTPS einen Reverse-Proxy davor setzen und Cookies auf „Secure" stellen
  (`NODE_ENV=production` in der .service ergänzen) – erst DANN, wenn TLS aktiv ist.
- Live-Benachrichtigung (neuer Abschluss/Mangel) erscheint im Admin-Tab mit Ton,
  solange die Seite offen ist; zusätzlich optional Browser-Desktop-Meldung.
