Files
votianlt/docs/JOB_JSON.md
2026-01-26 09:39:41 +01:00

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