# ClauseLens — Bedienungsanleitung (CLI, Web Studio & REST-API)

ClauseLens ist ein deterministischer, datenschutzkonformer Vertragsrisiko-Scanner für deutsche B2B-Verträge und AGB (§§ 305–310 BGB). Zero Dependencies, Node ≥ 18.

---

## 1. Installation & Schnellstart

```bash
# Voraussetzungen: Node.js >= 18 installiert
node -v

# 1. Einmalig: Account registrieren & Seat für dieses Gerät aktivieren
node bin/clauselens.js register --email kanzlei@recht.de --name "Dr. Schmidt"
# oder mit vorhandener Lizenz anmelden:
node bin/clauselens.js login --email kanzlei@recht.de --key CL-PRO-...

# 2. Vertrag analysieren:
node bin/clauselens.js analyze mein_vertrag.pdf --pdf befund.pdf --sarif report.sarif
```

---

## 2. CLI-Befehlsreferenz

### 2.0 Account- & Seat-Lizenzierung (`login`, `register`, `whoami`, `logout`)
ClauseLens arbeitet 100% lokal on-premise, bindet jedoch jeden Arbeitsplatz über einen kryptografischen Hardware-Fingerprint an einen lizenzierten Nutzer-Account mit Online-Seat-Validierung.

```bash
# Neuen Account anlegen und Starter-Seat aktivieren:
node bin/clauselens.js register --email nutzer@firma.de --name "Max Mustermann"

# Mit Lizenzschlüssel anmelden und Seat auf diesem Gerät aktivieren:
node bin/clauselens.js login --email nutzer@firma.de --key "CL-PRO-eyJ..."

# Aktiven Account, Seat-ID und Hardware-Fingerprint abfragen:
node bin/clauselens.js whoami

# Seat auf diesem Gerät freigeben (z. B. vor Rechnerwechsel):
node bin/clauselens.js logout
```

### 2.1 Einzelvertragsanalyse (`analyze`)
Analysiert eine einzelne Datei (`.pdf`, `.docx` oder `.txt`).

```bash
# Terminal-Zusammenfassung ausgeben:
node bin/clauselens.js analyze vertrag.pdf

# Versiegelten mehrseitigen DIN-A4 Vektor-PDF-Bericht erstellen:
node bin/clauselens.js analyze vertrag.pdf --pdf audit.pdf

# OASIS SARIF 2.1.0 für GitHub Code Scanning erstellen:
node bin/clauselens.js analyze vertrag.pdf --sarif results.sarif

# Interaktiven, selbstständigen HTML-Bericht erstellen:
node bin/clauselens.js analyze vertrag.pdf --html risikobericht.html

# Strukturiertes JSON und Markdown gleichzeitig exportieren:
node bin/clauselens.js analyze vertrag.docx --json result.json --report report.md

# Spezielles Branchenprofil anwenden:
node bin/clauselens.js analyze saas_agb.txt --profile b2b_saas

# Eigene Firmen-Konfiguration einbinden:
node bin/clauselens.js analyze vertrag.pdf --config clauselens.config.json
```

#### Verfügbare Optionen für `analyze`:
- `--pdf <pfad>`: Schreibt einen gerichtsfesten mehrseitigen DIN-A4 Vektor-PDF-Bericht mit SHA-256 Siegel.
- `--sarif <pfad>`: Schreibt einen OASIS SARIF 2.1.0 Bericht für CI/CD Security-Pipelines.
- `--html <pfad>`: Schreibt einen interaktiven HTML-Bericht mit SVG-Gauges, Filtern und Redline-Kopierfunktion.
- `--json <pfad>`: Schreibt das Analyseergebnis als schema-konformes JSON.
- `--report <pfad>`: Schreibt einen Markdown-Risikobericht.
- `--format <fmt>`: `auto` (Standard), `pdf`, `docx` oder `txt` erzwingen.
- `--profile <name>`: Prüfprofil wählen: `default`, `b2b_saas`, `freelance_consulting`, `procurement_strict`.
- `--config <pfad>`: Eigene Konfigurationsdatei laden.
- `--license <key>`: Pro- oder Enterprise-Lizenzschlüssel angeben.

---

