142 lines
3.6 KiB
Markdown
142 lines
3.6 KiB
Markdown
# 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
|
|
<div>{ticket.woid || ticket.$id?.slice(-5)}</div>
|
|
```
|
|
|
|
## 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
|
|
|