woms 3.0
This commit is contained in:
141
WOID_ATTRIBUTE_SETUP.md
Normal file
141
WOID_ATTRIBUTE_SETUP.md
Normal file
@@ -0,0 +1,141 @@
|
||||
# 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
|
||||
|
||||
Reference in New Issue
Block a user