### 2.2 Portfolio- & Batch-Audit (`batch`)
Prüft ganze Verzeichnisse oder Sammlungen von Verträgen auf einen Schlag.

```bash
# Alle Verträge im aktuellen Verzeichnis scannen:
node bin/clauselens.js batch ./vertraege --html portfolio.html --json portfolio.json
```

**Ergebnis:**
- Aggregierter Portfolio-Risiko-Score
- Übersicht über Verträge mit hohem/mittlerem Risiko
- Top-Risikoklauseln im gesamten Vertragsbestand

---

### 2.3 Versionsvergleich & Risikodelta (`compare`)
Vergleicht die ursprüngliche Fassung eines Vertrags mit dem Gegenvorschlag der Gegenseite nach Nachverhandlungen:

```bash
node bin/clauselens.js compare entwurf_v1.docx gegenentwurf_v2.docx --report delta.md --html delta.html
```

**Ergebnis:**
- Berechnet das genaue Punkte-Delta des Risikoscores (z. B. von 82/100 auf 24/100 gesenkt)
- Zeigt behobene Risiken
- Entlarvt neu eingeschleuste Risiken

---

### 2.4 Lokalen Webserver & Studio starten (`serve`)
Startet den integrierten HTTP-Server mit Zero Dependencies:

```bash
node bin/clauselens.js serve --port 3000
# oder direkt:
npm start
```

- **Landingpage:** `http://localhost:3000/` (Interaktive Sandbox mit Drag & Drop Upload)
- **ClauseLens Studio:** `http://localhost:3000/app` (Interaktives Dokumentenaudit & Redlines)
- **OpenAPI 3.0 Explorer:** `http://localhost:3000/docs`
- **REST-API:** `http://localhost:3000/api/v1/...`

---

### 2.5 Lizenzschlüssel generieren (`license-gen`)
Für Administratoren oder Reseller zum Erzeugen signierter Offline-Lizenzschlüssel:

```bash
node bin/clauselens.js license-gen --tier pro --licensee "Musterfirma GmbH" --expires 2028-12-31
```

---

## 3. REST-API-Endpunkte & Developer Hub

### `GET /docs` & `GET /api/v1/openapi.json`
Liefert die interaktive API-Dokumentation bzw. die maschinenlesbare OpenAPI 3.0.3 Spezifikation.

### `GET /api/v1/health`
Liefert Status, Engine-Version und Uptime.
```bash
curl http://localhost:3000/api/v1/health
```

### `GET /api/v1/rules`
Liefert den vollständigen Katalog aller 40 BGB-Klauseldetektoren und verfügbaren Prüfprofile.
```bash
curl http://localhost:3000/api/v1/rules
```

### `POST /api/v1/extract`
Extrahiert Text aus binären PDF- oder DOCX-Dateien ohne Parsing-Hürden:
```bash
curl -X POST http://localhost:3000/api/v1/extract \
  -H "Content-Type: application/octet-stream" \
  --data-binary @vertrag.pdf
```

### `POST /api/v1/analyze`
Analysiert übergebenen Vertragstext. Unterstützt optional `?format=pdf` für direkten PDF-Download:
```bash
curl -X POST http://localhost:3000/api/v1/analyze \
  -H "Content-Type: application/json" \
  -d '{"text": "Die Haftung ist für sämtliche Schäden ausgeschlossen.", "profile": "default"}'
```

### `POST /api/v1/compare`
Vergleicht zwei Vertragstexte und beziffert das Risikodelta.
```bash
curl -X POST http://localhost:3000/api/v1/compare \
  -H "Content-Type: application/json" \
  -d '{"text1": "Die Haftung ist ausgeschlossen.", "text2": "Die Haftung gilt gesetzlich."}'
```

### `POST /api/v1/batch`
Auditiert eine Sammlung von Verträgen in einem einzigen Request.

### `GET /api/v1/account/status`
Fragt den Status des aktuellen Geräte-Seats und den Hardware-Fingerprint ab.

### `POST /api/v1/account/login`
Aktiviert einen Lizenzschlüssel online für diesen Rechner.
```bash
curl -X POST http://localhost:3000/api/v1/account/login \
  -H "Content-Type: application/json" \
  -d '{"email": "kanzlei@recht.de", "licenseKey": "CL-PRO-..."}'
```
