Erweiterungen
This commit is contained in:
343
docs/JOB_JSON.md
Normal file
343
docs/JOB_JSON.md
Normal file
@@ -0,0 +1,343 @@
|
||||
# Job JSON Struktur
|
||||
|
||||
Diese Dokumentation beschreibt die JSON-Struktur eines Jobs mit allen zugehörigen Tasks.
|
||||
|
||||
## Job Objekt
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439011",
|
||||
"jobNumber": "JOB-2024-001",
|
||||
"status": "CREATED",
|
||||
"createdAt": "2024-01-15T10:30:00",
|
||||
"updatedAt": "2024-01-15T14:45:00",
|
||||
"createdBy": "admin@example.com",
|
||||
"isDraft": false,
|
||||
|
||||
"customerSelection": "Kunde01",
|
||||
|
||||
"pickupCompany": "Absender GmbH",
|
||||
"pickupSalutation": "Herr",
|
||||
"pickupFirstName": "Max",
|
||||
"pickupLastName": "Mustermann",
|
||||
"pickupPhone": "+49 123 456789",
|
||||
"pickupStreet": "Musterstraße",
|
||||
"pickupHouseNumber": "42",
|
||||
"pickupAddressAddition": "2. OG",
|
||||
"pickupZip": "12345",
|
||||
"pickupCity": "Musterstadt",
|
||||
|
||||
"deliveryCompany": "Empfänger AG",
|
||||
"deliverySalutation": "Frau",
|
||||
"deliveryFirstName": "Erika",
|
||||
"deliveryLastName": "Musterfrau",
|
||||
"deliveryPhone": "+49 987 654321",
|
||||
"deliveryStreet": "Beispielweg",
|
||||
"deliveryHouseNumber": "7",
|
||||
"deliveryAddressAddition": null,
|
||||
"deliveryZip": "54321",
|
||||
"deliveryCity": "Beispielstadt",
|
||||
|
||||
"digitalProcessing": true,
|
||||
"appUser": "fahrer01",
|
||||
|
||||
"pickupDate": "2024-01-20",
|
||||
"deliveryDate": "2024-01-21",
|
||||
|
||||
"remark": "Bitte zwischen 9-12 Uhr liefern",
|
||||
"price": 150.00
|
||||
}
|
||||
```
|
||||
|
||||
## Job Status Werte
|
||||
|
||||
| Status | Display Name | Beschreibung |
|
||||
|--------|-------------|--------------|
|
||||
| `CREATED` | Erstellt | Job wurde angelegt |
|
||||
| `IN_PROGRESS` | In Bearbeitung | Job wird bearbeitet |
|
||||
| `PICKUP_SCHEDULED` | Abholung geplant | Abholtermin wurde festgelegt |
|
||||
| `PICKED_UP` | Abgeholt | Ware wurde abgeholt |
|
||||
| `IN_TRANSIT` | Unterwegs | Ware ist auf dem Transportweg |
|
||||
| `DELIVERED` | Zugestellt | Ware wurde zugestellt |
|
||||
| `COMPLETED` | Abgeschlossen | Job vollständig abgeschlossen |
|
||||
| `CANCELLED` | Storniert | Job wurde storniert |
|
||||
|
||||
## Task Struktur
|
||||
|
||||
Tasks sind polymorph und haben eine gemeinsame Basisstruktur plus typspezifische Daten.
|
||||
|
||||
### Basis Task Felder
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439012",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "PHOTO",
|
||||
"taskOrder": 1,
|
||||
"description": "Fotos der Ware bei Abholung",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": { ... }
|
||||
}
|
||||
```
|
||||
|
||||
### Task Typen
|
||||
|
||||
| TaskType | Display Name | Beschreibung |
|
||||
|----------|-------------|--------------|
|
||||
| `CONFIRMATION` | Bestätigung | Einfache Bestätigung per Button |
|
||||
| `SIGNATURE` | Unterschrift | Unterschrift erfassen |
|
||||
| `TODOLIST` | To-Do Liste | Checkliste mit Punkten |
|
||||
| `PHOTO` | Foto | Fotos aufnehmen |
|
||||
| `BARCODE` | Barcode | Barcodes scannen |
|
||||
| `COMMENT` | Kommentar | Textkommentar eingeben |
|
||||
|
||||
---
|
||||
|
||||
## Task Beispiele nach Typ
|
||||
|
||||
### CONFIRMATION Task
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439012",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "CONFIRMATION",
|
||||
"taskOrder": 1,
|
||||
"description": "Bitte bestätigen Sie die Übernahme der Ware",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "CONFIRMATION",
|
||||
"buttonText": "Ware übernommen"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### SIGNATURE Task
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439013",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "SIGNATURE",
|
||||
"taskOrder": 2,
|
||||
"description": "Unterschrift des Empfängers",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "SIGNATURE"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### PHOTO Task
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439014",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "PHOTO",
|
||||
"taskOrder": 3,
|
||||
"description": "Fotos der Ware bei Abholung",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "PHOTO",
|
||||
"minPhotoCount": 1,
|
||||
"maxPhotoCount": 5
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### BARCODE Task
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439015",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "BARCODE",
|
||||
"taskOrder": 4,
|
||||
"description": "Scannen Sie alle Pakete",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "BARCODE",
|
||||
"minBarcodeCount": 1,
|
||||
"maxBarcodeCount": 10
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### TODOLIST Task
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439016",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "TODOLIST",
|
||||
"taskOrder": 5,
|
||||
"description": "Checkliste vor Auslieferung",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "TODOLIST",
|
||||
"todoItems": [
|
||||
"Verpackung auf Beschädigungen prüfen",
|
||||
"Anzahl der Pakete kontrollieren",
|
||||
"Lieferschein beiliegen"
|
||||
]
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### COMMENT Task
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439017",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "COMMENT",
|
||||
"taskOrder": 6,
|
||||
"description": "Anmerkungen zur Lieferung",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "COMMENT",
|
||||
"commentText": null,
|
||||
"required": false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Vollständiges Beispiel: Job mit Tasks
|
||||
|
||||
```json
|
||||
{
|
||||
"job": {
|
||||
"id": "507f1f77bcf86cd799439011",
|
||||
"jobNumber": "JOB-2024-001",
|
||||
"status": "IN_PROGRESS",
|
||||
"createdAt": "2024-01-15T10:30:00",
|
||||
"updatedAt": "2024-01-15T14:45:00",
|
||||
"createdBy": "admin@example.com",
|
||||
"isDraft": false,
|
||||
"customerSelection": "Kunde01",
|
||||
"pickupCompany": "Absender GmbH",
|
||||
"pickupSalutation": "Herr",
|
||||
"pickupFirstName": "Max",
|
||||
"pickupLastName": "Mustermann",
|
||||
"pickupPhone": "+49 123 456789",
|
||||
"pickupStreet": "Musterstraße",
|
||||
"pickupHouseNumber": "42",
|
||||
"pickupAddressAddition": "2. OG",
|
||||
"pickupZip": "12345",
|
||||
"pickupCity": "Musterstadt",
|
||||
"deliveryCompany": "Empfänger AG",
|
||||
"deliverySalutation": "Frau",
|
||||
"deliveryFirstName": "Erika",
|
||||
"deliveryLastName": "Musterfrau",
|
||||
"deliveryPhone": "+49 987 654321",
|
||||
"deliveryStreet": "Beispielweg",
|
||||
"deliveryHouseNumber": "7",
|
||||
"deliveryAddressAddition": null,
|
||||
"deliveryZip": "54321",
|
||||
"deliveryCity": "Beispielstadt",
|
||||
"digitalProcessing": true,
|
||||
"appUser": "fahrer01",
|
||||
"pickupDate": "2024-01-20",
|
||||
"deliveryDate": "2024-01-21",
|
||||
"remark": "Bitte zwischen 9-12 Uhr liefern",
|
||||
"price": 150.00
|
||||
},
|
||||
"tasks": [
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439012",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "CONFIRMATION",
|
||||
"taskOrder": 1,
|
||||
"description": "Ware übernommen bestätigen",
|
||||
"completed": true,
|
||||
"completedAt": "2024-01-20T09:15:00",
|
||||
"completedBy": "fahrer01",
|
||||
"taskSpecificData": {
|
||||
"taskType": "CONFIRMATION",
|
||||
"buttonText": "Ware übernommen"
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439013",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "PHOTO",
|
||||
"taskOrder": 2,
|
||||
"description": "Fotos bei Abholung",
|
||||
"completed": true,
|
||||
"completedAt": "2024-01-20T09:20:00",
|
||||
"completedBy": "fahrer01",
|
||||
"taskSpecificData": {
|
||||
"taskType": "PHOTO",
|
||||
"minPhotoCount": 2,
|
||||
"maxPhotoCount": 5
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439014",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "BARCODE",
|
||||
"taskOrder": 3,
|
||||
"description": "Pakete scannen",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "BARCODE",
|
||||
"minBarcodeCount": 1,
|
||||
"maxBarcodeCount": 3
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "507f1f77bcf86cd799439015",
|
||||
"jobId": "507f1f77bcf86cd799439011",
|
||||
"taskType": "SIGNATURE",
|
||||
"taskOrder": 4,
|
||||
"description": "Unterschrift Empfänger",
|
||||
"completed": false,
|
||||
"completedAt": null,
|
||||
"completedBy": null,
|
||||
"taskSpecificData": {
|
||||
"taskType": "SIGNATURE"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Feldtypen Referenz
|
||||
|
||||
| Feld | Typ | Nullable | Beschreibung |
|
||||
|------|-----|----------|--------------|
|
||||
| `id` | String (ObjectId) | Nein | MongoDB ObjectId als String |
|
||||
| `jobNumber` | String | Nein | Eindeutige Auftragsnummer |
|
||||
| `status` | String (Enum) | Nein | Siehe Job Status Werte |
|
||||
| `createdAt` | ISO DateTime | Nein | Erstellungszeitpunkt |
|
||||
| `updatedAt` | ISO DateTime | Ja | Letzter Änderungszeitpunkt |
|
||||
| `createdBy` | String | Nein | Benutzername des Erstellers |
|
||||
| `isDraft` | Boolean | Nein | Entwurf-Kennzeichen |
|
||||
| `pickupDate` | ISO Date | Ja | Abholdatum |
|
||||
| `deliveryDate` | ISO Date | Ja | Lieferdatum |
|
||||
| `price` | Decimal | Ja | Preis in EUR (netto) |
|
||||
| `taskOrder` | Integer | Nein | Reihenfolge der Tasks (0-basiert) |
|
||||
| `completed` | Boolean | Nein | Task abgeschlossen |
|
||||
| `completedAt` | ISO DateTime | Ja | Abschlusszeitpunkt |
|
||||
| `completedBy` | String | Ja | App-User der den Task abgeschlossen hat |
|
||||
Reference in New Issue
Block a user