# Karch Geräteservice – eigenständige App (Port 3040)

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

Zweck: Mitarbeiter tragen Geräte/Werkzeuge früh **aus** und abends wieder **ein** –
per QR-Scan oder Nummer. Du siehst jederzeit zentral, **wer – welches Gerät – seit wann**
hatte, inkl. Übergaben, Schäden, Überfällig-Warnung und Wartung.

## 1. Hochladen (WinSCP)

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

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

Der Ordner `data/` wird beim ersten Start automatisch angelegt.

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

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

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

## 3. Aufrufen

- **Admin / Büro:** http://dev2.karch-service.de:3040/login
- **Mitarbeiter:**  http://dev2.karch-service.de:3040/m
  (Der QR-Aufkleber am Gerät führt nach dem Login direkt zum richtigen Gerät.)

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

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

- **Admin:** Benutzer `admin`, Passwort `karch-start-2026`
  (oder vorher per Environment `ADMIN_USER` / `ADMIN_PASS` setzen). Ändern:
  Admin → **Einstellungen → Admin-Passwort**.
- **Mitarbeiter-Start-PINs:** 1001–1015 (Reihenfolge unten). Ändern:
  Admin → **Mitarbeiter & PINs**.

| Mitarbeiter | Start-PIN | | Mitarbeiter | Start-PIN |
|---|---|---|---|---|
| Christian Karch | 1001 | | Jacek Czyzewski | 1010 |
| Helena Karch | 1002 | | Dawid Bielecki | 1011 |
| Andreas Engels | 1003 | | Petru-Nicolae Bogdan | 1012 |
| Dominik Wagner | 1004 | | Hans Melzer | 1013 |
| Tobias Gutgesell | 1005 | | Kevin Wirth | 1014 |
| Dominik Reith | 1006 | | Andy | 1015 |
| Roland Schneider | 1007 | | | |
| Selina Wehner | 1008 | | | |
| Anitta Roßbach | 1009 | | | |

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

## 5. Täglicher Ablauf

1. Mitarbeiter öffnet `…:3040/m`, wählt Namen + PIN.
2. **Scannen** (Kamera) oder **Nummer** eingeben → Geräteseite.
3. **Ausgeben** (früh) · **Zurückgeben** (abends, mit Zustand/Tank/Betriebsstunden)
   · **Übergeben** an einen Kollegen · bei Rückgabe **Schaden** melden.
4. Büro sieht alles unter **Dashboard**, **Protokoll** (mit Excel/CSV-Export)
   und **Schäden**.

## 6. QR-Codes drucken & herunterladen

Unter **Admin → Geräte**:

- **🏷 Druck** (pro Gerät) bzw. **🏷 Etiketten drucken**: Druckansicht (Standard 50 × 25 mm, nur QR + Nummer).
- **⬇ PNG / ⬇ SVG** (pro Gerät): lädt den QR-Code als Bilddatei herunter (Dateiname `QR_001.png`).
  PNG = fertiges Pixelbild, SVG = Vektor (verlustfrei skalierbar, ideal fürs Drucken).
- **⬇ Alle QR (PNG-ZIP)** bzw. **(SVG-ZIP)**: alle QR-Codes auf einmal als ZIP-Datei
  (im ZIP heißen die Dateien `001.png`, `002.png`, …).
- **⬇ CSV (Label-Software)**: Semikolon-getrennt, Windows-1252 – für ComplyPro/GoLabel.
- Etikettengröße und QR-Inhalt unter **Einstellungen**:
  - *Link zur Geräteseite* (empfohlen): Scannen öffnet die App direkt beim Gerät.
  - *Nur Gerätenummer*: QR enthält nur die Nummer.
  - Auf dem Etikett steht immer nur QR + Nummer, kein weiterer Text.

## 7. Nützliche Befehle

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

## 8. 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.

## 9. Hinweise

- Zugriff läuft wie bei den anderen Apps über `http://…:3040` (ohne HTTPS).
  Für die **Kamera** wird https gebraucht – dafür einen Reverse-Proxy davor setzen
  und `NODE_ENV=production` in der .service ergänzen (Cookies „Secure"). Ohne https
  klappt die Nummern-Eingabe trotzdem.
- **Datenschutz:** Die App protokolliert, welcher Mitarbeiter wann welches Gerät
  hatte. Vor dem Rollout Team transparent informieren (Zweck: Geräteverwaltung),
  ggf. Betriebsrat einbeziehen und eine Löschfrist für alte Protokolle festlegen.
