8.5 KiB
8.5 KiB
Job JSON Struktur
Diese Dokumentation beschreibt die JSON-Struktur eines Jobs mit allen zugehörigen Tasks.
Job Objekt
{
"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
{
"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
{
"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
{
"id": "507f1f77bcf86cd799439013",
"jobId": "507f1f77bcf86cd799439011",
"taskType": "SIGNATURE",
"taskOrder": 2,
"description": "Unterschrift des Empfängers",
"completed": false,
"completedAt": null,
"completedBy": null,
"taskSpecificData": {
"taskType": "SIGNATURE"
}
}
PHOTO Task
{
"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
{
"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
{
"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
{
"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
{
"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 |