:test`.
-### 2. Appwrite einrichten
+## Datenmodell (Kurzfassung)
-**Wichtig:** Für eine detaillierte Schritt-für-Schritt-Anleitung siehe [APPWRITE_SETUP.md](./APPWRITE_SETUP.md)
+Datum speichert WOMS als Text `dd.mm.yyyy`, Uhrzeiten als `hhmm` (z. B. `0930`).
-Kurzfassung:
-1. Erstelle ein Appwrite-Projekt auf [cloud.appwrite.io](https://cloud.appwrite.io)
-2. Erstelle eine `.env` Datei im Root-Verzeichnis:
-```env
-VITE_APPWRITE_ENDPOINT=https://cloud.appwrite.io/v1
-VITE_APPWRITE_PROJECT_ID=deine-project-id-hier
-VITE_APPWRITE_DATABASE_ID=woms-database
-```
-3. Folge der detaillierten Anleitung in `APPWRITE_SETUP.md` um die Datenbank-Struktur zu erstellen
+| Collection | Inhalt | Wichtige Felder |
+|---|---|---|
+| `workorders` | Tickets | `woid` (fortlaufend ab 10000), `topic`, `details`, `status`, `priority`, `type` (Webpage, Migration, Project, Akquise), `serviceType`, `customerId`/`customerName`, `assignedTo`/`assignedName`, `requestedBy`, `startDate`/`startTime`/`endTime`, `deadline` |
+| `worksheets` | Arbeitsblätter | `wsid` (fortlaufend ab 100000), `woid` + `workorderId`, `employeeId`/`employeeName`, `serviceType`, `oldStatus`/`newStatus`, `totalTime` (Minuten), `startDate`/`startTime`/`endDate`/`endTime`, `details`, `isComment`, `countsToPlan` (Abo-Stunden) |
+| `customers` | Kunden und Leads | `code` (Kundennummer), `name`/`companyName`, `customerStatus` (z. B. lead, customer, lost), `archived`, Rechnungsadresse, `invoiceNinjaClientId`, Portal-Zugang |
+| `employees` | Mitarbeiter | `userId` (Appwrite-Benutzer), `displayName`, `email`, `shortcode` (Kürzel) |
+| `websiteProjects` | Website-Projekte und Vorschauen | `customerId` (steuert, was der Kunde im Portal sieht), `ticketId` (Ziel der Git-Push-Arbeitsblätter), Subdomain, Repo |
+| `leads`, `leadPipeline`, `leadSettings` | Lead-Automatik | Recherche-Ergebnisse, Pipeline-Schritte, Sucheinstellungen |
+| `roadmaps`, `roadmapNodes` | Projektpläne | Plan mit Schritten, verknüpft mit einem Ticket |
+| `config` | Einstellungen | Prioritäten (dazu alte Listen, die nichts mehr liest) |
-### 3. App starten
-```bash
-npm run dev
-```
+Zusammenspiel mit anderen Systemen:
-Die App läuft dann auf `http://localhost:5173`
-
-## 📚 Dokumentation
-
-- **[APPWRITE_SETUP.md](./APPWRITE_SETUP.md)** - Detaillierte Anleitung zur Appwrite-Einrichtung
- - Schritt-für-Schritt Setup
- - Datenbank-Schema
- - Berechtigungen
- - Fehlerbehebung
-
-## Features
-
-- Ticket-Erstellung und -Verwaltung
-- Status-Tracking (Open, Occupied, Assigned, Awaiting, Closed)
-- Prioritäts-Management (Low, Normal, High, Critical)
-- Filter und Suche
-- Datei-Uploads
-- Dashboard mit Statistiken
-- Planboard für Terminplanung
+- **Kundenportal** (project.webklar.com): legt bei jedem Git-Push ein Arbeitsblatt an
+ (`employeeId` `gitea`, `serviceType` `GIT`, ohne Beginn). Die Zeit wird in WOMS
+ nachgetragen, danach zählt sie als Arbeitszeit. Termine aus der Rechnungsanalyse
+ landen am Akquise-Ticket des Kunden und erscheinen im Planboard. Kunden-, Mitarbeiter-
+ und Projektverwaltung laufen über die Admin-API des Portals.
+- **ticket-integrations** (`/api/integrations`): Proxy zu InvoiceNinja (Rechnungen)
+ und Paperless (Dokumente).
diff --git a/WOID_ATTRIBUTE_SETUP.md b/WOID_ATTRIBUTE_SETUP.md
deleted file mode 100644
index a8c3107..0000000
--- a/WOID_ATTRIBUTE_SETUP.md
+++ /dev/null
@@ -1,141 +0,0 @@
-# WOID Attribut für workorders Collection
-
-## Was ist die WOID?
-
-Die **WOID (Work Order ID)** ist eine **5-stellige Zahl** (10000-99999), die jedes Ticket eindeutig identifiziert.
-
-Beispiele: `10234`, `54321`, `99999`
-
-## Appwrite Setup
-
-Das `woid` Attribut muss zur `workorders` Collection hinzugefügt werden:
-
-### Schritt 1: Öffne Appwrite
-
-1. Gehe zu: `https://appwrite.webklar.com`
-2. Öffne dein Projekt: **woms** (ID: `693d9f37000b35267f1b`)
-3. Gehe zu **Databases** → **woms-database** (ID: `6943bf0e0003291f8c35`)
-4. Öffne die Collection: **workorders** (ID: `6943bf7d001901baa60c`)
-
-### Schritt 2: Erstelle das woid Attribut
-
-1. Klicke auf **Attributes** Tab
-2. Klicke auf **Create Attribute**
-3. Wähle **String** als Typ
-4. Konfiguration:
- - **Attribute Key**: `woid`
- - **Size**: 10
- - **Required**: ❌ Nein (für bestehende Tickets ohne WOID)
- - **Array**: ❌ Nein
- - **Default Value**: (leer lassen)
-
-5. Klicke auf **Create**
-
-### Schritt 3: Optional - Index erstellen
-
-Für schnellere Suche nach WOID:
-
-1. Gehe zum **Indexes** Tab
-2. Klicke auf **Create Index**
-3. Konfiguration:
- - **Index Key**: `woid_index`
- - **Type**: Key
- - **Attributes**: Wähle `woid`
- - **Order**: ASC
-
-4. Klicke auf **Create**
-
-## Wie funktioniert die WOID?
-
-### Automatische Generierung
-
-Beim Erstellen eines neuen Tickets wird automatisch eine 5-stellige WOID generiert:
-
-```javascript
-// Beispiel: 12345, 54321, 99999
-const generateWOID = () => {
- const timestamp = Date.now().toString()
- const random = Math.floor(Math.random() * 90000) + 10000
- const combined = (parseInt(timestamp.slice(-5)) + random) % 90000 + 10000
- return combined.toString().padStart(5, '0')
-}
-```
-
-### Anzeige in der App
-
-- **Ticket-Liste**: Zeigt die WOID in der ersten Spalte
-- **Ticket-Details**: WOID im Header
-- **Filter**: Suche nach WOID möglich
-
-### Format
-
-- **Länge**: Immer 5 Zeichen
-- **Typ**: Nur Zahlen (0-9)
-- **Bereich**: 10000-99999
-- **Beispiele**: `10234`, `54321`, `99999`
-
-## Bestehende Tickets
-
-Tickets die vor diesem Update erstellt wurden, haben möglicherweise keine WOID.
-
-**Fallback:** Wenn keine WOID vorhanden ist, werden die letzten 5 Zeichen der Document ID angezeigt.
-
-## Fehlerbehebung
-
-### "Unknown attribute: woid"
-
-**Problem:** Das `woid` Attribut existiert nicht in der Collection.
-
-**Lösung:** Folge Schritt 2 oben, um das Attribut zu erstellen.
-
-### WOID zeigt Buchstaben
-
-**Problem:** Alte Tickets haben keine WOID und verwenden den Fallback (Document ID).
-
-**Lösung:**
-1. Erstelle das `woid` Attribut (Schritt 2)
-2. Neue Tickets bekommen automatisch eine WOID
-3. Optional: Bestehende Tickets manuell aktualisieren
-
-### WOID Duplikate
-
-**Problem:** Zwei Tickets haben die gleiche WOID (sehr unwahrscheinlich).
-
-**Lösung:** Der Algorithmus verwendet Timestamp + Zufallszahl für Eindeutigkeit. Bei Millionen von Tickets könnte theoretisch eine Kollision auftreten.
-
-**Verbesserung:** Verwende einen Index mit `unique: true` und behandle Fehler beim Erstellen.
-
-## Technische Details
-
-### Datentyp in Appwrite
-
-- **String** (nicht Integer), weil:
- - Führende Nullen möglich (z.B. `00123`)
- - Einfacher zu suchen und zu filtern
- - Kompatibel mit verschiedenen Formaten
-
-### Speicherung
-
-```javascript
-workorderData = {
- // ...
- woid: "12345", // String mit 5 Ziffern
- // ...
-}
-```
-
-### Anzeige
-
-```javascript
-// In TicketRow.jsx
-{ticket.woid || ticket.$id?.slice(-5)}
-```
-
-## Fertig!
-
-Nach dem Erstellen des `woid` Attributs:
-- ✅ Neue Tickets bekommen automatisch eine 5-stellige WOID
-- ✅ WOID wird in der Ticket-Liste angezeigt
-- ✅ Suche nach WOID funktioniert
-- ✅ Keine Buchstaben mehr in der WOID
-
diff --git a/WORKORDER_ATTRIBUTES_FIX.md b/WORKORDER_ATTRIBUTES_FIX.md
deleted file mode 100644
index 4b415d8..0000000
--- a/WORKORDER_ATTRIBUTES_FIX.md
+++ /dev/null
@@ -1,107 +0,0 @@
-# Workorder Collection Attribute beheben
-
-Der Fehler "Unknown attribute: 'status'" bedeutet, dass das Attribut `status` in deiner `workorders` Collection fehlt.
-
-## Problem
-
-Die Collection `workorders` (ID: `6943bf7d001901baa60c`) hat nicht alle benötigten Attribute.
-
-## Lösung: Attribute hinzufügen
-
-1. Gehe zu `https://appwrite.webklar.com`
-2. Öffne dein Projekt **woms**
-3. Gehe zu **Databases** → **woms-database** → **workorders**
-4. Klicke auf **Attributes** Tab
-5. Füge die fehlenden Attribute hinzu:
-
-### Erforderliche Attribute (Required):
-
-| Attribut Name | Typ | Größe | Required | Default |
-|--------------|-----|-------|----------|---------|
-| `topic` | string | 255 | ✓ | - |
-| `status` | string | 50 | ✓ | `Open` |
-| `priority` | integer | - | ✓ | `1` |
-
-### Optionale Attribute:
-
-| Attribut Name | Typ | Größe | Required |
-|--------------|-----|-------|----------|
-| `type` | string | 50 | - |
-| `systemType` | string | 50 | - |
-| `responseLevel` | string | 50 | - |
-| `serviceType` | string | 50 | - |
-| `customerId` | string | 50 | - |
-| `customerName` | string | 255 | - |
-| `customerLocation` | string | 255 | - |
-| `requestedBy` | string | 255 | - |
-| `requestedFor` | string | 255 | - |
-| `startDate` | string | 50 | - |
-| `startTime` | string | 10 | - |
-| `deadline` | string | 50 | - |
-| `endTime` | string | 10 | - |
-| `estimate` | string | 50 | - |
-| `mailCopyTo` | string | 255 | - |
-| `sendNotification` | boolean | - | - |
-| `details` | string | 10000 | - |
-| `assignedTo` | string | 50 | - |
-| `assignedName` | string | 255 | - |
-| `approvalStatus` | string | 50 | - |
-| `woid` | string | 50 | - |
-| `createdAt` | datetime | - | - |
-
-## Schritt-für-Schritt
-
-### 1. Status hinzufügen (wichtig!)
-
-1. Klicke auf **Create Attribute**
-2. **Key**: `status`
-3. **Type**: `String`
-4. **Size**: `50`
-5. **Required**: ✓ (aktivieren)
-6. **Default**: `Open`
-7. **Array**: Nein
-8. Klicke auf **Create**
-
-### 2. Priority hinzufügen (wichtig!)
-
-1. Klicke auf **Create Attribute**
-2. **Key**: `priority`
-3. **Type**: `Integer`
-4. **Required**: ✓ (aktivieren)
-5. **Default**: `1`
-6. Klicke auf **Create**
-
-### 3. Topic hinzufügen (wichtig!)
-
-1. Klicke auf **Create Attribute**
-2. **Key**: `topic`
-3. **Type**: `String`
-4. **Size**: `255`
-5. **Required**: ✓ (aktivieren)
-6. Klicke auf **Create**
-
-### 4. Weitere Attribute hinzufügen
-
-Wiederhole den Prozess für alle anderen Attribute aus der Liste oben.
-
-## Überprüfung
-
-Nach dem Hinzufügen aller Attribute:
-
-1. Stelle sicher, dass mindestens diese drei Attribute existieren:
- - ✓ `topic` (string, required)
- - ✓ `status` (string, required, default: "Open")
- - ✓ `priority` (integer, required, default: 1)
-
-2. Versuche erneut, ein Ticket zu erstellen
-
-## Wenn Attribute bereits existieren
-
-Falls die Attribute bereits existieren, aber andere Namen haben:
-
-1. Überprüfe die Attributnamen in Appwrite
-2. Teile mir die tatsächlichen Attributnamen mit
-3. Ich passe den Code entsprechend an
-
-Viel Erfolg! 🚀
-
diff --git a/WORKSHEETS_COLLECTION_SETUP.md b/WORKSHEETS_COLLECTION_SETUP.md
deleted file mode 100644
index 20c0084..0000000
--- a/WORKSHEETS_COLLECTION_SETUP.md
+++ /dev/null
@@ -1,210 +0,0 @@
-# Worksheets Collection Setup
-
-## 📋 Was ist ein Worksheet (WSID)?
-
-Ein **Worksheet** ist ein **Arbeitsschritt-Eintrag** für einen Work Order (Ticket). Jedes Mal, wenn ein Techniker an einem Ticket arbeitet, wird ein neues Worksheet erstellt.
-
-### Unterschied: WOID vs WSID
-
-| Konzept | Beschreibung | Beispiel |
-|---------|--------------|----------|
-| **WOID** (Work Order ID) | Das Haupt-Ticket | 59203 |
-| **WSID** (Work Sheet ID) | Einzelner Arbeitsschritt | 100001 |
-
-**Beziehung:** Ein WOID kann **viele WSIDs** haben (1:n)
-
-### Beispiel aus der Praxis:
-
-```
-Ticket WOID 59203: "Router-Problem bei Kunde XYZ"
-
-├── WSID 100001 (29.12.2025, 10:00-10:30, Max M.)
-│ └── "Fernanalyse durchgeführt, Router neu gestartet"
-│ Status: Open → Occupied
-│
-├── WSID 100002 (29.12.2025, 14:00-14:45, Max M.)
-│ └── "Firmware Update durchgeführt"
-│ Status: Occupied → Assigned
-│
-└── WSID 100003 (30.12.2025, 09:00-09:15, Lisa S.)
- └── "Vor-Ort-Check: Alles funktioniert"
- Status: Assigned → Closed
-```
-
-**Gesamtarbeitszeit für WOID 59203:** 30 + 45 + 15 = **90 Minuten**
-
----
-
-## 🔧 Appwrite Collection einrichten
-
-### Collection erstellen
-
-1. Gehe zu **Appwrite Dashboard** → **Databases** → `woms-database`
-2. Klicke auf **Create Collection**
-3. **Collection ID:** `worksheets`
-4. **Name:** `Work Sheets`
-
-### Attribute hinzufügen
-
-| Attribut Name | Typ | Größe | Required | Array | Default | Beschreibung |
-|--------------|-----|-------|----------|-------|---------|--------------|
-| `wsid` | string | 10 | ✓ | - | - | Work Sheet ID (6-stellig, z.B. "100000") |
-| `woid` | string | 10 | ✓ | - | - | Verknüpfter Work Order (z.B. "59203") |
-| `workorderId` | string | 50 | ✓ | - | - | Appwrite Document ID des Work Orders |
-| `employeeId` | string | 50 | ✓ | - | - | ID des Mitarbeiters (aus Auth) |
-| `employeeName` | string | 255 | ✓ | - | - | Name des Mitarbeiters |
-| `employeeShort` | string | 10 | - | - | - | Kürzel (z.B. "KNSO") |
-| `serviceType` | string | 50 | ✓ | - | `Remote` | Remote/On Site/Off Site/COMMENT |
-| `oldStatus` | string | 50 | ✓ | - | - | Status vorher |
-| `newStatus` | string | 50 | ✓ | - | - | Status nachher |
-| `oldResponseLevel` | string | 50 | - | - | - | Response Level vorher |
-| `newResponseLevel` | string | 50 | - | - | - | Response Level nachher |
-| `totalTime` | integer | - | ✓ | - | `0` | Arbeitszeit in Minuten |
-| `startDate` | string | 50 | ✓ | - | - | Startdatum (dd.mm.yyyy) |
-| `startTime` | string | 10 | - | - | - | Startzeit (hhmm) |
-| `endDate` | string | 50 | ✓ | - | - | Enddatum (dd.mm.yyyy) |
-| `endTime` | string | 10 | - | - | - | Endzeit (hhmm) |
-| `details` | string | 10000 | ✓ | - | - | Beschreibung der Arbeit |
-| `isComment` | boolean | - | - | - | `false` | Nur Kommentar (keine Arbeitszeit) |
-| `createdAt` | datetime | - | - | - | - | Erstellungszeitpunkt |
-
-### Permissions einrichten
-
-1. Gehe zu **Settings** → **Permissions**
-2. Setze folgende Berechtigungen:
-
-**Read Access:**
-- ✅ `Users` (Alle eingeloggten Benutzer können Worksheets lesen)
-
-**Create Access:**
-- ✅ `Users` (Alle eingeloggten Benutzer können Worksheets erstellen)
-
-**Update Access:**
-- ✅ `Users` (Eigene Worksheets können bearbeitet werden)
-
-**Delete Access:**
-- ❌ Keine (Worksheets sollten nicht gelöscht werden - Audit Trail!)
-
-### Indexes erstellen
-
-Für bessere Performance:
-
-1. **Index 1: woid_index**
- - Key: `woid`
- - Type: `key`
- - Order: `DESC`
- - → Schnelles Finden aller Worksheets für einen Work Order
-
-2. **Index 2: employee_index**
- - Key: `employeeId`
- - Type: `key`
- - Order: `DESC`
- - → Schnelles Finden aller Worksheets eines Mitarbeiters
-
-3. **Index 3: date_index**
- - Key: `startDate`
- - Type: `key`
- - Order: `DESC`
- - → Zeitbasierte Abfragen
-
----
-
-## 🎯 WSID-Generierung
-
-### Regeln:
-- **6-stellige Zahlen** (100000, 100001, 100002, ...)
-- **Global eindeutig** (über alle Work Orders hinweg)
-- **Sequentiell aufsteigend**
-- **Nur Zahlen**, keine Buchstaben
-
-### Algorithmus:
-1. Finde höchste existierende WSID in der Datenbank
-2. Addiere +1
-3. Falls keine WSID existiert: Starte bei 100000
-
----
-
-## 📊 Verbesserungen gegenüber dem Original
-
-### 1. Automatische Zeitberechnung
-- System berechnet `totalTime` aus `startTime` und `endTime`
-- Manuelles Überschreiben möglich
-
-### 2. Arbeitszeit-Aggregation
-- Gesamtarbeitszeit pro WOID wird automatisch berechnet
-- Anzeige: "Gesamt: 90 Minuten (3 Worksheets)"
-
-### 3. Status-Historie
-- Komplette Historie: Wer hat wann welchen Status gesetzt?
-- Nachvollziehbarkeit
-
-### 4. Kommentar-Funktion
-- Worksheets mit `isComment = true` zählen keine Arbeitszeit
-- Reine Notizen/Updates
-
-### 5. Mitarbeiter-Zuordnung
-- Jedes Worksheet ist einem Mitarbeiter zugeordnet
-- Report: Wer hat wie viel Zeit investiert?
-
----
-
-## 🔗 Integration in Work Orders
-
-### Beim Anzeigen eines Tickets:
-```javascript
-// Work Order laden
-const workorder = await getWorkorder(woid)
-
-// Alle Worksheets zu diesem Work Order laden
-const worksheets = await getWorksheets(woid)
-
-// Gesamtarbeitszeit berechnen
-const totalMinutes = worksheets.reduce((sum, ws) => sum + ws.totalTime, 0)
-```
-
-### Beim Erstellen eines Worksheets:
-1. Aktuellen Work Order Status holen
-2. Worksheet-Formular anzeigen (mit aktuellem Status als "old status")
-3. Worksheet speichern
-4. Work Order Status aktualisieren (auf "new status")
-
----
-
-## 📝 Workflow-Beispiel
-
-**Techniker Max öffnet Ticket 59203:**
-
-1. Klickt auf "Add Worksheet"
-2. System füllt aus:
- - WOID: 59203
- - Old Status: "Open"
- - Employee: "Max Müller" (aus Login)
- - Datum: heute
-3. Max trägt ein:
- - Service Type: "Remote"
- - New Status: "Occupied"
- - Start: 10:00, End: 10:30 (→ automatisch 30 min)
- - Details: "Router neu gestartet"
-4. System generiert WSID: 100001
-5. Work Order Status wird auf "Occupied" aktualisiert
-
----
-
-## ✅ Checkliste
-
-- [ ] Collection `worksheets` in Appwrite erstellt
-- [ ] Alle Attribute hinzugefügt
-- [ ] Permissions konfiguriert
-- [ ] Indexes erstellt
-- [ ] Collection ID in `.env` / `appwrite.js` eingetragen
-
----
-
-## 🚀 Nächste Schritte
-
-Nach dem Setup:
-1. `useWorksheets.js` Hook implementieren
-2. `CreateWorksheetModal.jsx` Komponente erstellen
-3. Worksheet-Liste in Ticket-Details einbauen
-4. Zeitaggregation implementieren
-
diff --git a/WSID_ATTRIBUTE_SETUP.md b/WSID_ATTRIBUTE_SETUP.md
deleted file mode 100644
index 7547941..0000000
--- a/WSID_ATTRIBUTE_SETUP.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# WSID Attribut Hinzufügen
-
-Diese Anleitung zeigt dir, wie du das **WSID (Work Sheet ID)** Attribut zur `workorders` Collection hinzufügst.
-
-## Was ist WSID?
-
-- **WSID** = Work Sheet ID
-- **Format**: 6-stellige Nummer (100000-999999)
-- **Funktion**: Sequentielle ID ähnlich wie WOID, aber mit 6 Stellen
-- **Beispiele**: 100000, 100001, 100002, etc.
-
-## Schritt-für-Schritt Anleitung
-
-### 1. Appwrite Dashboard öffnen
-
-1. Gehe zu https://appwrite.webklar.com (oder deine Appwrite-Instanz)
-2. Logge dich ein
-3. Öffne dein Projekt **woms**
-
-### 2. Zur workorders Collection navigieren
-
-1. Klicke auf **Databases** im linken Menü
-2. Wähle die Datenbank **woms-database** (ID: `6943bf0e0003291f8c35`)
-3. Klicke auf die Collection **workorders** (ID: `6943bf7d001901baa60c`)
-
-### 3. WSID Attribut erstellen
-
-1. Klicke auf den Tab **Attributes**
-2. Klicke auf **Create Attribute**
-3. Wähle **String** als Typ
-4. Fülle die Felder wie folgt aus:
-
-**Attribut-Konfiguration:**
-- **Attribute ID**: `wsid`
-- **Attribute Name**: `wsid`
-- **Size**: `10` (für 6-stellige Zahlen + Reserve)
-- **Required**: ❌ Nein (nicht required, damit alte Tickets ohne WSID weiter funktionieren)
-- **Array**: ❌ Nein
-- **Default Value**: Leer lassen
-
-5. Klicke auf **Create**
-
-### 4. Index für WSID erstellen (Optional, aber empfohlen)
-
-Ein Index verbessert die Performance beim Suchen und Filtern:
-
-1. Klicke auf den Tab **Indexes**
-2. Klicke auf **Create Index**
-3. Fülle die Felder wie folgt aus:
-
-**Index-Konfiguration:**
-- **Key**: `wsid`
-- **Type**: `key`
-- **Attributes**: Wähle `wsid`
-- **Order**: `ASC` (aufsteigend)
-
-4. Klicke auf **Create**
-
-### 5. Fertig! ✅
-
-Das WSID-Attribut ist jetzt in deiner Collection verfügbar. Die Anwendung wird automatisch:
-
-- Für neue Tickets eine sequentielle WSID generieren (startend bei 100000)
-- Die WSID in der Ticket-Liste anzeigen
-- Die WSID im Detail-View anzeigen
-
-## Hinweise
-
-### Sequentielle Generierung
-
-Die WSID wird ähnlich wie WOID automatisch generiert:
-
-```javascript
-// Beispiel:
-Erstes Ticket: WSID = 100000
-Zweites Ticket: WSID = 100001
-Drittes Ticket: WSID = 100002
-// etc.
-```
-
-### Unterschied WOID vs WSID
-
-| Feld | Stellen | Start | Format | Beispiel |
-|------|---------|-------|--------|----------|
-| WOID | 5 | 10000 | String | "10000" |
-| WSID | 6 | 100000 | String | "100000" |
-
-### Alte Tickets
-
-Tickets, die vor dem Hinzufügen des WSID-Attributs erstellt wurden, haben keine WSID. In der UI wird dann "-" angezeigt.
-
-## Troubleshooting
-
-### Problem: Attribut kann nicht erstellt werden
-
-**Lösung**:
-- Überprüfe, ob das Attribut `wsid` nicht bereits existiert
-- Stelle sicher, dass du die richtigen Berechtigungen hast (Admin)
-
-### Problem: WSID wird nicht angezeigt
-
-**Lösung**:
-1. Überprüfe, ob das Attribut erfolgreich erstellt wurde
-2. Lade die Seite neu (Strg+F5 / Cmd+Shift+R)
-3. Erstelle ein neues Ticket zum Testen
-
-### Problem: WSID startet nicht bei 100000
-
-**Lösung**:
-- Das ist normal, wenn bereits Tickets mit WSID existieren
-- Die WSID wird immer sequentiell von der höchsten bestehenden WSID weitergezählt
-
-## Support
-
-Bei Fragen oder Problemen:
-1. Überprüfe die Appwrite Logs
-2. Schaue in die Browser Console (F12)
-3. Überprüfe, ob alle Berechtigungen korrekt gesetzt sind
-
diff --git a/WSID_IMPLEMENTATION_SUMMARY.md b/WSID_IMPLEMENTATION_SUMMARY.md
deleted file mode 100644
index 8fd0407..0000000
--- a/WSID_IMPLEMENTATION_SUMMARY.md
+++ /dev/null
@@ -1,325 +0,0 @@
-# WSID Implementation - Zusammenfassung
-
-## ✅ Was wurde implementiert?
-
-Das **WSID (Work Sheet ID) System** wurde vollständig implementiert, basierend auf dem Original NetWEB Systems WOMS 2.0.
-
----
-
-## 📋 Implementierte Features
-
-### 1. **Worksheets Collection** ✅
-- Separate Collection für Arbeitsschritte
-- 6-stellige WSID (100000, 100001, ...)
-- Sequentielle, globale Nummerierung
-- Beziehung zu Work Orders via `woid` und `workorderId`
-
-### 2. **WSID-Generierung** ✅
-- Automatische Generierung beim Erstellen eines Worksheets
-- Sucht höchste existierende WSID und zählt +1
-- Startet bei 100000 wenn keine Worksheets existieren
-- Nur Zahlen, keine Buchstaben
-
-### 3. **Worksheet-Erstellung** ✅
-- Modal-Dialog zum Erstellen neuer Worksheets
-- Felder:
- - Service Type (Remote/On Site/Off Site/COMMENT)
- - Status-Änderung (Old Status → New Status)
- - Response Level-Änderung
- - Arbeitszeit (manuell oder automatisch berechnet)
- - Start/End Datum & Zeit
- - Details (Arbeitsbeschreibung)
- - Kommentar-Flag (ohne Zeiterfassung)
-- Verknüpfung mit aktuellem Benutzer
-
-### 4. **Worksheet-Anzeige** ✅
-- Liste aller Worksheets für ein Ticket
-- Zeitstrahl-Darstellung (Timeline)
-- Anzeige von:
- - WSID
- - Mitarbeiter (Name + Kürzel)
- - Arbeitszeit
- - Service Type
- - Status-Änderungen
- - Details
-- Unterscheidung zwischen Worksheets und Kommentaren
-
-### 5. **Zeitaggregation** ✅
-- Gesamtarbeitszeit pro Ticket
-- Durchschnittszeit pro Worksheet
-- Arbeitszeit pro Mitarbeiter
-- Anzahl Worksheets
-
-### 6. **Status-Historie** ✅
-- Chronologische Auflistung aller Status-Änderungen
-- Wer hat wann welchen Status gesetzt
-- Nachvollziehbarkeit aller Änderungen
-
-### 7. **Statistiken & Reports** ✅
-- **Gesamtübersicht:**
- - Anzahl Worksheets
- - Gesamtarbeitszeit
- - Anzahl Kommentare
- - Durchschnitt pro Worksheet
-
-- **Nach Mitarbeiter:**
- - Arbeitszeit pro Person
- - Anzahl Worksheets pro Person
- - Mitarbeiter-Kürzel
-
-- **Service Type Verteilung:**
- - Wie viele Remote/On Site/etc.
-
-- **Status-Historie Tabelle:**
- - Alle Status-Änderungen chronologisch
- - Mit Datum, Zeit, Mitarbeiter
-
-### 8. **Automatische Zeitberechnung** ✅
-- System berechnet automatisch Arbeitszeit aus Start- und Endzeit
-- Manuelles Überschreiben möglich
-- Unterstützt Overnight-Zeiten (z.B. 23:00 - 01:00)
-
-### 9. **Kommentar-Funktion** ✅
-- Worksheets können als "Nur Kommentar" markiert werden
-- Zählen nicht zur Arbeitszeit
-- Für Notizen, Updates, Kommunikation
-
----
-
-## 🔧 Technische Details
-
-### Architektur
-
-```
-Work Order (WOID) 1:n Worksheets (WSID)
- ↓ ↓
- workorders worksheets
- Collection Collection
-```
-
-### Collections
-
-**workorders:**
-- Enthält WOID (5-stellig)
-- Enthält KEINE WSID mehr ✅
-- Referenz: `ticket.woid`
-
-**worksheets:**
-- Enthält WSID (6-stellig)
-- Referenziert WOID
-- Referenziert workorderId (Appwrite Document ID)
-- Enthält Mitarbeiter-Info
-- Enthält Zeiterfassung
-- Enthält Status-Änderungen
-
-### Datenfluss
-
-1. **Ticket öffnen:**
- - System lädt Work Order
- - System lädt alle Worksheets mit `woid = ticket.woid`
-
-2. **Worksheet erstellen:**
- - Benutzer klickt "Add Worksheet"
- - System generiert neue WSID
- - System speichert Worksheet
- - Wenn Status geändert → Work Order wird aktualisiert
-
-3. **Statistiken:**
- - Werden in Echtzeit aus Worksheets berechnet
- - Keine Duplikate, keine Caching-Probleme
-
----
-
-## 📂 Neue Dateien
-
-| Datei | Beschreibung |
-|-------|--------------|
-| `src/hooks/useWorksheets.js` | Hook für Worksheet-Operationen |
-| `src/components/CreateWorksheetModal.jsx` | Modal zum Erstellen |
-| `src/components/WorksheetList.jsx` | Liste aller Worksheets |
-| `src/components/WorksheetStats.jsx` | Statistiken & Reports |
-| `WORKSHEETS_COLLECTION_SETUP.md` | Setup-Anleitung |
-| `WSID_IMPLEMENTATION_SUMMARY.md` | Diese Datei |
-
----
-
-## 🔄 Geänderte Dateien
-
-| Datei | Änderung |
-|-------|----------|
-| `src/hooks/useWorkorders.js` | WSID-Generierung **entfernt** ✅ |
-| `src/components/TicketRow.jsx` | Worksheet-Integration hinzugefügt |
-| `src/lib/appwrite.js` | WORKSHEETS Collection ID hinzugefügt |
-| `APPWRITE_SETUP.md` | WSID aus workorders entfernt |
-
----
-
-## 🚀 Setup-Schritte
-
-### 1. Collection in Appwrite erstellen
-
-```bash
-1. Gehe zu Appwrite Dashboard → Databases → woms-database
-2. Erstelle Collection "worksheets"
-3. Füge alle Attribute hinzu (siehe WORKSHEETS_COLLECTION_SETUP.md)
-4. Setze Permissions (Users: Read, Create, Update)
-5. Erstelle Indexes (woid, employeeId, startDate)
-6. Kopiere Collection ID
-```
-
-### 2. Collection ID in Code eintragen
-
-```javascript
-// src/lib/appwrite.js
-export const COLLECTIONS = {
- WORKORDERS: '6943bf7d001901baa60c',
- WORKSHEETS: 'DEINE_COLLECTION_ID_HIER', // ← Hier eintragen!
- // ...
-}
-```
-
-### 3. WSID aus workorders Collection entfernen (Optional)
-
-Falls du bereits `wsid` als Attribut in der `workorders` Collection hast:
-
-```bash
-1. Gehe zu Appwrite Dashboard → workorders Collection
-2. Gehe zu Attributes
-3. Lösche Attribut "wsid" (falls vorhanden)
-```
-
-⚠️ **Achtung:** Stelle sicher, dass keine wichtigen Daten verloren gehen!
-
----
-
-## 📊 Verbesserungen gegenüber Original
-
-| Feature | Original | Neu |
-|---------|----------|-----|
-| **WSID-Generierung** | Manuell/unklar | Automatisch, sequentiell |
-| **Zeitberechnung** | Manuell | Automatisch + manuell |
-| **Statistiken** | Keine/begrenzt | Umfassend (Mitarbeiter, Service Type, Historie) |
-| **Kommentare** | Unklar | Eigener Typ (ohne Zeit) |
-| **Status-Historie** | Nicht dokumentiert | Vollständig nachvollziehbar |
-| **Zeitaggregation** | Manuell | Automatisch |
-| **Multi-Mitarbeiter** | Schwierig | Einfach trackbar |
-
----
-
-## 🎯 Verwendung
-
-### Worksheet erstellen
-
-1. Öffne ein Ticket (Lock-Icon klicken)
-2. Klicke "Add Worksheet"
-3. Fülle Formular aus:
- - Service Type wählen
- - Neuen Status wählen
- - Start/End Zeit eingeben (automatische Berechnung)
- - Details schreiben
-4. Klicke "CREATE NOW"
-
-### Statistiken ansehen
-
-Wenn Worksheets vorhanden sind, werden automatisch angezeigt:
-- Gesamtübersicht (oben)
-- Mitarbeiter-Statistiken
-- Service Type Verteilung
-- Status-Historie (falls Änderungen)
-
-### Arbeitszeit tracken
-
-Jedes Worksheet erfasst:
-- Wer hat gearbeitet
-- Wann (Datum + Zeit)
-- Wie lange
-- Was wurde gemacht
-- Welcher Status wurde gesetzt
-
-**Beispiel:**
-
-```
-WOID 59203: "Router-Problem"
-├─ WSID 100001: Max, 30min, Open → Occupied, "Fernanalyse"
-├─ WSID 100002: Max, 45min, Occupied → Assigned, "Firmware Update"
-└─ WSID 100003: Lisa, 15min, Assigned → Closed, "Vor-Ort-Check OK"
-
-Gesamtzeit: 90 Minuten
-Mitarbeiter: Max (75min), Lisa (15min)
-```
-
----
-
-## ✅ Checkliste
-
-- [x] Worksheets Collection Dokumentation erstellt
-- [x] useWorksheets Hook mit WSID-Generierung
-- [x] CreateWorksheetModal UI-Komponente
-- [x] WorksheetList Komponente
-- [x] WorksheetStats Komponente (Statistiken)
-- [x] Integration in TicketRow
-- [x] WSID aus workorders entfernt
-- [x] Automatische Zeitberechnung
-- [x] Status-Historie
-- [x] Mitarbeiter-Tracking
-- [x] Kommentar-Funktion
-- [x] Service Type Tracking
-- [ ] **Collection in Appwrite erstellen** ← Das musst DU machen!
-- [ ] **Collection ID eintragen** ← Das musst DU machen!
-
----
-
-## 🐛 Testing
-
-Nach dem Setup:
-
-1. **Worksheet erstellen:**
- ```
- - Öffne ein Ticket
- - Klicke "Add Worksheet"
- - Fülle Formular aus
- - Speichern
- - → WSID sollte 100000 sein (erste)
- ```
-
-2. **Zweites Worksheet:**
- ```
- - Erstelle weiteres Worksheet
- - → WSID sollte 100001 sein
- ```
-
-3. **Statistiken prüfen:**
- ```
- - Öffne Ticket mit mehreren Worksheets
- - Statistiken sollten angezeigt werden
- - Gesamtzeit sollte korrekt sein
- ```
-
-4. **Status-Änderung:**
- ```
- - Erstelle Worksheet mit Status-Änderung
- - Work Order Status sollte aktualisiert werden
- - Historie sollte angezeigt werden
- ```
-
----
-
-## 📖 Weiterführende Dokumentation
-
-- **Setup:** `WORKSHEETS_COLLECTION_SETUP.md`
-- **Appwrite:** `APPWRITE_SETUP.md`
-- **Code:** Siehe Inline-Kommentare in den Komponenten
-
----
-
-## 🎉 Fertig!
-
-Das WSID-System ist vollständig implementiert und einsatzbereit!
-
-**Nächste Schritte:**
-1. Collection in Appwrite erstellen
-2. Collection ID eintragen
-3. Testen!
-
-Bei Fragen: Siehe Dokumentation oder Code-Kommentare.
-
diff --git a/WSID_QUICKSTART.md b/WSID_QUICKSTART.md
deleted file mode 100644
index 52ca41d..0000000
--- a/WSID_QUICKSTART.md
+++ /dev/null
@@ -1,195 +0,0 @@
-# WSID System - Quick Start Guide
-
-## 🚀 Schnellstart in 5 Minuten
-
-### Schritt 1: Collection in Appwrite erstellen
-
-1. Gehe zu **https://appwrite.webklar.com**
-2. Login mit deinen Credentials
-3. Öffne Projekt **woms**
-4. Gehe zu **Databases** → **woms-database**
-5. Klicke **Create Collection**
- - Collection ID: `worksheets`
- - Name: `Work Sheets`
-6. Klicke **Create**
-
-### Schritt 2: Attribute hinzufügen
-
-Klicke auf **Attributes** und füge folgende Attribute hinzu:
-
-#### Required Attributes (Pflicht):
-
-```
-1. wsid | String | Size: 10 | Required: ✓ | Default: -
-2. woid | String | Size: 10 | Required: ✓ | Default: -
-3. workorderId | String | Size: 50 | Required: ✓ | Default: -
-4. employeeId | String | Size: 50 | Required: ✓ | Default: -
-5. employeeName | String | Size: 255 | Required: ✓ | Default: -
-6. serviceType | String | Size: 50 | Required: ✓ | Default: Remote
-7. oldStatus | String | Size: 50 | Required: ✓ | Default: -
-8. newStatus | String | Size: 50 | Required: ✓ | Default: -
-9. totalTime | Integer | - | Required: ✓ | Default: 0
-10. startDate | String | Size: 50 | Required: ✓ | Default: -
-11. endDate | String | Size: 50 | Required: ✓ | Default: -
-12. details | String | Size: 10000 | Required: ✓ | Default: -
-13. createdAt | DateTime| - | Required: - | Default: -
-```
-
-#### Optional Attributes (Optional):
-
-```
-14. employeeShort | String | Size: 10 | Required: - | Default: -
-15. oldResponseLevel | String | Size: 50 | Required: - | Default: -
-16. newResponseLevel | String | Size: 50 | Required: - | Default: -
-17. startTime | String | Size: 10 | Required: - | Default: -
-18. endTime | String | Size: 10 | Required: - | Default: -
-19. isComment | Boolean | - | Required: - | Default: false
-```
-
-### Schritt 3: Permissions setzen
-
-1. Gehe zu **Settings** → **Permissions**
-2. Setze folgende Berechtigungen:
-
-**Read Access:**
-- ✅ `Users` (All users)
-
-**Create Access:**
-- ✅ `Users` (All users)
-
-**Update Access:**
-- ✅ `Users` (All users)
-
-**Delete Access:**
-- ❌ Keine (für Audit Trail)
-
-### Schritt 4: Indexes erstellen
-
-Gehe zu **Indexes** und erstelle:
-
-1. **woid_index**
- - Key: `woid`
- - Type: `key`
- - Order: `DESC`
-
-2. **employee_index**
- - Key: `employeeId`
- - Type: `key`
- - Order: `DESC`
-
-3. **date_index**
- - Key: `startDate`
- - Type: `key`
- - Order: `DESC`
-
-### Schritt 5: Collection ID kopieren
-
-1. Gehe zurück zur Collection-Übersicht
-2. Kopiere die **Collection ID** (z.B. `694xyz123abc456def789`)
-
-### Schritt 6: Collection ID im Code eintragen
-
-Öffne `src/lib/appwrite.js` und trage die Collection ID ein:
-
-```javascript
-export const COLLECTIONS = {
- WORKORDERS: '6943bf7d001901baa60c',
- CUSTOMERS: '694bd1fb002b2e583d13',
- EMPLOYEES: '695280510031c6c6153b',
- WORKSHEETS: '694xyz123abc456def789', // ← Hier deine Collection ID eintragen!
- // ...
-}
-```
-
-### Schritt 7: Optional - WSID aus workorders entfernen
-
-Falls du bereits ein `wsid`-Attribut in der `workorders` Collection hast:
-
-1. Gehe zu **workorders** Collection
-2. Gehe zu **Attributes**
-3. Lösche Attribut `wsid` (falls vorhanden)
-
-⚠️ **Hinweis:** Stelle sicher, dass du ein Backup hast!
-
-### Schritt 8: Anwendung neu starten
-
-```bash
-# Terminal öffnen
-npm run dev
-```
-
-### Schritt 9: Testen!
-
-1. Öffne die Anwendung im Browser
-2. Gehe zu **Tickets**
-3. Öffne ein Ticket (Lock-Icon klicken)
-4. Klicke **"Add Worksheet"**
-5. Fülle das Formular aus:
- - Service Type: `Remote`
- - New Status: `Occupied`
- - Start Time: `1000`
- - End Time: `1030`
- - Details: `Test-Worksheet`
-6. Klicke **"CREATE NOW"**
-
-**Erwartetes Ergebnis:**
-- WSID sollte `100000` sein
-- Worksheet sollte in der Liste erscheinen
-- Statistiken sollten angezeigt werden
-
----
-
-## ✅ Fertig!
-
-Das WSID-System ist jetzt einsatzbereit!
-
-### Nächste Schritte:
-
-- Erstelle weitere Worksheets
-- Prüfe Statistiken
-- Teste Status-Änderungen
-- Prüfe Zeitaggregation
-
----
-
-## 🐛 Troubleshooting
-
-### Problem: "Collection nicht gefunden"
-
-**Lösung:**
-- Überprüfe Collection ID in `src/lib/appwrite.js`
-- Stelle sicher, dass Collection wirklich existiert
-
-### Problem: "Unauthorized"
-
-**Lösung:**
-- Überprüfe Permissions in Appwrite
-- `Users` muss Read/Create Zugriff haben
-
-### Problem: "Attribute nicht gefunden"
-
-**Lösung:**
-- Überprüfe, ob alle Required Attributes erstellt wurden
-- Attribute-Namen müssen exakt übereinstimmen (case-sensitive!)
-
-### Problem: "WSID wird nicht generiert"
-
-**Lösung:**
-- Überprüfe Browser-Konsole auf Fehler
-- Stelle sicher, dass `wsid` Attribut existiert
-- Überprüfe, ob Collection ID korrekt ist
-
----
-
-## 📚 Weitere Dokumentation
-
-- **Detaillierte Setup-Anleitung:** `WORKSHEETS_COLLECTION_SETUP.md`
-- **Implementierungs-Details:** `WSID_IMPLEMENTATION_SUMMARY.md`
-- **Appwrite Setup:** `APPWRITE_SETUP.md`
-
----
-
-## 🎉 Viel Erfolg!
-
-Bei Fragen: Siehe ausführliche Dokumentation oder Code-Kommentare.
-
diff --git a/src/hooks/useWorksheets.js b/src/hooks/useWorksheets.js
index 87fee32..b9969fd 100644
--- a/src/hooks/useWorksheets.js
+++ b/src/hooks/useWorksheets.js
@@ -41,7 +41,7 @@ export function useWorksheets(woid = null) {
if (err.code === 401 || errorMessage.includes('not authorized')) {
errorMessage = 'Berechtigung fehlt: Bitte überprüfe die Read-Berechtigungen der Worksheets Collection.'
} else if (errorMessage.includes('Collection') && errorMessage.includes('not found')) {
- errorMessage = 'Worksheets Collection nicht gefunden. Bitte erstelle die Collection in Appwrite (siehe WORKSHEETS_COLLECTION_SETUP.md).'
+ errorMessage = 'Worksheets Collection nicht gefunden. Bitte die Collection in Appwrite prüfen (Datenmodell siehe README.md).'
}
setError(errorMessage)