# 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